Skip to main content
Glama

BlackVeil DNS & Email Security Scanner

scan_domain

Read-onlyIdempotent

Run a full DNS and email security audit for a single domain. Aggregates every scan-included check in parallel (SPF, DKIM, DMARC, DNSSEC, TLS/SSL, MTA-STS, CAA, BIMI, subdomain takeover, and more) and returns an overall security score, NIST-aligned letter grade (6-band A+/A/B/C/D/F), maturity stage, and prioritized findings. Use for a comprehensive single-domain audit, to get a domain's overall security grade, or to assess email security maturity. Version stamps: 'scoringModelVersion' is the scoring POLICY semver (changes only when weights/thresholds/severities change, so it advances slowly) and is INDEPENDENT of — never comparable to — 'dnsChecksPackageVersion', the @blackveil/dns-checks npm engine-package version, which moves every release; a lower model version is expected, not a version gap. When citing a score, record 'scoringConfigHash' — it identifies the exact scoring configuration that produced the result.

Input Schema

NameRequiredDescriptionDefault
domainYesDomain to check (e.g., example.com)
formatNoOutput verbosity. Auto-detected if omitted.
profileNoScoring profile. Default "auto" detects.
force_refreshNoBypass cache and run a fresh scan. Useful after DNS changes.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  2. Changed1 schema field changed
    • changedInput schema / properties / profile / enum
      Previous value: -[
      -  "auto",
      -  "mail_enabled",
      -  "enterprise_mail",
      -  "non_mail",
      -  "web_only",
      -  "minimal"
      -]New value: +[
      +  "auto",
      +  "mail_enabled",
      +  "enterprise_mail",
      +  "non_mail",
      +  "web_only",
      +  "minimal",
      +  "authoritative_dns_infra"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / profile / enum
      Previous value: -[
      -  "auto",
      -  "mail_enabled",
      -  "enterprise_mail",
      -  "non_mail",
      -  "web_only",
      -  "minimal",
      -  "authoritative_dns_infra"
      -]New value: +[
      +  "auto",
      +  "mail_enabled",
      +  "enterprise_mail",
      +  "non_mail",
      +  "web_only",
      +  "minimal"
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / profile / enum
      Previous value: -[
      -  "auto",
      -  "mail_enabled",
      -  "enterprise_mail",
      -  "non_mail",
      -  "web_only",
      -  "minimal"
      -]New value: +[
      +  "auto",
      +  "mail_enabled",
      +  "enterprise_mail",
      +  "non_mail",
      +  "web_only",
      +  "minimal",
      +  "authoritative_dns_infra"
      +]
  5. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely non-obvious context: checks run in parallel, output includes score/letter grade/maturity stage/prioritized findings, and the subtle scoringModelVersion vs dnsChecksPackageVersion distinction with an explicit warning that a lower model version is expected, not a gap. The scoringConfigHash citation guidance is real operational value beyond structured data.

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?

Purpose, aggregation scope, use cases, then versioning notes — well front-loaded. The version-stamp passage runs long and reads more like output documentation than tool-selection guidance, but every sentence contributes factual content rather than 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?

With no output schema, the description correctly enumerates return value shape (score, 6-band grade, maturity stage, prioritized findings) and the version/hash fields an agent needs to cite results. The remaining gap is sibling routing — it never says to prefer the individual check_* tools or batch_scan when those fit better.

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 carries domain, format, profile, and force_refresh semantics, including enums. The description adds only indirectly, via 'scan-included check' hinting that profile determines check inclusion; it gives no format/profile guidance of its own, so the 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?

Opens with a specific verb and resource ('Run a full DNS and email security audit for a single domain') and immediately scopes it against the many check_* siblings by naming the checks it aggregates. An agent can tell this is the umbrella single-domain audit rather than a granular check or a batch 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?

Explicitly states three good use cases: comprehensive single-domain audit, overall security grade, and email-security maturity assessment. It does not, however, explicitly route the agent away from alternatives (e.g., use check_spf for one check, batch_scan for many domains), leaving the boundary with siblings implied.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.