Skip to main content
Glama

BlackVeil DNS & Email Security Scanner

Server Details

DNS and email security scanner with 81 MCP tools for SPF, DMARC, DNSSEC, SSL, and brand audits.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 69 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
MadaBurns/bv-mcp
GitHub Stars
9
Server Listing
Blackveil DNS

TDQS

B3.4/5.0

Scored across 81 tools

Disambiguation3/5

Many tools are described with explicit distinctions from neighbors, which helps, but the 81-tool surface still contains substantial overlap: sync vs async scan variants, multiple brand-audit entry points, many granular check_* tools that overlap with scan_domain, and several lifecycle status/report tools. An agent can often distinguish them from descriptions, but selection is still error-prone at this scale.

Naming Consistency3/5

Most names use snake_case and many follow recognizable prefixes like check_, scan_, batch_, brand_audit_, discover_, and osint_, but the overall verb_noun convention is not consistent. There are noun-only or vague names such as generate, cymru_asn, explain_finding, rdap_lookup, and sge_quickscan, plus mixed patterns like brand_audit_batch_start versus batch_scan_start.

Tool Count1/5

81 tools is an extreme mismatch for a DNS and email security scanner surface, even a broad one. The set includes many near-duplicate lifecycle variants and highly granular checks that could be consolidated or exposed through parameters.

Completeness4/5

The surface covers a very broad domain: core DNS/email checks, full-domain scans, batch and async operations, brand discovery/audits, OSINT, compliance mapping, benchmarking, and remediation generation. There are minor gaps and some tools explicitly report partial or unverified results, but agents have substantial coverage and workarounds.

Available Tools

81 tools
analyze_driftA
Read-onlyIdempotent
Inspect

Measure whether a domain's DNS security posture improved or regressed by comparing the current state against a prior scan snapshot. Returns a drift classification (improving/stable/regressing/mixed), score delta, and lists of improvements and regressions. Use to answer "did our security score improve or regress since last time?" — distinct from compare_baseline which checks compliance against a fixed policy (not improvement over time).

NameRequiredDescriptionDefault
domainYesDomain to analyze drift for
formatNoOutput verbosity. Auto-detected if omitted.
baselineYesPrior scan reference for drift-over-time analysis: a previous ScanScore JSON STRING, or the literal "cached" to reuse the last cached scan (the default when omitted). NOT a policy/requirements object — for compliance enforcement against required controls, use compare_baseline instead.cached
force_refreshNoBypass cache and run a fresh check. Useful after DNS changes.

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already establish that this is a read-only, non-destructive, idempotent, open-world operation. The description adds useful behavioral context by explaining that the tool compares current state to a prior scan and returns a drift classification, score delta, and lists of improvements/regressions. It does not add much about caching behavior or operational limits, but the schema covers those parameter-level details.

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?

The description is front-loaded with the core action and comparison model, then states the return shape, then gives the intended question and sibling distinction. Every sentence serves a clear purpose, and there is no repetitive or wasted text.

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?

For a tool with no output schema, the description helpfully names the returned drift classification, score delta, and improvement/regression lists. Combined with rich annotations and fully documented parameters, it gives an agent enough context to select and invoke the tool correctly.

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 baseline 3 applies. The description reinforces that comparison is against a prior scan snapshot and not a policy object, but that distinction is already present in the baseline parameter schema description. It adds little additional meaning for domain, format, or force_refresh beyond what the schema already provides.

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: measuring whether a domain's DNS security posture improved or regressed by comparing current state to a prior snapshot. It names the drift classification outputs and explicitly distinguishes this from compare_baseline's fixed-policy compliance check, so an agent can tell the siblings apart.

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?

It gives a direct use case: answering whether the security score improved or regressed since last time. It also explicitly names the nearby alternative, compare_baseline, and states that compare_baseline checks compliance against a fixed policy rather than improvement over time.

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

assess_spoofabilityA
Read-onlyIdempotent
Inspect

Compute a composite email spoofability risk score (0–100, higher = more spoofable) by combining SPF trust surface, DMARC enforcement, and DKIM coverage. Returns a risk level (minimal→critical), per-control sub-scores, and plain-language summary of how easy it would be to spoof email from the domain. Use when asked how easy it is to spoof email from a domain, or for a composite email spoofing risk score.

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

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive. The description adds valuable behavioral context: the 0–100 score range with higher meaning more spoofable, the risk-level scale, per-control sub-scores, and a plain-language summary—information not present in annotations or an output schema.

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?

Two tightly written sentences with no wasted words. The core computation and score direction are front-loaded, followed by return details and usage guidance.

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's composite nature, no output schema, and full schema coverage for inputs, the description covers what it computes, what it returns (risk level, sub-scores, summary), and when to use it. It stops short of detailing the scoring methodology, but an agent has enough to invoke it correctly.

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 fully documents all three parameters (domain, format, force_refresh). The description adds no additional parameter meaning beyond what the schema already provides, which is the baseline case.

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

Purpose4/5

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

States a specific verb ('Compute') and resource ('composite email spoofability risk score') with the exact inputs combined (SPF, DMARC, DKIM). This implicitly distinguishes it from individual check_* siblings, but does not name them explicitly.

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?

Provides a clear usage context: 'Use when asked how easy it is to spoof email from a domain, or for a composite email spoofing risk score.' It does not state when to prefer individual checks or name alternatives, leaving some inference to the agent.

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

batch_scanA
Read-onlyIdempotent
Inspect

Bulk-scan up to 10 domains in parallel. Runs a full security audit on each domain in the list and returns score, NIST-aligned letter grade (6-band A+/A/B/C/D/F), and finding counts per domain. Use when you want to audit multiple domains at once or do a bulk scan of several domains simultaneously — distinct from compare_domains which does a side-by-side analysis of 2–5 domains. Version stamps (hoisted once per batch): 'scoringModelVersion' is the scoring POLICY semver and is INDEPENDENT of 'dnsChecksPackageVersion', the @blackveil/dns-checks npm engine-package version — the model version legitimately lags and the two must not be compared. Record 'scoringConfigHash' when citing scores.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
domainsYesDomains to scan (max 10 per request)
force_refreshNoBypass cache and run fresh scans.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, so the safety profile is covered; the description adds genuinely new behavior — parallel fan-out capped at 10, per-domain result structure, once-per-batch version stamp hoisting, and a warning not to compare scoringModelVersion with dnsChecksPackageVersion. Gaps remain: no mention of partial-failure behavior when one domain errors, timing/rate limits for a 10-domain batch, or cache lifetime despite force_refresh.

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-loads the action, scope, and return shape in the first sentence, then the sibling discriminator. The version-stamp passage is longer than needed for invocation guidance — it is citation policy rather than calling information — but it is still useful context and not padding.

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 carries the return-value burden and does so by naming score, the A+/A/B/C/D/F bands, finding counts, and the hoisted version fields. It is thin on failure semantics for a multi-domain batch (what is returned if 3 of 10 domains fail) and on what 'full' vs 'compact' format does to the response.

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 baseline is 3; format, domains, and force_refresh are all documented in the schema. The description adds only 'in parallel' and re-states the 10-domain cap that maxItems already encodes, and it never discusses force_refresh's cost or the format enum's effect on payload size.

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

Purpose4/5

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

States a specific verb and resource ('bulk-scan up to 10 domains in parallel') plus the concrete outputs (score, NIST 6-band letter grade, finding counts per domain). It explicitly separates itself from compare_domains, but says nothing about how it differs from the closely named siblings batch_scan_start / batch_scan_status / batch_scan_findings or from single-domain scan_domain, leaving real ambiguity in a crowded family.

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?

Gives an explicit use condition ('audit multiple domains at once') and names one alternative with the discriminator ('compare_domains does side-by-side analysis of 2–5 domains'). It omits the other obvious decision points: when to prefer scan_domain for a single domain, and when to use the async batch_scan_start/batch_scan_status pair instead of this synchronous call.

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

batch_scan_findingsA
Read-onlyIdempotent
Inspect

Fetch owner-scoped findings for a completed asynchronous batch scan.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
job_idYesJob ID returned by batch_scan_start.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is fully covered. The description adds useful context with 'owner-scoped' (access is limited to the caller's own jobs) and 'completed' (results only exist after the job finishes), but says nothing about result volume, pagination, or error behavior.

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?

One sentence, no filler, with the scope and the prerequisite front-loaded before the resource. Every word carries weight.

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?

For a two-parameter read-only retrieval tool with a fully documented schema and rich annotations, this is nearly sufficient. The only real gap is the absence of any hint about result size, pagination, or whether an incomplete job returns partial data.

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 coverage is 100%, so both job_id and format are already documented, including the pattern and the cross-reference to batch_scan_start. The description adds no syntax, format, or default detail 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.

Purpose4/5

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

States a concrete verb ('Fetch') and resource ('findings') plus a scope qualifier ('owner-scoped') and a precondition ('completed asynchronous batch scan'). That implicitly separates it from batch_scan_start and batch_scan_status, 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.

Usage Guidelines3/5

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

The phrase 'for a completed asynchronous batch scan' signals the correct call point, and the job_id schema description points back to batch_scan_start. But there is no explicit guidance on what to do when status is still running, and no mention of an alternative to prefer.

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

batch_scan_startA
Idempotent
Inspect

Start a durable asynchronous scan of 1–10 domains. Returns a stable job ID; replaying the same idempotency key with the same principal, normalized inputs, and scoring versions returns the same job.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
domainsYesDomains to scan (max 10 per request)
force_refreshNoBypass cache and run fresh scans.
idempotency_keyYesCaller-stable replay key for this exact batch request.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, so the description earns credit for going further by spelling out the exact replay conditions — same principal, normalized inputs, and scoring versions return the same job — which is real operational context an agent cannot get from the boolean hint. What is missing is job lifecycle information: TTL, whether results expire, and how to retrieve 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?

Two sentences, zero filler, with the core action and its return value front-loaded before the idempotency nuance. Nothing repeats the schema or annotations verbatim.

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

Completeness3/5

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

For an asynchronous batch-start tool with no output schema, the description should close the loop by pointing at the status/findings siblings and describing job lifetime. It covers initiation and idempotency well but leaves the agent without an explicit retrieval path, which is the most consequential remaining gap.

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 coverage is 100%, so the schema already documents all four parameters including idempotency_key and force_refresh, which puts the baseline at 3. The description reinforces the 1–10 domain bound and adds genuine replay semantics for the idempotency key, but leaves format and force_refresh entirely to the schema, so it does not rise above baseline decisively.

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

Purpose4/5

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

States a specific verb and resource ('Start a durable asynchronous scan of 1–10 domains') plus the immediate result ('Returns a stable job ID'), so an agent knows exactly what the tool initiates. It stops short of naming the companion poller (batch_scan_status) or distinguishing itself from the non-start sibling batch_scan, so differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

The words 'durable asynchronous' and 'job ID' imply the follow-up pattern (start, then poll a status tool), but no explicit when-to-use, when-not-to-use, or alternative is named. An agent in a toolset containing batch_scan, batch_scan_status, and batch_scan_findings must guess the intended workflow.

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

batch_scan_statusB
Read-onlyIdempotent
Inspect

Read the owner-scoped status of an asynchronous batch scan.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
job_idYesJob ID returned by batch_scan_start.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered structurally. The description adds one genuinely useful behavioral fact not in the annotations: results are 'owner-scoped', so jobs belonging to other callers will not be visible. It still says nothing about whether the response reports progress, terminal states, or expiry, and with no output schema that gap is left open.

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?

One sentence with zero waste, and the key qualifier ('asynchronous') and the access constraint ('owner-scoped') are front-loaded. It is efficient but borders on under-specified for a polling tool.

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

Completeness3/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 is the only place to explain what a status read returns (state, progress, completion signal) and it does not. The parameters and safety hints are adequately covered elsewhere, so it is callable, but an agent still cannot predict the response shape or the correct follow-up call.

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 coverage is 100%: job_id carries its pattern and a pointer to batch_scan_start, and format documents its enum plus auto-detection. The description adds no parameter-level detail beyond that, which is acceptable given the schema does the work, but it earns no extra credit.

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

Purpose4/5

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

States a specific verb plus resource ('Read ... status') and scopes it to an asynchronous batch scan, which separates it from batch_scan_start and batch_scan_findings by phase. It never names those siblings explicitly, so the agent must infer the start-poll-read workflow from naming alone.

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

Usage Guidelines3/5

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

'asynchronous batch scan' implies this is the polling step after batch_scan_start, but the description never says when to call it, how often, or what to call once the job finishes (batch_scan_findings). Usage is implied rather than stated.

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

brand_audit_batch_startAInspect

Enqueue an async brand audit across up to 50 target domains with optional standard/deep discovery depth, brand aliases, and caller-supplied candidate domains. Returns { auditId, queuedAt, targetCount, etaSeconds } immediately; poll with brand_audit_status and fetch results with brand_audit_get_report once complete. Each target consumes 1 unit of the monthly BRAND_AUDIT_QUOTAS budget.

NameRequiredDescriptionDefault
viewNoOutput view mode. 'registrar_complement' produces a registrar-complement payload; requires enterprise tier. Default 'standard'.
depthNoDiscovery depth. standard is default; deep expands candidate seeding and enrichment fanout.
formatNoInline output mode. Defaults to "both".
domainsYesDomains to audit (max 50 per batch). Duplicates are merged.
planner_modeNoPlanner mode for staged discovery fanout. observe emits metrics; enforce applies candidate-backed signal caps.
brand_aliasesNoOptional public brand aliases to seed, such as product or legal-entity labels.
discovery_modeNoBrand-discovery pipeline mode. classic = legacy sweep; tiered = tenant/graph/evidence wrappers first (BlackVeil-internal).
min_confidenceNoDrop candidates whose combined confidence falls below this threshold (0-1, default 0.5).
candidate_domainsNoOptional candidate domains supplied by the caller for corroboration.
ownership_verifiedNoCaller attests that the target domains are owned or authorized for scanning. Required when discovery_mode is "tiered" and the caller is not an enterprise/owner/partner principal.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond annotations by disclosing the quota cost (1 unit per target against monthly BRAND_AUDIT_QUOTAS), async behavior, and the immediate return shape. These are non-obvious operational traits that materially affect invocation decisions.

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?

Three tightly packed sentences, front-loaded with the core action, then return/poll guidance, then quota cost. Zero waste.

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?

Strong coverage for a complex 10-param tool: workflow, return shape, and quota are all addressed. However, advanced params like planner_mode, discovery_mode, view, and ownership_verified are left entirely to the schema with no prose context.

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 coverage is 100%, so all 10 parameters are already documented. The description restates a few (domains, depth, aliases, candidate domains) but adds no format or behavioral detail beyond the schema. Baseline 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?

States a specific verb+resource ('Enqueue an async brand audit') with scope (up to 50 target domains), clearly distinguishing it from the single-domain sibling brand_audit_single.

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 describes the async workflow: poll with brand_audit_status and fetch results with brand_audit_get_report once complete. Lacks explicit contrast against brand_audit_single or batch_scan_start, but the follow-up routing is clear.

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

brand_audit_get_reportA
Read-onlyIdempotent
Inspect

Fetch the result JSON for a completed brand audit. With target set, returns the per-target CheckResult; without, returns the audit-level aggregate. Returns notReady when polling an in-flight audit. When a rendered PDF sidecar exists, metadata includes pdfUrl — an authenticated /reports/ download link (same bearer credential as this call). Completed targets whose PDF is still rendering include pdfPending so callers can poll again.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
targetNoSpecific target domain. Omit for audit-level aggregate.
auditIdYesAudit ID returned by brand_audit_batch_start.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds meaningful contextual behavior: notReady for in-flight audits, pdfUrl authentication requirements, and pdfPending when a PDF is still rendering.

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?

The purpose is front-loaded, and each sentence carries distinct operational information about target behavior, readiness, and PDF sidecar handling. There is no redundant restatement of the tool name or title.

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?

Given no output schema, the description still explains the main return modes, readiness state, and PDF-related metadata. Combined with full parameter schema coverage and annotations, an agent has enough information to invoke and interpret this tool correctly.

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 the baseline is 3. The description adds useful semantics for the target parameter by explaining that setting it returns a per-target CheckResult while omitting it returns the aggregate; format behavior is left to the schema.

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: fetch the result JSON for a completed brand audit. It also distinguishes target-level output from audit-level aggregate output, so the tool is clearly differentiated from status/start siblings.

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 makes clear this is for completed audits and explains the target-vs-aggregate branching. It does not explicitly name brand_audit_status as the alternative for polling an in-flight run, so routing guidance is strong but not fully explicit.

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

brand_audit_singleAInspect

Run a full brand audit on a single target with optional standard/deep discovery depth, brand aliases, and caller-supplied candidate domains. Discovers brand-related domains, looks up registrar + registrant for each candidate, and classifies each into consolidated, real registrar-sprawl shadowIt, authorized vendor dependency, indeterminate, or impersonation relationships. Gated tier-wide by monthly BRAND_AUDIT_QUOTAS (free/agent=0, developer=50, partner=200, enterprise=500, owner=unlimited).

NameRequiredDescriptionDefault
viewNoOutput view mode. 'registrar_complement' produces a registrar-complement payload; requires enterprise tier. Default 'standard'.
depthNoDiscovery depth. standard is default; deep expands candidate seeding and enrichment fanout.
domainYesTarget domain to audit (e.g., apple.com).
formatNoInline output mode. Defaults to "both".
planner_modeNoPlanner mode for staged discovery fanout. observe emits metrics; enforce applies candidate-backed signal caps.
brand_aliasesNoOptional public brand aliases to seed, such as product or legal-entity labels.
force_refreshNoBypass cache and run a fresh check. Useful after DNS changes.
discovery_modeNoBrand-discovery pipeline mode. classic = legacy sweep; tiered = tenant/graph/evidence wrappers first (BlackVeil-internal).
min_confidenceNoDrop candidates whose combined confidence falls below this threshold (0-1, default 0.5).
candidate_domainsNoOptional candidate domains supplied by the caller for corroboration.
ownership_verifiedNoCaller attests that the target domain is owned or authorized for scanning. Required when discovery_mode is "tiered" and the caller is not an enterprise/owner/partner principal.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and idempotentHint=false, so the safety burden is partly covered. The description adds genuinely non-obvious behavior beyond that: tier-wide BRAND_AUDIT_QUOTAS with per-tier numbers (free/agent=0 through owner unlimited), registrar+registrant enrichment, and classification into five relationship categories. It stops short of disclosing expected runtime or whether results are cached/persisted for the report siblings.

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?

Two dense sentences, front-loaded with the action and followed by the pipeline and gating facts; little waste. The classification clause is a long noun list that could be tightened, but nothing is gratuitous.

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 11 parameters, no output schema, and an open-world scan, the description covers the important unknowns: what gets discovered, what gets looked up, what categories come back, and the quota gate. The absence of any statement about runtime, result retrieval, or interaction with the brand_audit_get_report/status siblings is the main remaining gap.

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 11 parameters are already documented, and the description merely mirrors a subset (depth, brand aliases, candidate domains). It adds no interpretation for view, planner_mode, discovery_mode, or min_confidence beyond what the schema states, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource ('Run a full brand audit on a single target') and enumerates the concrete outputs: discovery, registrar/registrant lookup, and classification into named relationship categories. It is clearly a single-target counterpart to the batch siblings, though the description itself never names brand_audit_batch_start as the alternative, relying on the tool name for that distinction.

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

Usage Guidelines3/5

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

Usage context is only implied: 'single target' plus per-tier quota gating tells the agent roughly when this is affordable, and depth/ownership_verified hints at prerequisites. There is no explicit when-to-use vs brand_audit_batch_start, brand_audit_get_report, or discover_brand_domains, and no stated exclusions.

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

brand_audit_statusA
Read-onlyIdempotent
Inspect

Poll the status of an enqueued brand audit. Returns audit-level status (queued | running | completed | failed), progress 'N/M', and per-target statuses. Owner-scoped — auditIds owned by other principals surface as notFound.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
auditIdYesAudit ID returned by brand_audit_batch_start.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely non-obvious behavior: results are owner-scoped and auditIds owned by other principals surface as notFound, which an agent cannot infer from the annotations or schema.

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?

Three tight sentences: action first, return shape second, ownership caveat last. No filler, and the most important scoping constraint is not buried.

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?

There is no output schema, but the description fully compensates by naming the status values, progress format, per-target statuses, and the notFound edge case. For a simple two-parameter read tool, nothing needed to call or interpret it 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% and the auditId description already points to brand_audit_batch_start, so the schema carries parameter meaning. The tool description adds no syntax or format detail for auditId or format beyond what is already structured, which is the baseline case.

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 ('Poll the status of an enqueued brand audit') and enumerates exactly what is returned (audit-level status enum, progress 'N/M', per-target statuses), which inherently distinguishes it from brand_audit_get_report and brand_audit_batch_start.

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 phrase 'enqueued brand audit' clearly places it in the lifecycle after brand_audit_batch_start, giving an agent solid context for when to call it. It does not explicitly name alternatives such as brand_audit_get_report for completed audits, so there is no exclusion guidance.

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

check_agent_discoveryA
Read-onlyIdempotent
Inspect

Assess the security posture of IETF BANDAID agent-discovery records (draft-mozleywilliams-dnsop-dnsaid). Detects SVCB agent records under _agents/index.{protocol}._agents, reports whether the discovery zone is DNSSEC-anchored (unsigned = spoofable agent endpoints), evaluates DANE/TLSA binding trust (RFC 6698 §10.1), and checks capability-document integrity (cap / cap-sha256). Read-only; uses Private-Use SVCB param code points pending IANA assignment.

NameRequiredDescriptionDefault
nameNoResolve a single named agent ({name}.{domain}) instead of enumerating the zone.
domainYesDomain to check for published agent-discovery records (e.g., example.com).
formatNoOutput verbosity. Auto-detected if omitted.
protocolNoScope discovery to a single agent protocol index (_index._{protocol}._agents). Omit to sweep the zone.
verify_capNoFetch each declared capability document (cap=) over HTTPS via safeFetch and verify it against the cap-sha256 integrity pin. Default false (declaration/existence check only).
force_refreshNoBypass cache and run a fresh check. Useful after DNS changes.

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, open-world, idempotent, and non-destructive. The description adds valuable context: DNSSEC anchoring implications (unsigned = spoofable), DANE/TLSA evaluation, capability-document integrity checks, and the use of Private-Use SVCB param code points. Missing are error behaviors or performance characteristics, but overall strong.

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 front-loaded with the main purpose and packs necessary details without excessive verbosity. It is dense but appropriate for the complexity, though some phrases could be slightly tightened.

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?

Given the tool's complexity, the description covers the purpose, what it detects, security implications, and read-only nature. The output schema exists, so return values need not be explained. Together with full parameter descriptions, an agent has enough to invoke it correctly.

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 parameters are fully documented in the schema. The description does not add any parameter-level meaning beyond what the schema provides, so it meets 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 ('Assess'), resource ('IETF BANDAID agent-discovery records'), and names the draft and record patterns. Clearly distinguishes from sibling tools like check_svcb_https or check_dane by focusing on agent-discovery rather than general SVCB/HTTPS or TLSA.

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?

Provides clear context about what the tool checks and implies when to use it (for agent-discovery security posture). However, it does not explicitly name alternatives or state when not to use it, which is a minor gap given the unique resource.

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

check_authoritative_dns_infraA
Read-onlyIdempotent
Inspect

Measure authoritative DNS infrastructure posture for a hostname over direct DNS-over-TCP/53 from a single vantage: TCP/53 reachability, the authoritative AA flag, recursion exposure, SOA serial consistency across nameservers, DNSKEY/RRSIG presence (not validation), IPv4/IPv6 answer parity, and unsupported-query handling — plus, for authenticated callers, a zone-transfer refusal test (first response only, no zone data retrieved) and CHAOS version.bind/id.server disclosure. Reports UDP/53 reachability, amplification, EDNS large-response/truncation, DNS cookies/RRL, BGP origin, RPKI, route-leak signals, anycast diversity, vantage latency, and RIR/RDAP as inconclusive — none of those are measured. Uses BV_INFRA_PROBE when available.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavioral details: direct DNS-over-TCP/53 from a single vantage, that DNSKEY/RRSIG checks are presence-only and not validation, that zone-transfer testing is authenticated-only and retrieves no zone data, and that many adjacent infrastructure signals are not measured. It also notes the BV_INFRA_PROBE dependency.

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 front-loaded with the core purpose and remains information-dense, but it is a long run-on sentence with many semicolon-separated checks and non-checks. The negative list is useful for avoiding misinterpretation, though the density makes it less scannable.

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?

Given the tool's complexity, the annotations, the fully described schema, and the existing output schema, the description provides enough context about what is measured, what is not measured, authentication-dependent behavior, and the probe dependency. Return values and parameter details are appropriately left to the structured fields.

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 domain, format, and force_refresh parameters are already documented in the input schema. The description does not add parameter-specific meaning beyond referring to a hostname and authenticated callers, so the baseline 3 is appropriate.

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

Purpose4/5

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

The description opens with a specific verb and resource: measure authoritative DNS infrastructure posture for a hostname over direct DNS-over-TCP/53 from a single vantage. It clearly enumerates the measured checks and distinguishes DNSKEY/RRSIG presence from validation, but it does not explicitly name sibling tools or route the agent between them.

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

Usage Guidelines3/5

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

Usage is implied by the detailed scope: authoritative DNS posture over TCP/53, with an explicit list of adjacent metrics that are not measured and therefore inconclusive. However, there is no direct when-to-use statement or named alternative such as check_dnssec, check_ns, or check_zone_hygiene.

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

check_bimiA
Read-onlyIdempotent
Inspect

Check the BIMI brand-logo record at default._bimi.. Validates the logo URL (l=) and the presence of mark-certificate authority evidence (a=) — the a= tag is a bare URL, so the certificate type (VMC or CMC) is not determined — and verifies the DMARC enforcement prerequisite (p=quarantine/reject) that mail clients require before displaying a BIMI logo. Returns findings for a missing/malformed record or unmet prerequisites. Use to assess brand-indicator readiness in inboxes. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description earns credit for the extra disclosures it does make: the a= tag is a bare URL so VMC vs CMC cannot be determined, and the DMARC p=quarantine/reject precondition that mail clients enforce. It does not discuss caching behavior or the force_refresh default, which remains with the schema.

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 scope and the specific checks are front-loaded in the first sentence, followed by the important caveat about a= and the DMARC prerequisite. Every sentence carries information, though the density makes it slightly heavy for a single-check tool.

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 an output schema present, the description need not describe return values, and it correctly characterizes outputs qualitatively (findings for missing/malformed records or unmet prerequisites). Given annotations and full schema coverage, the only remaining gap is cache/refresh semantics, which the schema already handles.

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% and all three parameters are documented there, including the format enum and the force_refresh cache-bypass note. The description adds no parameter-level 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.

Purpose5/5

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

Names a specific verb and resource (check the BIMI record at default._bimi.<domain>) and enumerates exactly the three things validated: the l= logo URL, the a= evidence tag, and the DMARC enforcement prerequisite. An agent can distinguish it from check_dmarc, check_dkim and check_spf without opening any schema.

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?

'Use to assess brand-indicator readiness in inboxes. Part of the scan_domain audit' gives clear context and a routing relationship to scan_domain. It stops short of explicit exclusions (e.g., when to prefer check_dmarc for the underlying enforcement check), so it is not a full when/when-not rubric.

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

check_caaA
Read-onlyIdempotent
Inspect

Look up CAA records for a domain. Shows which Certificate Authorities are authorized to issue certificates. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already provide strong behavioral guarantees (read-only, idempotent, non-destructive). The description only adds that it is part of a specific audit sequence, providing workflow context but not deeply revealing any hidden behavioral traits.

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?

The description is highly efficient, using only two sentences. The first sentence defines the action, and the second provides context, making it easy to digest.

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?

It is highly complete for an initiation step, telling the agent precisely what data is retrieved (authorized CAs) and the scope of the operation (a specific domain). While perfect, it relies slightly on the output schema to explain the actual return structure.

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?

Since the schema description coverage is 100%, the baseline for parameter semantics is 3. The description provides no additional semantic meaning to the domain, format, or refresh parameters beyond what is already detailed in the schema.

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 clearly defines the tool's purpose: looking up CAA records to show which Certificate Authorities are authorized. It is specific to the resource (CAA records) and the goal (issuance authorization).

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

Usage Guidelines3/5

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

The tool states it is part of the 'scan_domain audit,' which provides general context. However, it does not offer specific guidance on when to choose `check_caa` over other DNS checks like `check_dnssec` or `check_dane`.

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

check_daneA
Read-onlyIdempotent
Inspect

Check DANE/TLSA certificate pinning for SMTP at port 25. Resolves the domain's MX hosts and looks up TLSA records at _25._tcp., validating their syntax, usage/selector/matching-type fields and DNSSEC backing on the MX host's zone. The record is reported as present but UNVERIFIED: there is no certificate probe for port 25/SMTP, so the pinned data is never compared against the certificate the mail server actually serves (the comparable capture-and-compare pipeline exists only for check_dane_https at port 443, and is itself currently kill-switched there — see that tool's description). Use when asked if SMTP mail servers publish DANE/TLSA pinning; this does not confirm the pin matches the live certificate. For HTTPS DANE at port 443, use check_dane_https instead. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, so the description focuses on what annotations cannot convey: the record is reported 'present but UNVERIFIED' because there is no port-25 certificate probe, and the comparable pipeline in check_dane_https is itself kill-switched. This prevents an agent from over-claiming a passing pin.

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-loads the verb, target and port, then the mechanism, then the caveat and the alternative. Dense but every clause carries signal, though the nested aside about check_dane_https's kill-switch is slightly bulky for this tool's own definition.

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?

An output schema exists, so return values need not be explained. For a read-only DNS-analysis tool, the description covers scope, validation depth, the key limitation, and routing to the sibling — nothing needed to call or interpret it 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 domain, format and force_refresh are already fully documented. The description adds essentially no parameter-level detail beyond implying the domain is the target; 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?

States a specific verb and resource with protocol and port: 'Check DANE/TLSA certificate pinning for SMTP at port 25', then spells out the mechanism (MX resolution, _25._tcp.<mx-host> TLSA lookup, field/DNSSEC validation). It is immediately distinguishable from check_dane_https, which is named explicitly.

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 when asked if SMTP mail servers publish DANE/TLSA pinning'), an explicit exclusion ('this does not confirm the pin matches the live certificate'), and the alternative ('For HTTPS DANE at port 443, use check_dane_https instead'). Also notes its role in the scan_domain audit.

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

check_dane_httpsA
Read-onlyIdempotent
Inspect

Verify DANE certificate pinning for HTTPS connections. Looks up TLSA records at _443._tcp.{domain} (port 443) and validates their syntax, usage/selector/matching-type fields and DNSSEC backing. The record is reported as present but UNVERIFIED in every deployment: comparison against the certificate the host actually serves is currently withdrawn because the operator probe vantage cannot observe the origin certificate (finding metadata notAssessedReason probe_vantage_intercepted when the probe is bound), so a stale pin is NOT detected here. Distinct from check_dane which covers SMTP at port 25. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.4/5.0
Behavior5/5

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

Goes far beyond the annotations (which only declare readOnly/idempotent/openWorld safety) by disclosing a critical behavioral caveat: results are always reported UNVERIFIED, certificate comparison is withdrawn, and a stale pin will NOT be detected. It even names the finding metadata (notAssessedReason probe_vantage_intercepted), which an agent needs to interpret output correctly.

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?

Dense but front-loaded, with the purpose stated first and the critical unverified caveat immediately after. Every sentence carries necessary information (scope, caveat, sibling distinction, audit membership), though the run-on caveat sentence is slightly heavy.

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 an output schema present and full annotation coverage, the description completes the picture by explaining that returned records are present-but-unverified and why. An agent has everything needed to call the tool and correctly interpret the 'not detected' limitation.

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 every parameter (domain, format, force_refresh) is already documented in the schema. The description adds no per-parameter syntax or format details beyond implying the domain feeds the TLSA lookup, so the baseline 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?

States a specific verb and resource ('Verify DANE certificate pinning for HTTPS connections') and even names the exact lookup target (_443._tcp.{domain}). It explicitly distinguishes itself from the nearest sibling, check_dane (SMTP/port 25), 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 Guidelines4/5

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

Provides clear usage context: HTTPS DANE checking, the port-25 SMTP sibling it is NOT, and its place in the scan_domain audit. It lacks explicit 'when not to use' guidance relative to other TLS-ish siblings like check_svcb_https or check_ssl, but the primary routing decision is well covered.

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

check_dblA
Read-onlyIdempotent
Inspect

Check domain reputation against DNS-based Domain Block Lists (Spamhaus DBL, URIBL, SURBL). Returns listing status with decoded return codes.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already establish that this is a read-only, idempotent, open-world, non-destructive operation. The description adds useful context by naming the blocklist sources and mentioning decoded return codes, but does not discuss caching behavior, rate limits, or other operational details beyond what annotations and schema provide.

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?

The description is two tight sentences that front-load the core action and list the sources checked. Every sentence contributes directly to understanding the tool's purpose.

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 an output schema present and strong annotation coverage, the description provides enough context to call the tool correctly: what it checks, which blocklists it uses, and what kind of result it returns. It could be more complete by distinguishing itself from nearby reputation-checking siblings, but no critical gap remains for invocation.

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 parameters are already documented in the input schema. The description adds no parameter-level semantics beyond what the schema provides; its mention of decoded return codes relates to output rather than input parameters.

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

Purpose4/5

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

The description states a specific verb and resource: checking domain reputation against DNS-based Domain Block Lists, and names Spamhaus DBL, URIBL, and SURBL. This distinguishes it from broader reputation checks, though it does not explicitly contrast with sibling tools such as check_rbl or check_mx_reputation.

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

Usage Guidelines3/5

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

Usage is implied by 'Check domain reputation against DNS-based Domain Block Lists', which signals when this tool is relevant. However, it provides no explicit when-not-to-use guidance or routing to alternatives like check_rbl for IP-based lists.

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

check_dkimA
Read-onlyIdempotent
Inspect

Look up DKIM records for a domain. Probes common selectors, validates the signing algorithm used for outgoing email (RSA-1024/2048, Ed25519), and reports key strength. Use to verify that outbound email signatures are cryptographically sound. Part of the scan_domain audit.

NameRequiredDescriptionDefault
domainYesDomain to check (e.g., example.com)
formatNoOutput verbosity. Auto-detected if omitted.
selectorNoDKIM selector. Omit to probe common ones.
force_refreshNoBypass cache and run a fresh check. Useful after DNS changes.

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, non-destructive behavior. The description adds useful context beyond annotations by explaining that it probes common selectors, validates signing algorithms, and reports key strength.

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?

Three sentences, front-loaded with purpose and followed by behavior and usage context. No wasted text.

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?

Complete for an agent: annotations cover safety profile, the schema fully documents parameters, an output schema exists, and the description explains what the tool checks and why to use it.

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 coverage is 100%, so the schema already documents all four parameters including selector omission behavior. The description adds little parameter-level detail beyond what the schema provides, such as format or force_refresh semantics.

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: look up DKIM records for a domain. The description also distinguishes the tool from broader email-auth siblings by focusing on DKIM signatures, selector probing, signing algorithms, and key strength.

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?

Gives a clear use case: verify that outbound email signatures are cryptographically sound, and notes it is part of the scan_domain audit. It does not explicitly say when not to use it or name alternative sibling tools.

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

check_dmarcA
Read-onlyIdempotent
Inspect

Look up and validate the DMARC record for a domain. Shows the enforcement level (none/quarantine/reject), alignment mode (strict/relaxed), and aggregate/forensic reporting destinations. Use to determine a domain's DMARC enforcement level, whether it sends aggregate reports, or if it is protected against email impersonation — distinct from check_shadow_domains (which checks TLD variants) and assess_spoofability (composite score). Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety is covered structurally. The description adds the useful facts that it inspects live DNS and is a component of the scan_domain audit, giving the agent context about scope and relation to a larger workflow. It stops short of noting caching behavior, though the force_refresh param implies it.

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 core action and scoped alternatives in three tight sentences. Slight redundancy between 'Shows the enforcement level (none/quarantine/reject)' and 'Use to determine a domain's DMARC enforcement level' repeats content without adding a new decision cue.

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?

Output schema exists, so return-value explanation is unnecessary, and annotations cover the safety profile. The description supplies purpose, output semantics at a high level, sibling disambiguation, and audit lineage, which is everything an agent needs to call it correctly.

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% with three well-documented params, including the format enum and force_refresh purpose, so the schema carries the load. The description adds no parameter-level guidance such as when 'compact' vs 'full' is appropriate or when a refresh is warranted, so the baseline 3 is correct.

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+resource ('Look up and validate the DMARC record for a domain') and enumerates what is surfaced: enforcement level, alignment mode, and reporting destinations. It explicitly distinguishes itself from check_shadow_domains and assess_spoofability by name, so an agent can route correctly without opening schemas.

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?

Provides an explicit 'Use to determine...' clause with three concrete decision contexts (enforcement level, aggregate reporting, impersonation protection) and names the two nearest siblings it should not be confused with. Both when-to-use and the alternatives are stated, not inferred.

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

check_dnskey_strengthA
Read-onlyIdempotent
Inspect

Audit the cryptographic strength of DNSKEY signing algorithms used for DNSSEC. Reports which algorithm is used for DNSSEC signing keys (RSA/SHA-1, RSA/SHA-256, ECDSA P-256, Ed25519, etc.), flags deprecated algorithms (RSA/SHA-1, DSA), independent of whether the DNSSEC chain validates. Use when asked what algorithm is used for DNSSEC signing keys, or if deprecated DNSKEY algorithms are in use. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds real value by disclosing which algorithms are reported, that deprecated ones (RSA/SHA-1, DSA) are flagged, and that results are independent of chain validation success.

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 core action and reporting scope, then usage and placement. The 'Use when asked what algorithm is used for DNSSEC signing keys' clause mildly restates the opening sentence, a small redundancy.

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 annotations covering the safety profile and an output schema covering return values, the description supplies what the agent needs: scope, what is reported, and what is flagged. Nothing critical is missing; only minor alternative routing detail is implied rather than stated.

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% and all three parameters (domain, format, force_refresh) are documented in the schema, so the baseline is 3. The description adds no extra meaning about parameter behavior beyond the schema.

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 ('Audit') and resource ('cryptographic strength of DNSKEY signing algorithms'), and explicitly scopes the tool as assessing algorithm choice 'independent of whether the DNSSEC chain validates', which separates it from check_dnssec and check_dnssec_chain.

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?

Gives explicit trigger conditions ('Use when asked what algorithm is used for DNSSEC signing keys, or if deprecated DNSKEY algorithms are in use') and positions it within the scan_domain audit. It implies but does not directly name the chain-validation siblings as the alternative to use for validation results.

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

check_dnssecA
Read-onlyIdempotent
Inspect

Check DNSSEC status for a domain. Verifies whether DNS is tamper-proof and protected against cache poisoning and DNS spoofing attacks by validating DNSKEY and DS records. Reports whether DNSSEC is enabled and validating. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior, so the safety profile is covered. The description still adds real value beyond that: it names the records inspected (DNSKEY, DS) and the threat model (cache poisoning, spoofing), and describes the verdict returned (enabled and validating). It stops short of discussing latency or cache behavior for force_refresh, but the schema covers that.

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?

Three short sentences, front-loaded with the core action and its scope. There is mild redundancy between "Check DNSSEC status" and "Reports whether DNSSEC is enabled and validating," but the threat-model sentence earns its place by explaining why the check matters.

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?

An output schema exists so return values need no explanation, annotations cover the safety contract, and the schema fully documents the three parameters. The description supplies the validation method and outcome semantics; the only notable omission is how this differs from check_dnssec_chain, which matters given the dense check_* sibling set.

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 (domain, format, force_refresh) are already documented in the schema, including the auto-detection behavior of format and the cache-bypass semantics of force_refresh. The description adds nothing parameter-specific, which is the expected baseline when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ("Check DNSSEC status for a domain") and explains the mechanism it validates (DNSKEY and DS records) plus the outcome reported (enabled and validating). However, it never distinguishes itself from the very close sibling check_dnssec_chain, so an agent must infer the boundary between a basic status check and a chain validation.

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

Usage Guidelines3/5

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

"Part of the scan_domain audit" gives some routing context, implying it can be run standalone or as part of a broader scan. But there is no explicit when-to-use guidance and no mention of alternatives such as check_dnssec_chain, check_dnskey_strength, or check_dane, which overlap heavily with this tool.

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

check_dnssec_chainA
Read-onlyIdempotent
Inspect

Walk the full DNSSEC chain of trust from the DNS root down to the target domain, tracing DS/DNSKEY records and algorithm usage at each zone level. Use when asked to trace the chain of trust from the DNS root, or to see the full DNSSEC delegation path step by step.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, open-world, non-destructive, so the safety profile is fully covered. The description adds the per-zone walking behavior (DS/DNSKEY, algorithm usage at each level), which is useful context, but it says nothing about latency, number of network round trips, or cache behavior beyond what the force_refresh parameter implies.

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?

Two sentences, front-loaded with the core action and followed by usage guidance, with zero 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 an output schema present and annotations covering the safety profile, the description needn't explain return values. It is complete for invocation purposes, though a hint about whether it performs live network queries (versus cached reads) would round it out given the openWorldHint.

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% and the enum and caching parameter are self-documenting, so the baseline is 3. The description adds no syntax or format detail beyond what the schema already provides.

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

Purpose4/5

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

The description gives a specific verb and scope: walk the full DNSSEC chain of trust from the DNS root to the target, tracing DS/DNSKEY and algorithm usage per zone. This distinguishes it conceptually from the sibling check_dnssec by emphasizing the full root-to-domain delegation path, but it never names that sibling explicitly.

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?

It states when to use it — tracing the chain of trust from the root, or viewing the full delegation path step by step. There is no explicit when-not or named alternative (e.g., check_dnssec for a flat check), which keeps it 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.

check_fast_fluxA
Read-onlyIdempotent
Inspect

Detect fast-flux DNS behavior: performs multiple rounds of A/AAAA queries and checks whether IP addresses are rotating rapidly on each DNS query (a sign of botnet or malicious infrastructure). Compares IP answer sets and TTLs across rounds to identify rapidly rotating infrastructure used to hide malicious activity.

NameRequiredDescriptionDefault
domainYesDomain to check (e.g., example.com)
formatNoOutput verbosity. Auto-detected if omitted.
roundsNoNumber of query rounds (3-5, default 3).
force_refreshNoBypass cache and run a fresh check. Useful after DNS changes.

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the tool issues multiple query rounds rather than a single lookup, and it compares answer sets and TTLs across rounds. It omits cost/latency implications of those repeated queries and how caching interacts with the check.

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?

Two sentences, front-loaded with the verb and resource, with no filler. There is mild redundancy in restating the malicious-infrastructure motivation twice ('botnet or malicious infrastructure' then 'to hide malicious activity').

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?

An output schema exists, so return values need not be explained, and the description covers what is detected and how. What is missing is practical guidance about the repeated-query cost and when the extra rounds matter, which is relevant given the rounds parameter.

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 domain, format, rounds and force_refresh are all already documented, which sets the baseline at 3. The description mentions 'multiple rounds' generically but adds no detail on round count, caching, or output verbosity beyond what the schema states.

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

Purpose4/5

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

The description states a specific verb and resource ('Detect fast-flux DNS behavior') and explains the mechanism: multiple rounds of A/AAAA queries with IP-rotation and TTL comparison. That makes it clearly distinguishable from generic DNS siblings in practice, though it never names a sibling like check_resolver_consistency or check_realtime_threat_feed.

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

Usage Guidelines3/5

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

Usage is only implied by the phrase 'a sign of botnet or malicious infrastructure', which suggests threat investigations, but there is no explicit when-to-use, when-not-to-use, or alternative named among the many sibling check_* tools. An agent must infer the context itself.

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

check_http_securityA
Read-onlyIdempotent
Inspect

Audit a domain's browser-facing HTTP security headers over HTTPS. Inspects Content-Security-Policy (flagging unsafe-inline/unsafe-eval/wildcards), X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, and the cross-origin isolation headers (COOP/COEP/CORP), and detects CDN/WAF interception. Returns per-header findings for missing or weak protections against XSS, clickjacking, and cross-origin attacks. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive) and open-world access, so the bar is low; the description still adds real value by disclosing that it detects CDN/WAF interception (a potential source of misleading results) and that findings are per-header rather than a single verdict. It doesn't mention rate limits or how non-HTTPS domains are handled.

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?

Two sentences, zero filler, with the core action front-loaded and the header list and return shape following in priority order. Every clause (headers named, attack classes, CDN/WAF detection) contributes useful information.

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?

An output schema exists, so return-format detail isn't strictly required, yet the description still summarizes the finding shape. Combined with annotation coverage and full schema docs, an agent has what it needs; only edge behavior (non-HTTPS targets, scan duration) is unstated.

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% — domain, format enum, and force_refresh are all documented in-schema, including the cache-bypass rationale. The description adds no parameter-level 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.

Purpose5/5

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

States a specific verb and resource ('Audit a domain's browser-facing HTTP security headers over HTTPS') and then enumerates exactly which headers are inspected. This clearly separates it from siblings like check_ssl (certificates) or check_spf (email auth) without the agent needing to open any schema.

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 closing line 'Part of the scan_domain audit' tells the agent this is a component check that can be run standalone or as part of the broader scan. It gives clear context but names no exclusions or explicit 'use X instead when...' rule against the many sibling check_* tools.

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

check_llms_txtA
Read-onlyIdempotent
Inspect

Inspect a domain's published /llms.txt and /llms-full.txt for links and install instructions an AI agent could inherit from someone else. Parses and dedupes the links (same-origin vs external), sweeps external link hosts for dangling CNAMEs and deprovisioned-service fingerprints (evidence of a dangling service, not proof it can be claimed), and checks package names in npm/npx/pnpm/yarn/pip/uv/pipx install commands against the npm or PyPI registry (an unregistered name is claimable) and OSV malicious-package (MAL-) advisories. Detection only; not scored. Anything not measured is listed under notAssessed.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4/5.0
Behavior4/5

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

Adds substantial behavior beyond the readOnly/idempotent/openWorld annotations: dedupe of same-origin vs external links, dangling-CNAME sweeps, deprovisioned-service fingerprints, npm/PyPI registry lookups for install commands, and OSV MAL- advisories. It also honestly caveats 'evidence of a dangling service, not proof it can be claimed' and lists unmeasured items under notAssessed. A 5 is withheld only because response/caching details are left to the output schema.

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 core action and resource, then layered with the three detection mechanisms and the detection-only caveat. It is dense but nearly every clause carries new information; only the long parenthetical chains risk slowing the reader.

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?

Given a dedicated output schema, full-coverage parameter docs, and annotations covering the safety profile, the description supplies exactly the remaining needed context: what is inspected, how deep the checks go, and that results are detection-only with unmeasured items surfaced in notAssessed.

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 domain, format, and force_refresh are already fully documented inline. The description adds no syntax or format guidance beyond what the schema provides, 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?

States a specific verb (Inspect) and exact resources (/llms.txt and /llms-full.txt) plus the scope (links and install instructions an agent could inherit). An agent can distinguish this from check_agent_discovery or scan_domain 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.

Usage Guidelines3/5

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

Usage context is implied by the description's framing (supply-chain inheritance risk in llms.txt) and the 'Detection only; not scored' caveat, but there is no explicit when-to-use, when-not-to-use, or named alternative among the many sibling check_* tools.

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

check_lookalikesA
Read-onlyIdempotent
Inspect

Detect active typosquat and lookalike/homoglyph domains that impersonate your brand and could be used in phishing. Identifies character-substitution and visual-confusion domains registered by attackers. Distinct from check_shadow_domains (TLD variants with auth gaps) and discover_brand_domains (legitimate brand portfolio).

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, open-world, idempotent, and non-destructive behavior, so the description does not need to restate safety. It adds useful behavioral context by clarifying that results concern active attacker-registered character-substitution and visual-confusion domains used for impersonation or phishing, though it does not discuss caching or output characteristics.

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?

The description is front-loaded with the core detection purpose, then briefly elaborates the threat type, then ends with useful sibling differentiation. Every sentence contributes to selection or understanding with no wasted text.

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?

The tool is a focused check with full schema coverage, rich annotations, and an output schema. The description supplies the purpose, threat model, and sibling distinctions an agent needs before invoking it, so no additional return-value explanation is necessary.

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 in the schema. The description adds no parameter-specific meaning, which is acceptable at the baseline for fully documented schemas but not above it.

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 uses a specific verb and resource: detecting active typosquat, lookalike, and homoglyph domains that impersonate a brand. It also explicitly distinguishes the tool from check_shadow_domains and discover_brand_domains, so an agent can identify its role without inspecting schemas.

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?

It names the relevant sibling alternatives and explains their distinct scopes: check_shadow_domains covers TLD variants with auth gaps, while discover_brand_domains covers legitimate portfolio discovery. Combined with the phishing-impersonation framing, this gives clear routing guidance.

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

check_mta_stsA
Read-onlyIdempotent
Inspect

Check whether a domain enforces SMTP TLS for inbound mail via MTA-STS, protecting against downgrade attacks. Queries _mta-sts. and fetches the policy file, reports mode (enforce/testing/none) and MX coverage. Use to verify whether inbound SMTP is protected against TLS downgrade or MITM — distinct from check_dane which uses TLSA pinning. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description still adds real substance: it discloses the two network operations performed (DNS TXT lookup and policy file fetch) and what is reported (mode enforce/testing/none plus MX coverage). It does not mention caching behavior, though the schema's force_refresh parameter covers that.

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?

Three sentences, each carrying distinct information: what is checked, how it is checked and reported, and when to use it versus the sibling. The core purpose is front-loaded with no filler.

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?

Input schema is fully documented, an output schema exists so return values need no explanation, and annotations cover the safety profile. The description fills the remaining gap by explaining the mechanism and the sibling relationship — nothing an agent needs in order to call this 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% with all three parameters documented, including the enum for format and the cache-bypass semantics of force_refresh. The description adds no parameter-level detail 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.

Purpose5/5

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

States a specific verb and resource: checks whether a domain enforces SMTP TLS via MTA-STS against downgrade attacks. It also names the exact mechanisms queried (_mta-sts.<domain> record plus policy file) and contrasts itself with check_dane, so the agent can distinguish it from dozens of sibling check_* tools without opening a 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 explicit use case ('verify whether inbound SMTP is protected against TLS downgrade or MITM'), names the alternative that covers a different mechanism ('distinct from check_dane which uses TLSA pinning'), and situates it in the larger workflow ('Part of the scan_domain audit').

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

check_mxA
Read-onlyIdempotent
Inspect

Look up MX records for a domain. Identifies which mail servers receive inbound email for the domain and which email hosting provider is used (Google Workspace, Microsoft 365, Proofpoint, etc.). Use when asked which email provider hosts inbound mail for a domain, or to see MX record configuration. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds genuinely new behavioral context — that results identify the hosting provider and that this is a component of the scan_domain audit — which an agent cannot get from the annotations or schema.

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?

Three tight sentences: purpose, enrichment detail, then usage trigger. Front-loaded and no filler.

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?

Output schema exists so return values need no explanation; annotations cover safety; all three parameters are documented in the schema. The description supplies the remaining context an agent needs — what the data means and where it fits in the broader audit.

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 domain, format and force_refresh are all documented at the schema level. The description adds no guidance on when to pick compact vs full output or when a refresh is warranted, so it stays at the baseline.

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 ("Look up MX records for a domain") and immediately elaborates what that reveals: inbound mail servers and hosting provider (Google Workspace, Microsoft 365, Proofpoint). That provider-inference framing separates it from generic DNS siblings like check_ns or check_txt_hygiene.

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?

Gives an explicit triggering question ("Use when asked which email provider hosts inbound mail") plus a secondary use case (inspect MX configuration). It does not exclude the adjacent check_mx_reputation sibling, so an agent facing a mail-hygiene question has to infer which to call first.

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

check_mx_reputationA
Read-onlyIdempotent
Inspect

Check whether the mail server (MX) IP addresses are listed on spam blocklists (Spamhaus, Barracuda, SORBS, and other RBLs). Also verifies reverse DNS for MX hosts. Use when you want to know if your mail server IP is blacklisted, or if your MX is on any blocklist — distinct from check_rbl which checks a specific IP directly.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds real context beyond them: which blocklists are consulted and that reverse DNS for MX hosts is also verified. It stops short of noting latency or rate-limit considerations when querying multiple RBLs for multiple MX hosts, which is the main remaining unknown for a network-heavy check.

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?

Three short sentences, front-loaded with what is checked and the named blocklists, then the additional reverse-DNS behavior, then the usage guidance and sibling distinction. No filler.

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 a full input schema, an output schema, and rich annotations, the description needs only to convey purpose, scope, and tool selection — all of which it does. The mention of which blocklists and the extra reverse-DNS check rounds out expectations for the result.

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 coverage is 100%, so domain, format, and force_refresh are already documented, including the cache-bypass purpose of force_refresh. The description adds nothing about parameter behavior (e.g., what 'compact' returns or when auto-detection picks a format), 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?

States a specific verb and resource: checks whether MX IPs are listed on named blocklists (Spamhaus, Barracuda, SORBS, other RBLs), plus an additional reverse-DNS verification. It explicitly distinguishes itself from check_rbl, so an agent can pick between the two 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 explicit trigger ('when you want to know if your mail server IP is blacklisted, or if your MX is on any blocklist') and names the alternative tool plus the condition that selects it ('distinct from check_rbl which checks a specific IP directly'). Nothing is left to inference.

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

check_nsA
Read-onlyIdempotent
Inspect

Audit a domain’s nameserver delegation and redundancy. Identifies the DNS hosting provider and, when the infrastructure probe is available, directly compares parent and child NS sets, verifies authoritative AA responses, and checks required glue addresses. Use to detect stale registrar delegations, lame nameservers, and intermittent resolution risk. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.4/5.0
Behavior5/5

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

The annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds substantive context beyond that: it explains that it directly compares parent and child NS sets, verifies authoritative AA responses, checks required glue addresses, and conditions these probes on infrastructure availability.

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 front-loaded with a clear purpose statement and then progressively adds usage and behavioral context. All four sentences earn their place, though the final 'Part of the scan_domain audit' sentence is slightly less critical than the rest.

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?

Given the presence of an output schema and annotations that cover the safety profile, the description is complete enough. It explains what the tool audits, when to use it, and what it checks behaviorally, leaving no obvious gap for an agent to call it correctly.

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 fully documents the domain, format, and force_refresh parameters. The description adds no parameter-specific syntax or format details beyond what the schema provides, so the baseline 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 verb and resource: 'Audit a domain’s nameserver delegation and redundancy.' It further distinguishes its scope by mentioning parent/child NS comparison, AA verification, and glue checks, which sets it apart from sibling tools like check_dnssec or check_mx.

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?

It provides clear when-to-use guidance: 'Use to detect stale registrar delegations, lame nameservers, and intermittent resolution risk' and notes it is 'Part of the scan_domain audit.' However, it does not explicitly name alternatives or when-not to use this tool versus related siblings such as check_authoritative_dns_infra.

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

check_nsec_walkabilityA
Read-onlyIdempotent
Inspect

Assess zone walkability risk by analyzing NSEC3PARAM configuration. Detects plain NSEC zones, weak NSEC3 parameters, and opt-out flags.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds useful substance by naming what is inspected (NSEC3PARAM) and what constitutes a finding. It says nothing about caching behavior (which force_refresh implies exists) or query cost, so it stops short of rich disclosure.

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?

Two sentences, zero filler, and the core action is front-loaded ahead of the detection detail. Every clause contributes information an agent could not get from the name alone.

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?

For a single-domain, three-parameter read check with a 100%-covered schema and an output schema, the description covers purpose and detection scope adequately. The only real gap is how this differs from the general DNSSEC siblings, which matters in a catalog this dense.

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% and each of the three parameters is documented in the schema, including the format enum and the cache-bypass semantics of force_refresh. The description adds no parameter 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.

Purpose4/5

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

States a specific verb and resource ('Assess zone walkability risk by analyzing NSEC3PARAM configuration') and enumerates the three conditions detected (plain NSEC, weak NSEC3 params, opt-out), so the agent knows exactly what is being tested. It does not, however, distinguish itself from close siblings like check_dnssec or check_dnssec_chain, leaving overlap to inference.

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

Usage Guidelines3/5

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

Usage is only implied by the purpose: an agent can infer this is the tool for DNSSEC zone-enumeration exposure. There is no explicit when-to-use, when-not-to-use, or pointer to check_dnssec/check_dnssec_chain for the general DNSSEC case.

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

check_ptrA
Read-onlyIdempotent
Inspect

Verify forward-confirmed reverse DNS (PTR/FCrDNS) for mail servers. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds only that this is part of a domain audit; it does not discuss rate limits, caching (the force_refresh semantics live in the schema), or what a failure result means, so it contributes modest value beyond the structured fields.

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?

Two tight sentences with the operation front-loaded and the audit-relationship context second. No filler, no restatement of the title.

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?

An output schema exists, so return values need not be described, and annotations cover the safety profile; the description is adequate for a single-domain read check. It stops short of noting what 'forward-confirmed' requires (forward A lookup matching the PTR name) or how results relate to the scan_domain findings, which would make it fully self-sufficient.

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% with all three parameters documented, including the format enum and the force_refresh cache-bypass rationale. The description adds no parameter-level information, so the baseline 3 applies.

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

Purpose4/5

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

Uses a specific verb ('Verify') with a precise technical resource ('forward-confirmed reverse DNS (PTR/FCrDNS)') and scopes it to mail servers. An agent can distinguish this from check_mx or check_spf, though the description does not explicitly contrast against the many other DNS-record checking siblings.

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

Usage Guidelines3/5

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

'Part of the scan_domain audit' implies this is a sub-check of the broader audit and signals the alternative (run scan_domain for the full sweep), but there is no explicit when-to-use/when-not guidance and no mention of prerequisites such as needing a resolvable MX/PTR record first.

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

check_rblA
Read-onlyIdempotent
Inspect

Check MX server IP reputation against 6 DNS-based Real-time Blocklists (SpamCop, UCEProtect, Mailspike, Barracuda, PSBL). Resolves MX hosts to IPs first.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive, and openWorld, so the safety profile is settled. The description adds real behavioral context beyond that: the tool first resolves MX hosts to IPs, meaning it implicitly depends on MX records existing and on live DNS queries to third-party blocklists. It omits caching behavior (implied only by the force_refresh param) and per-blocklist query limits.

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?

Two tight sentences that front-load the core action and follow with the methodological prerequisite. Minor flaw: it claims '6' blocklists but enumerates only five (SpamCop, UCEProtect, Mailspike, Barracuda, PSBL), an internal inconsistency that wastes a little trust.

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 an output schema present and rich annotations, the description needn't explain return values, and it correctly covers the MX-to-IP resolution step an agent should know about. The remaining gap is behavioral edge cases (what happens with no MX records) and disambiguation from sibling reputation checks.

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 domain, format, and force_refresh are already fully documented with examples and rationale. The description adds no syntax or semantics beyond the schema; baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource (check IP reputation against DNS-based RBLs) and adds important scoping detail that the target is MX server IPs, plus the actual list of blocklists consulted. It is clear what the tool does, but it never distinguishes itself from the near-identical siblings check_mx_reputation, check_dbl, or check_realtime_threat_feed.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not guidance, and no alternative is named despite several closely overlapping siblings (check_mx_reputation, check_dbl, check_realtime_threat_feed). The agent must infer from the name alone which of these overlapping reputation tools to call.

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

check_realtime_threat_feedA
Read-onlyIdempotent
Inspect

Check a domain against BlackVeil real-time threat intelligence (curated intel-gateway feed). Distinct from DNSBL checks. Operator-deploy only; degrades to info when unprovisioned.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: the feed is a curated intel-gateway source and the tool degrades gracefully to an informational result when unprovisioned, which prevents the agent from misreading an empty/low-confidence answer as 'clean'.

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?

Three short clauses, front-loaded with the core action and no filler. The parenthetical '(curated intel-gateway feed)' is the only marginally expendable fragment, but it does distinguish the data source from a generic threat feed.

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?

An output schema exists, so return-value explanation is unnecessary, and the provisioning caveat covers the main failure mode. For a single-domain, three-parameter read tool this is close to complete; only expected latency or coverage limits are unaddressed.

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 (domain, format, force_refresh) are already documented in the schema, including the enum and the cache-bypass rationale. The description adds no parameter-level 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.

Purpose5/5

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

States a specific verb and resource ('Check a domain against BlackVeil real-time threat intelligence') and immediately scopes it against a likely-confused category ('Distinct from DNSBL checks'). An agent can tell this apart from check_rbl, check_dbl, and check_mx_reputation without opening any schema.

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 DNSBL exclusion gives a clear negative condition, and 'Operator-deploy only; degrades to info when unprovisioned' tells the agent when results will be informational rather than a real verdict. It stops short of naming the specific sibling tools (check_rbl/check_dbl) or stating positive triggers such as 'use when investigating suspected malicious reputation'.

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

check_resolver_consistencyB
Read-onlyIdempotent
Inspect

Check DNS consistency across 4 public resolvers.

NameRequiredDescriptionDefault
domainYesDomain to check (e.g., example.com)
formatNoOutput verbosity. Auto-detected if omitted.
record_typeNoRecord type. Omit for A/AAAA/MX/TXT/NS.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds one useful behavioral fact — that it queries four public resolvers, implying external network calls and that differences reflect propagation or GeoDNS — but does not explain what constitutes 'inconsistency' or what is reported per resolver.

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?

A single front-loaded sentence with no filler, appropriate for a read-only diagnostic with one required parameter. It is efficient but arguably too terse given the ambiguity around what a consistency result actually means.

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

Completeness3/5

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

The tool is simple (3 params, one required, no output schema, no nesting) and annotations cover safety, so the description is close to adequate. However, it omits which resolvers are used and what the verdict looks like, which matters for interpreting a cross-resolver comparison in a large DNS-tooling suite.

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% and all three parameters carry enum values or constraints, so the schema already does the heavy lifting. The description adds only the implicit point that the resolver set is fixed (four public resolvers) rather than parameterized, and says nothing about how record_type or format shape the comparison.

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

Purpose4/5

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

States a specific verb ('Check') and resource ('DNS consistency') with a concrete scope ('across 4 public resolvers'), which is more precise than the bare name. It implicitly distinguishes itself from per-record siblings like check_ns or check_mx by focusing on cross-resolver agreement, but it never names those siblings to make the distinction explicit.

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

Usage Guidelines2/5

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 versus check_ns, check_authoritative_dns_infra, check_root_server_set, or compare_domains, all of which are adjacent concerns. The agent must infer that this is a propagation/consistency diagnostic rather than an authoritative-configuration check.

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

check_root_server_setA
Read-onlyIdempotent
Inspect

Query a rotating sample of 3 root servers per call and compare the priming NS set, glue, SOA serials, and cross-root consistency against the embedded official root hints. Uses BV_INFRA_PROBE when available; without it, returns the embedded hints as reference data only.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds context the annotations cannot: each call samples only 3 rotating root servers, so consecutive calls may return different observations, and the env-var dependency changes whether results are real probes or static reference data. Minor tension with idempotentHint, but that hint concerns side effects, not identical output, so it is not a contradiction.

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?

Two dense sentences with no filler; the sampling behavior and the comparison targets lead, and the degraded-mode caveat follows. Every clause carries information an agent needs.

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 an output schema present, return values need no explanation, and annotations cover the safety profile. The description still supplies the two non-obvious facts (3-server rotating sampling, probe-optional degradation), leaving only minor gaps like expected latency or frequency limits.

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 coverage is 100% and the single optional format enum is documented with auto-detection behavior in the schema itself. The description adds nothing about the parameter, 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?

States a specific verb and resource (query root servers) plus the exact dimensions compared: priming NS set, glue, SOA serials, and cross-root consistency. No sibling tool targets the root server set, so an agent can route here unambiguously from the name and description alone.

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?

Gives clear operational context: it works best with BV_INFRA_PROBE available, and without it returns embedded hints as reference data only, which tells the agent when the output is actionable vs. informational. It stops short of naming alternatives such as check_resolver_consistency or saying when not to use this tool.

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

check_shadow_domainsA
Read-onlyIdempotent
Inspect

Find alternate TLD variants of a domain (e.g. example.net, example.co) that have weak or missing email authentication and could be used to spoof email. Use when asked about TLD variants with email auth gaps — distinct from check_lookalikes which detects typosquat/homoglyph impersonation domains.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: it reports on email authentication posture of the variants and frames results as spoofing risk. It does not mention whether TLD coverage is a fixed curated list or exhaustive, nor any per-call cost, which keeps it from a 5.

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?

Two sentences, zero filler: the first defines the operation and its risk framing, the second handles routing. The key distinguishing information is front-loaded before the sibling comparison.

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 an output schema present and all params documented, the description need not explain return values, and annotations carry the safety profile. What remains unstated is scope breadth (how many TLDs are evaluated, whether the root domain itself is included), which slightly affects interpretation of results.

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 domain, format and force_refresh are all documented in the schema itself. The description adds only the example domain, which duplicates the schema's own example. Baseline 3 is correct.

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: 'Find alternate TLD variants of a domain', with a concrete example (example.net, example.co) and the security rationale (weak/missing email auth). It explicitly marks the boundary with check_lookalikes, so an agent can distinguish the two TLD-adjacent tools 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?

'Use when asked about TLD variants with email auth gaps' gives an explicit trigger condition, and the trailing clause names the alternative tool (check_lookalikes) with the reason it is not a substitute (typosquat/homoglyph). This is a clean when-to-use plus negative routing guidance.

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

check_spfA
Read-onlyIdempotent
Inspect

Look up and validate the SPF record for a domain. Lists all IP addresses and third-party senders authorised to send email on behalf of the domain, flags syntax errors, and shows the trust surface (which mail servers are whitelisted). Use when you need to know who is permitted to send email as a domain. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond them by disclosing what the output contains: whitelisted senders, flagged syntax errors, and the exposed trust surface. It stops short of noting rate limits or how stale/cached results are signalled.

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?

Three sentences, front-loaded with the action and its outputs, with the usage cue and audit context at the end. There is mild redundancy between "Lists all IP addresses and third-party senders authorised to send email" and "Use when you need to know who is permitted to send email", but nothing is wasted at length.

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?

An output schema exists, so return-shape explanation is not required, and annotations carry the safety profile; the description covers scope, outputs and a usage cue. It is only slightly thin on how this tool relates to resolve_spf_chain and scan_domain, which matters given the dense sibling set.

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% and every parameter (domain, format enum, force_refresh) is documented in the schema itself. The description adds no parameter-level meaning, such as what 'full' vs 'compact' actually changes or when to set force_refresh beyond the schema note, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource ("look up and validate the SPF record for a domain") and enumerates the outputs (IPs, third-party senders, syntax errors, trust surface). It is clearly distinguishable from DMARC/DKIM siblings by resource, though the near-neighbour sibling resolve_spf_chain is never mentioned, so full sibling differentiation is incomplete.

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

Usage Guidelines3/5

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

"Use when you need to know who is permitted to send email as a domain" gives an implied trigger condition, and "Part of the scan_domain audit" hints at orchestration context. But there are no exclusions and no routing to alternatives such as resolve_spf_chain (for recursive/flattened lookups) or scan_domain (for a full audit), leaving the agent to infer.

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

check_srvA
Read-onlyIdempotent
Inspect

Map a domain's DNS-visible service footprint by probing 19 common SRV record prefixes (email, calendar, messaging, directory, web) in parallel. Returns discovered services and flags insecure service advertisements — e.g. plaintext IMAP/POP3/LDAP without an encrypted variant. A domain with no matches among the probed prefixes is not proof the domain has no services at all. Use when asked to map DNS-visible services or flag insecure service advertisements.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, open-world behavior. The description adds value beyond them: parallel probing of 19 prefixes, the returned artifacts (discovered services + insecure-advertisement flags), and a genuine caveat that absence of matches is not proof of no services. It omits freshness/caching semantics that would fully close the loop.

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?

Three well-scoped sentences: behavior, return/caveat, and usage trigger, all front-loaded and earning their place. Slightly dense but no 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 an output schema present, full schema coverage, and annotations covering safety, the definition gives an agent enough to call correctly, plus an important false-negative caveat. Minor gaps like caching behavior don't undermine correct invocation.

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 each of the three parameters is already documented in the schema. The description adds no syntax or format detail for domain/format/force_refresh, so the baseline 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?

States a specific verb ('Map') and resource ('DNS-visible service footprint'), plus the exact mechanism (probing 19 common SRV record prefixes across email, calendar, messaging, directory, web). This clearly differentiates it from DNS siblings like check_svcb_https and check_mx, which share the SRV/record space.

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?

Ends with an explicit usage trigger ('Use when asked to map DNS-visible services or flag insecure service advertisements'). However, it never names or routes to an alternative sibling when that condition isn't met, so no exclusions are given.

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

check_sslA
Read-onlyIdempotent
Inspect

Check the HTTPS/TLS posture of a domain: HTTPS reachability, HSTS policy, and HTTP-to-HTTPS redirect. Also returns certificate metadata (issuer, expiry date, days remaining, SAN count) read from public Certificate Transparency logs — this describes the most recently LOGGED certificate, which may differ from the one currently served. Origin TLS protocol support and cipher suites are not assessed; legacy-TLS detection is withdrawn because the probe cannot observe the origin handshake. Use to verify HTTPS/HSTS configuration and certificate issuer/expiry. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.3/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: certificate metadata comes from public Certificate Transparency logs and may describe a different certificate than the one currently served. It also discloses that origin TLS protocol support and cipher suites are not assessed and that legacy-TLS detection has been withdrawn because the probe cannot observe the origin handshake. These are exactly the kind of limitations an agent needs to know.

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?

The description is four sentences with zero waste and front-loads the core scope before explaining the CT-log caveat and use case. Every sentence earns its place, including the important limitation about not assessing origin TLS and the note that it is part of the scan_domain audit.

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?

Given that an output schema exists, the description does not need to explain return values. It fully covers what the tool does, what it does not do, a critical caveat about CT-log certificate metadata, and its relationship to the broader scan_domain audit, leaving no important gap for an agent.

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 in the input schema. The description does not add any parameter-specific meaning beyond what the schema provides, making the baseline score of 3 appropriate.

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

Purpose4/5

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

The description states a specific verb and resource—checking HTTPS/TLS posture of a domain—and enumerates the exact checks: HTTPS reachability, HSTS policy, HTTP-to-HTTPS redirect, and certificate metadata. It also explicitly scopes out origin TLS protocol support and cipher suites, though it does not name a sibling tool such as check_http_security or check_dane_https to differentiate directly.

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?

It gives a clear use case: verify HTTPS/HSTS configuration and certificate issuer/expiry, and notes it is part of the scan_domain audit. It does not explicitly state when to prefer an alternative sibling tool, but the scope exclusions (no origin TLS/cipher assessment) provide implicit guidance about what this tool is not for.

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

check_subdomailingA
Read-onlyIdempotent
Inspect

Detect SubdoMailing risk: analyzes the SPF include chain for dangling or hijackable subdomains that could let an attacker send email as the domain. Use when you want to know if an SPF include chain can be hijacked through a dangling domain, or to detect subdomain mailing risk hidden in SPF includes. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.9/5.0
Behavior3/5

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

The annotations already establish that this is a read-only, idempotent, non-destructive, open-world check. The description adds useful context about what it inspects—the SPF include chain and dangling subdomains—but does not disclose caching behavior, rate limits, or other operational traits beyond what the schema and annotations already convey.

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 front-loaded and adequately short, but the second sentence largely restates the same idea as the first: checking whether an SPF include chain can be hijacked through a dangling domain. That redundancy keeps it from a 5.

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?

For a focused read-only check with an output schema and rich annotations, the description supplies enough purpose and usage context. It lacks explicit sibling-tool routing and operational detail, but nothing essential for correct invocation 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 coverage is 100%, so all three parameters are already documented in the schema. The description adds no parameter-specific guidance beyond the domain being the target of the SPF include analysis, making the baseline 3 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 names a specific verb and target: it detects SubdoMailing risk by analyzing the SPF include chain for dangling or hijackable subdomains. It clearly distinguishes this from general SPF or subdomain-takeover checks by focusing on the email-sending abuse path.

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?

It gives clear usage context: use it when you want to know if an SPF include chain can be hijacked through a dangling domain, or to detect mailing risk hidden in SPF includes. It does not, however, name specific alternative tools such as resolve_spf_chain or check_subdomain_takeover, so the routing guidance is strong but not complete.

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

check_subdomain_takeoverA
Read-onlyIdempotent
Inspect

Sweep subdomains for dangling CNAMEs pointing to deprovisioned cloud services that could be claimed by an attacker (subdomain takeover vulnerabilities). Detects 16 provider families (AWS S3/CloudFront, Azure Front Door/CDN/Blob/App Service, GCP Cloud Storage, Heroku, GitHub Pages, Vercel, Firebase, Shopify, etc.). Use when asked if subdomains are pointing to deprovisioned cloud services. Pair with discover_subdomains to widen the candidate set — note that returns a CT sample, not a full inventory.

NameRequiredDescriptionDefault
domainYesDomain to check (e.g., example.com).
formatNoOutput verbosity. Auto-detected if omitted.
subdomainsNoOptional explicit subdomain list (full FQDNs or short labels). When provided (deduped, capped at 1000), this list is swept instead of the 15-name built-in. Source from Certificate-Transparency enumeration or brand-audit discovery.
force_refreshNoBypass cache and run a fresh check. Useful after DNS changes.

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the description need not restate safety. It adds real value by disclosing the default built-in 15-name sweep versus a user-supplied list, and the provider coverage scope. It stops short of stating rate-limit or timing expectations for a live DNS sweep.

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 purpose and vulnerability class before the provider list and usage notes. Dense but every clause carries information; the provider enumeration is slightly long but useful for scope-setting.

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?

Output schema exists so return values needn't be explained, and annotations cover the safety profile. The description supplies the default-behavior context and the sibling caveat, leaving only minor gaps like runtime expectations for a live external sweep.

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 coverage is 100%, so the baseline is 3. The description's note about subdomain sourcing echoes what the schema already documents for the subdomains parameter; it adds only marginal semantics (CT enumeration / brand-audit sourcing) beyond structured fields.

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 (sweep/check) and resource (subdomains), and precisely names the vulnerability class (dangling CNAMEs to deprovisioned cloud services claimable by an attacker). It enumerates 16 provider families, which distinguishes it sharply from siblings like check_subdomailing or discover_subdomains.

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 triggering condition ('Use when asked if subdomains are pointing to deprovisioned cloud services') and an explicit pairing instruction with discover_subdomains, including the crucial caveat that discover_subdomains returns a CT sample rather than a full inventory. That is exactly the routing information an agent needs.

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

check_svcb_httpsB
Read-onlyIdempotent
Inspect

Validate HTTPS/SVCB records (RFC 9460) for modern transport capability advertisement. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds no behavioral context beyond that - nothing about caching behavior (only the parameter schema mentions cache bypass), rate limits, or what happens when no SVCB record exists. With a rich annotation set the bar is lower, but this adds essentially nothing.

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?

Two compact sentences with the resource and standard front-loaded; nothing is padded. The second sentence is short but slightly ambiguous - it is unclear whether scan_domain invokes this tool or whether this is an alternative to it.

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

Completeness3/5

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

An output schema exists and all parameters are documented in the schema, so return values and inputs need no further explanation. What remains missing is selection guidance in a crowded namespace of similar check_* tools, which is the one thing the description should have supplied.

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 including the format enum and force_refresh cache semantics are already fully documented in the schema. The description contributes no additional parameter guidance, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb ('Validate') and resource ('HTTPS/SVCB records'), plus the RFC 9460 standard and the capability being tested ('modern transport capability advertisement'). This is clear enough to act on, but it never distinguishes itself from near-siblings like check_dane_https or check_srv, which an agent could easily confuse it with.

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

Usage Guidelines3/5

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

'Part of the scan_domain audit' gives a usage context, implying it is a component of a broader audit rather than a standalone entry point. However, there is no explicit when-to-use vs when-not, no mention of prerequisites (e.g., requires prior NS/DNSSEC checks), and no routing to or away from the overlapping DANE/SRV tools.

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

check_tlsrptA
Read-onlyIdempotent
Inspect

Check whether a domain has SMTP TLS Reporting (TLS-RPT) configured. Queries _smtp._tls. for the v=TLSRPTv1 record and validates its reporting destination (rua= mailto:/https:), flagging a missing record, duplicate records, or an invalid/absent reporting URI. Complements MTA-STS by giving visibility into TLS delivery failures. Part of the scan_domain audit.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds real value beyond that: what is queried, what rua destinations are accepted, and the three failure conditions it flags (missing, duplicate, invalid/absent URI). It does not mention caching behavior explicitly, though force_refresh's presence implies a cache.

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?

Three tightly packed sentences with the core action front-loaded and the validation semantics following. Dense but not padded; the 'Part of the scan_domain audit' clause earns its place by giving context.

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 an output schema present, return-value explanation is unnecessary, and parameters plus annotations are fully documented in structured fields. The description supplies purpose, target record, accepted rua schemes, and failure modes — enough to call correctly. Minor gaps: no explicit caching note and no contrast with the broader batch/audit entry points.

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 coverage is 100%, so all three parameters are documented in the schema, which establishes the baseline of 3. The description adds the domain semantics indirectly by naming the query pattern, but says nothing about the format or force_refresh parameters beyond what the schema already conveys.

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 (check), a specific resource (TLS-RPT for a domain), and even the exact DNS name queried (_smtp._tls.<domain>) plus the record type and validation logic. It explicitly positions itself against a sibling: 'Complements MTA-STS'.

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?

Gives clear context for when the tool is relevant ('Part of the scan_domain audit', complements MTA-STS for TLS delivery failure visibility), but doesn't state explicit exclusions or say 'run X instead when Y'. The invocation context is clear without alternatives being spelled out.

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

check_txt_hygieneB
Read-onlyIdempotent
Inspect

Audit TXT records for stale entries and SaaS exposure.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds genuine analytical context by naming the two detection classes (stale entries, SaaS exposure), but says nothing about cache behavior despite force_refresh existing, nor about output shape.

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?

A single front-loaded sentence with zero filler, though it is arguably too terse for a tool with three parameters and two distinct detection modes.

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

Completeness3/5

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. Still, the description leaves 'stale' and 'SaaS exposure' undefined and gives no invocation context, which is thin for a tool whose main value is interpretation of findings.

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% with all three parameters documented, including the force_refresh cache-bypass rationale and the format enum. The description adds nothing beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (audit) and resource (TXT records) plus the two things it looks for: stale entries and SaaS exposure. That distinguishes it reasonably from sibling record checks like check_spf or check_dmarc, 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.

Usage Guidelines2/5

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, and no pointer to alternatives such as check_spf or check_zone_hygiene. The agent must infer from the one-line purpose when this audit is appropriate.

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

check_zone_hygieneA
Read-onlyIdempotent
Inspect

Audit DNS zone hygiene: identifies sensitive or forgotten subdomains exposed in DNS, stale SOA records, and zone propagation issues. Use to find any sensitive subdomains that should not be publicly visible, or to audit overall DNS zone cleanliness.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the audit scope by naming sensitive subdomains, stale SOA records, and propagation issues, but it does not add deeper operational context such as caching behavior, rate limits, or what the audit cannot detect.

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?

The description is two tightly scoped sentences, with the main purpose front-loaded in 'Audit DNS zone hygiene'. The second sentence directly supports selection by defining the intended use cases, with no wasted text.

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?

The tool is a read-only, three-parameter audit with complete schema descriptions, annotations, and an output schema, so the description does not need to explain return values or parameter formats. It covers the core purpose and use cases well. The remaining gap is the lack of explicit sibling-tool routing, which matters given the large number of adjacent DNS checks.

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 input schema already documents domain, format, and force_refresh. The description does not add parameter-specific meaning beyond what the schema provides. Baseline 3 is appropriate because the schema carries the parameter semantics.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Audit DNS zone hygiene', and enumerates concrete findings such as sensitive subdomains, stale SOA records, and propagation issues. This makes the tool's scope clear, but it does not explicitly distinguish it from closely related siblings like check_shadow_domains, discover_subdomains, or check_subdomain_takeover.

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?

It gives clear usage context: 'Use to find any sensitive subdomains that should not be publicly visible, or to audit overall DNS zone cleanliness.' That tells an agent when this tool is appropriate. However, it does not state when to avoid it or which sibling tool to choose for narrower checks.

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

compare_baselineA
Read-onlyIdempotent
Inspect

Compare a domain's current security configuration against a fixed policy baseline to determine compliance. Use to check whether a domain meets a policy requirement — not for tracking improvement/regression over time (use analyze_drift) and not for comparing multiple domains (use compare_domains).

NameRequiredDescriptionDefault
domainYesDomain to scan and compare.
formatNoOutput verbosity. Auto-detected if omitted.
baselineYesPolicy/requirements baseline OBJECT for compliance enforcement — "does this domain meet these required controls?" (grade/score floors, require_* flags, max_*_findings). NOT a prior scan. For drift-over-time vs a previous ScanScore (or the literal "cached"), use analyze_drift instead.
force_refreshNoBypass cache and run a fresh check. Useful after DNS changes.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive). The description adds semantic context beyond that: it clarifies that the baseline is a fixed policy requirement rather than a prior scan, which prevents a plausible misuse. It doesn't discuss caching or result shape, keeping it below 5.

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?

Two sentences, front-loaded with the core action, followed by the routing guidance. Zero waste.

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 a 100%-covered schema and no output schema, the definition is nearly complete. It omits any hint of what a compliance comparison returns (pass/fail per control), which is the one area an agent must guess, keeping it at 4.

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 coverage is 100% and the baseline object is richly documented in the schema itself, including the same drift disambiguation. The description adds no parameter-level detail beyond what the schema provides, 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?

States a specific verb (compare) and resource (domain security config vs a fixed policy baseline) with the outcome (determine compliance). It explicitly distinguishes itself from analyze_drift and compare_domains, so an agent can route correctly without opening a 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 explicit when-to-use (check whether a domain meets a policy requirement) and two explicit when-not-to-use cases with the correct alternatives named. Nothing is left to inference.

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

compare_domainsA
Read-onlyIdempotent
Inspect

Side-by-side security comparison of 2–5 domains. Shows relative scores, category gaps, and unique weaknesses for each domain. Use when comparing your security posture against a competitor, or doing a head-to-head comparison between multiple domains.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
domainsYesDomains to compare (2–5 domains)
force_refreshNoBypass cache and run a fresh check. Useful after DNS changes.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=true), so the description's added value is describing what comes back — relative scores, category gaps, unique weaknesses — which matters because there is no output schema. It stops short of noting caching behavior, cost/latency for 5 domains, or what happens when a domain fails to resolve.

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?

Three short sentences with zero filler: what it does, what it returns, when to use it — in that order. Nothing repeats the name or title verbatim.

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?

For a read-only, fully-documented three-parameter tool with no output schema, the description covers purpose, output shape, and trigger conditions well. The remaining gap is sibling routing — nothing tells the agent when compare_baseline is the better call.

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 (domains, format, force_refresh) are already documented in the schema, including the 2–5 bound and the enum. The description only echoes the domain-count constraint and adds nothing about the format enum or refresh trade-off; baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("side-by-side security comparison of 2–5 domains") plus what the output contains (relative scores, category gaps, unique weaknesses). It is clear on its own, but does not differentiate from the close sibling compare_baseline or explain why one would pick this over repeated scan_domain calls.

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 names the usage context: comparing your posture against a competitor, or a head-to-head between multiple domains. That is a clear positive trigger, but there are no exclusions or named alternatives (compare_baseline is the obvious one left unaddressed).

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

cymru_asnA
Read-onlyIdempotent
Inspect

Map domain IPs to Autonomous System Numbers via Team Cymru DNS. Returns ASN, prefix, country, registry, and organization for each IP. Flags high-risk hosting ASNs.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world behavior. The description adds useful behavioral context: it relies on Team Cymru DNS, returns specific ASN attributes, and flags high-risk hosting ASNs. It does not contradict annotations or omit major behavioral concerns.

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?

The description is three short sentences and front-loads the core purpose: mapping domain IPs to ASNs. Every sentence adds useful information about the data source, returned fields, or risk flag with no 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 full parameter schema coverage, existing annotations, and an output schema, the description is largely complete for a read-only ASN lookup. It could add explicit usage guidance, but the core context needed to invoke the tool correctly is present.

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 input schema already documents domain, format, and force_refresh. The description does not add parameter-level meaning beyond what the schema provides, which is acceptable when schema coverage is complete.

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: mapping domain IPs to ASNs via Team Cymru DNS. It also names the returned fields and the high-risk hosting flag, making the tool distinguishable from the many check_* DNS and security siblings.

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

Usage Guidelines3/5

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

The description implies usage through its ASN-mapping purpose and high-risk hosting flag, but it does not explicitly say when to use this tool versus alternatives or when it is not appropriate. The context is clear enough to infer, but no alternatives or exclusions are named.

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

delete_brand_audit_watchA
DestructiveIdempotent
Inspect

Permanently removes a recurring brand-audit watch by watchId. Owner-scoped — a watchId owned by another principal surfaces as notFound. Returns confirmation of deletion.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
watchIdYesWatch ID returned by register_brand_audit_watch.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=true, so the description need not repeat safety hints. It adds meaningful context beyond annotations: permanent removal, owner-scoped access, and notFound behavior for another principal's watchId. It also states that deletion confirmation is returned.

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?

Three short sentences, front-loaded with the action and key constraint. No filler; the ownership and return-value details each add useful information.

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?

For a simple destructive delete with annotations covering safety and idempotency, the description covers the key behavioral traits: permanence, ownership scoping, and confirmation of deletion. It could clarify what the confirmation contains, but no output schema exists and the gap is minor.

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%, and the schema already documents watchId as the ID returned by register_brand_audit_watch and format as output verbosity. The description only restates that deletion is by watchId, so it meets the baseline without adding syntax or format detail beyond the schema.

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 names a specific verb and resource: 'Permanently removes a recurring brand-audit watch by watchId.' It is immediately distinguishable from sibling tools like register_brand_audit_watch and list_brand_audit_watches.

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

Usage Guidelines3/5

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

Usage is implied by the delete semantics and required watchId, but the description does not explicitly say when to use this versus listing watches first or what prerequisites exist. It provides enough context to infer the operation but no explicit when/when-not guidance.

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

discover_brand_domainsA
Read-onlyIdempotent
Inspect

Discover all domains that belong to a brand's portfolio by aggregating certificate, DNS, redirect, and mail-policy signals. Use when asked what domains are part of a brand portfolio, or to find all domains related to a brand. Pass the EXACT seed domain verbatim — do NOT normalize or substitute a canonical domain.

NameRequiredDescriptionDefault
depthNoDiscovery depth. standard is default; deep expands candidate seeding and enrichment fanout.
domainYesThe exact seed domain to expand, scanned verbatim (e.g., example.com). Do NOT normalize, resolve, or substitute a brand's canonical/main domain — pass the literal domain the user named (e.g. pass `clau.de`, not `anthropic.com`). Use `brand_aliases` for related brand labels.
formatNoOutput verbosity. Auto-detected if omitted.
signalsNoSignal modules to invoke. Defaults to all 12 discovery/enrichment signals.
planner_modeNoPlanner mode for staged discovery fanout. observe emits metrics; enforce applies candidate-backed signal caps.
brand_aliasesNoOptional public brand aliases to seed, such as product or legal-entity labels.
force_refreshNoBypass cache and run a fresh check. Useful after DNS changes.
discovery_modeYesDiscovery mode. "classic" (default, BSL-licensed) runs the public signal-sweep pipeline. "tiered" layers Tier 0 (tenant-declared portfolio), Tier 1 (infrastructure-graph), and Tier 2 (declared-evidence) lookups in front of the legacy sweep, falling back to Tier 3 (the existing sweep) only on cache miss / very_stale fingerprint / uncovered caller candidates. Tiered mode requires private BlackVeil service bindings — BSL self-hosts should leave this on "classic".classic
dkim_selectorsNoOptional DKIM selectors to probe. Defaults to a built-in common-selector list.
min_confidenceNoDrop candidates whose combined confidence falls below this threshold (0-1, default 0.5).
candidate_domainsNoOptional candidate domains supplied by the caller for corroboration.
ownership_verifiedNoCaller attests that the seed domain is owned or authorized for scanning. Required when discovery_mode is "tiered" and the caller is not an enterprise/owner/partner principal. Prevents unauthorized mass reconnaissance via deep tier lookups.

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context — that discovery aggregates certificate, DNS, redirect, and mail-policy signals — and highlights the non-obvious 'pass literal domain, not canonical' caveat that otherwise produces wrong results. It lacks any note on cost/latency or caching (force_refresh implies caching) for a potentially expensive sweep.

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?

Three sentences, each earning its place: what it does, when to use it, and the critical seed-passing guardrail. Front-loaded and free of 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 a rich 12-param schema, an output schema, and full annotations, the description covers the core purpose and the highest-risk pitfall adequately. It could add a sentence on the classic-vs-tiered mode tradeoff and the ownership_verified requirement, but those are carried by the schema, so the gap is minor.

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 every one of the 12 params is already documented, including the enum meanings for discovery_mode and planner_mode. The description restates the 'exact seed verbatim, do not normalize' rule, but that is already present in the domain param description, so it adds little beyond the schema (baseline 3).

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

Purpose4/5

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

Specific verb+resource ("Discover all domains that belong to a brand's portfolio") with the signal-aggregation mechanism spelled out, so the intent is unmistakable. It does not explicitly distinguish itself from close siblings such as discover_subdomains or the _start/_status/_findings variants of the same name, so an agent must infer the sync-vs-async split from the name alone.

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?

Gives clear trigger context ("Use when asked what domains are part of a brand portfolio, or to find all domains related to a brand") and a critical guardrail about passing the seed verbatim. It stops short of naming alternatives (e.g., discover_subdomains for a single domain's subdomains) or stating when not to use it.

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

discover_brand_domains_findingsA
Read-onlyIdempotent
Inspect

Fetch the ranked candidate domains (the discovery CheckResult) for an async run started with discover_brand_domains_start. Returns notReady while the discovery is still in-flight; the discovery result once complete. Owner-scoped.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
operationIdYesOperation ID returned by discover_brand_domains_start.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent/non-destructive profile, so the description's added value is the disclosure of the notReady in-flight response versus the completed result, plus the owner-scoped access constraint. That is meaningful behavioral context beyond structured fields, though nothing is said about result retention or pagination of the ranked list.

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?

Three tight sentences, front-loaded with the core action and resource, with no filler. The second sentence is a compact fragment but every clause carries information about return states.

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 takes on the job of characterizing returns and does so by naming both response states (notReady vs. discovery result) and the ownership boundary. It stops short of describing the shape of the ranked domain list or what to do while waiting, which leaves a small gap for a polling-style tool.

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%, with operationId explicitly documented as coming from discover_brand_domains_start and format documenting verbosity/enum values. The description merely restates the operationId provenance and never mentions the format parameter, so the schema does the heavy lifting and baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Fetch) and resource (ranked candidate domains / discovery CheckResult) and ties it to the async run created by discover_brand_domains_start. It does not explicitly differentiate itself from the sibling discover_brand_domains_status, whose name suggests overlapping run-state semantics, so an agent could hesitate between the two.

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 establishes the prerequisite context clearly: this is called after discover_brand_domains_start, with the operationId that tool returns. What it lacks is an explicit routing statement for the alternative (discover_brand_domains_status) and any guidance on polling cadence or when not to call it.

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

discover_brand_domains_startAInspect

Start an async brand-domain discovery for the EXACT seed domain provided (the async sibling of discover_brand_domains, which can run ~24s and time out interactive clients). Same args as discover_brand_domains. Returns { auditId, queuedAt, etaSeconds } immediately; poll with discover_brand_domains_status and fetch ranked candidates with discover_brand_domains_findings once complete.

NameRequiredDescriptionDefault
depthNoDiscovery depth. standard is default; deep expands candidate seeding and enrichment fanout.
domainYesThe exact seed domain to expand, scanned verbatim (e.g., example.com). Do NOT normalize, resolve, or substitute a brand's canonical/main domain — pass the literal domain the user named (e.g. pass `clau.de`, not `anthropic.com`). Use `brand_aliases` for related brand labels.
formatNoOutput verbosity. Auto-detected if omitted.
signalsNoSignal modules to invoke. Defaults to all 12 discovery/enrichment signals.
planner_modeNoPlanner mode for staged discovery fanout. observe emits metrics; enforce applies candidate-backed signal caps.
brand_aliasesNoOptional public brand aliases to seed, such as product or legal-entity labels.
force_refreshNoBypass cache and run a fresh check. Useful after DNS changes.
discovery_modeYesDiscovery mode. "classic" (default, BSL-licensed) runs the public signal-sweep pipeline. "tiered" layers Tier 0 (tenant-declared portfolio), Tier 1 (infrastructure-graph), and Tier 2 (declared-evidence) lookups in front of the legacy sweep, falling back to Tier 3 (the existing sweep) only on cache miss / very_stale fingerprint / uncovered caller candidates. Tiered mode requires private BlackVeil service bindings — BSL self-hosts should leave this on "classic".classic
dkim_selectorsNoOptional DKIM selectors to probe. Defaults to a built-in common-selector list.
min_confidenceNoDrop candidates whose combined confidence falls below this threshold (0-1, default 0.5).
candidate_domainsNoOptional candidate domains supplied by the caller for corroboration.
ownership_verifiedNoCaller attests that the seed domain is owned or authorized for scanning. Required when discovery_mode is "tiered" and the caller is not an enterprise/owner/partner principal. Prevents unauthorized mass reconnaissance via deep tier lookups.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds important behavioral context beyond those annotations: the call starts an async job, returns { auditId, queuedAt, etaSeconds } immediately, and requires polling and separate findings retrieval. It does not discuss failure modes, queue limits, or ETA guarantees, so it is strong but not exhaustive.

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?

The description is front-loaded with the core action and async distinction, then efficiently covers return shape and follow-up steps. Every clause contributes either routing guidance, behavioral context, or workflow instructions.

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?

For a complex 12-parameter async tool with no output schema, the description supplies the missing return payload and the required polling/findings workflow. Parameter details are covered by the fully described schema, and annotations cover the safety profile, so an agent has enough to invoke and follow up correctly.

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 12 parameters are already documented in structured form. The description adds only the high-level note that it uses the same args as discover_brand_domains and emphasizes passing the exact seed domain, which largely duplicates schema guidance rather than adding new parameter semantics.

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 verb and resource: start an async brand-domain discovery for the exact seed domain. It explicitly identifies itself as the async sibling of discover_brand_domains, so an agent can distinguish it from the synchronous alternative 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?

It names the alternative discover_brand_domains and gives the selecting condition: that tool can run ~24s and time out interactive clients. It also prescribes the follow-up workflow, polling with discover_brand_domains_status and fetching findings with discover_brand_domains_findings once complete.

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

discover_brand_domains_statusA
Read-onlyIdempotent
Inspect

Poll the status of an async brand-domain discovery started with discover_brand_domains_start. Returns status (queued | running | completed | failed) and progress. Owner-scoped — operationIds owned by other principals surface as notFound.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
operationIdYesOperation ID returned by discover_brand_domains_start.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable context beyond annotations: the possible status values (queued | running | completed | failed), progress reporting, and owner-scoping behavior where foreign operationIds surface as notFound.

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?

The description is three tight sentences with no wasted words. It is front-loaded with the core action and then adds only the most relevant behavioral detail (status values, ownership scoping).

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 carries the burden of explaining return values, and it does so at a useful level by naming the status enum and mentioning progress. It could be slightly more complete by noting whether completed operations return a result payload or by pointing to the findings tool, but the essential polling contract is clear.

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 both parameters, including operationId and the format enum, are already documented in the schema. The description reinforces that operationId comes from discover_brand_domains_start but adds no syntax or format details beyond the schema, so the 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 uses a specific verb (poll) and resource (status of an async brand-domain discovery) and explicitly names the sibling tool that starts the operation, making it easy to distinguish from discover_brand_domains_start and discover_brand_domains_findings.

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?

It clearly states the tool is for polling an operation started with discover_brand_domains_start, giving the agent a precise usage context. It does not explicitly mention when not to use it or point to the findings sibling for retrieving results, but the intended workflow is unambiguous.

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

discover_subdomainsA
Read-onlyIdempotent
Inspect

Find subdomains of a domain using Certificate Transparency logs. Reveals shadow IT, forgotten services, and unauthorized certificate issuance. Returns a CT SAMPLE, not an asset inventory: the count is a lower bound, a host with no publicly-logged certificate never appears, and the result carries a per-source coverage record stating what was actually consulted. countBasis says whether totalSubdomains is the tool’s normal reach (sample) or a floor from a run whose recall was cut (then minSubdomainsObserved is present); concreteSubdomains excludes wildcard patterns.

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

TDQS

A3.9/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the core limitation: results are a CT sample, not an inventory; the count is a lower bound; hosts without logged certificates are invisible; a per-source `coverage` record is returned. It also explains `countBasis`/`minSubdomainsObserved` fallback semantics and that `concreteSubdomains` excludes wildcards, which prevents misreading the output.

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-loads purpose and then the most important caveat (sample, not inventory). The closing sentence about `countBasis` is dense and jargon-heavy, though it does earn its place by defining fields an agent would otherwise misread.

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 carries the burden of explaining return semantics and does so for counts, coverage, and wildcards. Minor gaps remain: no mention of pagination/size limits, auth or rate-limit constraints, or cache TTL that `force_refresh` interacts with.

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 documents `domain`, `format`, and `force_refresh` including the cache-bypass rationale. The description adds no parameter-level detail, which meets the baseline but no more.

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

Purpose4/5

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

States a specific verb and resource — find subdomains of a domain via Certificate Transparency logs — plus the security value it delivers (shadow IT, forgotten services). It never names a sibling (e.g. check_subdomain_takeover or discover_brand_domains) to distinguish itself, so the agent must infer the boundary from the name alone.

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

Usage Guidelines3/5

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

Useful context is implied (reconnaissance of a domain's exposed attack surface), but there is no explicit when-to-use, when-not-to-use, or pointer to a neighboring tool. The agent gets no routing guidance for choosing this over check_shadow_domains or discover_brand_domains.

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

explain_findingA
Read-onlyIdempotent
Inspect

Explain a finding with impact and remediation.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
statusYesFinding severity or status.
detailsNoAdditional detail from check result.
checkTypeYesCheck type (e.g., 'SPF', 'DMARC').

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the description's marginal value is the disclosure that the response carries impact and remediation content. It does not say how the explanation is derived, whether it depends on checkType/status alone, or how the details parameter improves quality.

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?

One short sentence, front-loaded with the verb and resource and immediately followed by the payoff content. Nothing redundant or padded.

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

Completeness3/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 should convey more about the returned explanation than 'impact and remediation'; format auto-detection behavior and the relationship to the finding fields it consumes remain unexplained. It is minimally adequate for a 4-param read-only tool but leaves an agent guessing about output shape.

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% and both enums are documented, so the schema carries the parameter burden. The description adds only the implicit mapping that status/checkType/details describe 'a finding', with no added semantics for the format parameter's auto-detection or the effect of supplying details.

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

Purpose4/5

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

Specific verb plus resource ('Explain a finding') with a stated content scope: impact and remediation. An agent can distinguish it from the many check_* siblings, which produce findings, but the description never names those siblings or states that this consumes their output.

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

Usage Guidelines3/5

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

Usage is only implied: the tool assumes a finding already exists (from a check_* or batch_scan result) and is being interpreted. There is no explicit when-to-use/when-not guidance and no routing away from alternatives such as check_* reruns, generate, or validate_fix, which is the closest conceptual sibling.

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

generateA
Read-onlyIdempotent
Inspect

Generate a DNS/email security remediation artifact. Artifact types: spf_record (build a new SPF record), dmarc_record (create a DMARC policy), dkim_config (DKIM key setup), mta_sts_policy (generate an MTA-STS policy file), fix_plan (prioritized remediation plan for all findings), or rollout_plan (phased DMARC enforcement timeline). Use when asked to generate or create a record or policy.

NameRequiredDescriptionDefault
domainYesDomain (e.g., example.com)
formatNoOutput verbosity. Auto-detected if omitted.
policyNodmarc_record: policy (default "reject").
artifactYesWhich artifact to generate (e.g., "dmarc_record", "fix_plan").
mx_hostsNomta_sts_policy: MX hosts. Omit to detect from DNS.
providerNodkim_config: provider (e.g., "google"). Omit for generic.
timelineNorollout_plan: rollout speed (default: standard).
rua_emailNodmarc_record: report email. Default: dmarc-reports@{domain}.
force_refreshNofix_plan: bypass cache and run a fresh scan.
target_policyNorollout_plan: target DMARC policy (default: reject).
include_providersNospf_record: providers to include (e.g., ["google"]).

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds some behavioral context — fix_plan can bypass cache and run a fresh scan, mta_sts_policy can detect MX hosts from DNS (live network access) — but says nothing about output form, determinism, or cost of a fresh scan.

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?

Two sentences, front-loaded with the core action before the artifact taxonomy; every gloss carries information rather than repeating the enum. The dense inline enumeration is slightly harder to scan than a short bullet list would be, but nothing is wasted.

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

Completeness3/5

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

For an 11-parameter tool with no output schema and no annotations about return values, an agent still cannot predict the shape of the response — a raw DNS record string, a JSON plan, or a multi-file bundle — nor whether generated artifacts are returned for copy-paste or stored server-side. The inputs are well covered, the output side is not.

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 description coverage is 100%, so the baseline is 3, and the description earns above that by explaining what each artifact enum value produces and thereby which parameters become relevant (policy/rua_email for dmarc_record, timeline/target_policy for rollout_plan). It stops short of describing defaults for format auto-detection or how include_providers interacts with SPF record construction.

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 (generate) and resource (DNS/email security remediation artifact) and enumerates the six artifact types with a one-line gloss for each, so an agent knows exactly which output it will get. It is clearly distinguishable from the check_*/analyze_* siblings that inspect rather than produce artifacts.

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?

"Use when asked to generate or create a record or policy" gives a clear trigger condition, and the artifact list implicitly routes the agent among variants (e.g., fix_plan vs. rollout_plan). It does not name alternatives or exclusions, such as deferring to validate_fix to check a generated artifact or to the check_* tools when the user wants an audit rather than an artifact.

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

get_benchmarkA
Read-onlyIdempotent
Inspect

Get industry benchmark data: shows what percentile a domain's security score ranks at within its sector or country cohort, the mean score, and the most common DNS security failures across the industry. Use when asked how a score compares to the industry average, what percentile a score is in, or what the most common security failures are in an industry or sector.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
profileNoProfile to benchmark (default "mail_enabled").

TDQS

A3.9/5.0
Behavior4/5

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 covered. The description adds useful behavioral context about what is surfaced in the response—percentile, mean score, and common DNS failures—which matters because there is no output schema.

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?

Two sentences, front-loaded with the tool purpose and followed by concrete use cases. It does not waste space restating schema or annotations.

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

Completeness3/5

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

The description explains return contents well, which is important because no output schema exists, and annotations cover safety traits. However, it says the tool ranks 'a domain's security score' within a 'sector or country cohort' while the schema exposes only 'format' and 'profile'—no domain, score, sector, or country input—and the description does not reconcile how the benchmark is scoped.

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%, and both optional parameters ('format' and 'profile') are documented in the schema with enum values and defaults, so the baseline is 3. The description does not add parameter semantics and even mentions 'sector or country cohort' without mapping that to any input parameter.

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

Purpose4/5

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

The description opens with a specific verb and resource ('Get industry benchmark data') and enumerates concrete outputs—percentile rank, mean score, and common DNS failures—so it is clearly about industry comparison rather than a domain scan. It stops short of naming or explicitly contrasting a sibling tool, so it does not reach 5.

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 second sentence gives explicit trigger scenarios: comparing a score to the industry average, asking about percentile, or asking about common failures in an industry/sector. It provides no when-not conditions or named alternatives, so 4 rather than 5.

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

get_domain_rankA
Read-onlyIdempotent
Inspect

Rank a domain against its country or global cohort using the GSI benchmark corpus. Accepts a domain score (from scan_domain) and optional country/sector; returns a percentile: "scores better than X% of peers". Owner-gate exempt — public cohort data only.

NameRequiredDescriptionDefault
scoreYesDomain score (0–100) from scan_domain. Used to compute the cohort percentile.
domainYesDomain to rank against its cohort (e.g., example.com)
formatNoOutput verbosity. Auto-detected if omitted.
sectorNoSector label (e.g., "finance"). Forwarded to the cohort endpoint; sector filtering is planned for a future release.
countryNoISO 3166-1 alpha-2 country code to use the country cohort (e.g., "NZ"). Omit for global cohort.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: it is owner-gate exempt because only public cohort data is used, and it returns a percentile framed as 'scores better than X% of peers'.

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?

Two tight sentences with no filler, front-loading the action and corpus before the input/output contract and the access note. Every clause carries information an agent can act on.

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 supplies the essential return semantics (a cohort percentile) and the input provenance, which is enough to call the tool correctly. It would be stronger if it resolved whether sector actually affects the cohort today, since that ambiguity is the main remaining gap.

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 coverage is 100%, so all five parameters are already documented, and the description mostly restates cohort selection that the schema covers. It does add slight meaning by noting the score originates from scan_domain, but it also calls sector a usable optional filter while the schema says sector filtering is only planned for a future release — a mildly misleading mismatch.

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

Purpose4/5

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

States a specific verb and resource ('Rank a domain against its country or global cohort') plus the corpus used (GSI benchmark) and the output shape (a percentile). It does not explicitly contrast itself with the close sibling get_benchmark, so sibling differentiation relies on the reader inferring that this is the per-domain ranking tool.

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 ties usage to a clear workflow by saying the score comes 'from scan_domain', which tells an agent when this tool applies (after a scan). It does not state exclusions or name an alternative such as get_benchmark, so the agent gets context but not routing rules.

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

get_provider_insightsA
Read-onlyIdempotent
Inspect

Get security benchmarks and common configuration issues for a specific email or DNS service-provider cohort (e.g. Google Workspace customers, Microsoft 365 customers). Use when asked how an email service provider compares to competitors on security posture, or to see typical misconfigurations for a named vendor's customers.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
profileNoProfile (default "mail_enabled").
providerYesProvider (e.g., "google workspace").

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds useful context about what kind of data is returned (benchmarks and common configuration issues) but does not cover auth needs, rate limits, or output format. With annotations carrying the behavioral burden, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tightly written sentences with no wasted text. The primary purpose is front-loaded, followed by a focused usage clause, making it easy to scan and act on.

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?

For a read-only cohort-analysis tool with no output schema, the description provides enough context to call it correctly: it identifies the inputs as a named provider cohort and describes the returned content as benchmarks and common configuration issues. It could say more about output structure or cohort matching behavior, but the essential context is present.

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 three parameters are already documented in the input schema. The description adds some meaning to the 'provider' parameter through examples such as 'Google Workspace customers' and 'Microsoft 365 customers', but does not clarify the 'format' or 'profile' parameters beyond the schema. Baseline 3 is correct.

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 verb+resource: 'Get security benchmarks and common configuration issues' for a provider cohort. It names concrete examples like Google Workspace and Microsoft 365 customers, and the scope is clearly cohort-level rather than domain-level, helping distinguish it from generic benchmark or scan tools.

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?

It gives clear usage context: 'Use when asked how an email service provider compares to competitors on security posture, or to see typical misconfigurations for a named vendor's customers.' This tells the agent when to select the tool, though it does not explicitly name an alternative tool or state when not to use it.

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

list_brand_audit_watchesA
Read-onlyIdempotent
Inspect

Returns the caller's recurring brand-audit watches: watchId, domain, interval, webhook presence, last-run time, and active state. Owner-scoped. Read-only.

NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds meaningful context those annotations cannot: results are owner-scoped (the caller only) and only webhook presence is exposed, which implies no secret leakage.

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?

Three short, front-loaded fragments: what is returned, the ownership scope, and the safety profile. No redundancy and the most decision-relevant information comes first.

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?

A simple owner-scoped list operation with full annotation coverage, a complete output schema, and a fully described single optional parameter. Nothing an agent needs to select or invoke it 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?

One optional `format` enum with 100% schema description coverage, so the schema already documents verbosity and its auto-detection default. The description adds nothing about output shape differences between full and compact, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource (returns the caller's recurring brand-audit watches) and enumerates the returned fields, which clearly separates it from register_brand_audit_watch and delete_brand_audit_watch. It stops short of explicitly naming those siblings, so differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

Describes the read context ('Owner-scoped. Read-only.') but never says when to call this versus register/delete or the brand_audit_status tools. Usage is implied by the list semantics rather than spelled out.

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

map_complianceA
Read-onlyIdempotent
Inspect

Map scan findings to compliance frameworks: NIST 800-177, PCI DSS 4.0, SOC 2, CIS Controls. Shows pass/fail/partial status per control.

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

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, open-world, idempotent, non-destructive operation. The description adds useful behavioral context by naming the compliance frameworks and explaining that results show pass/fail/partial status per control, though it does not address caching behavior or whether existing scan data is reused.

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?

The description is two tightly written sentences with zero filler. The core mapping purpose and output status are front-loaded effectively.

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?

For a three-parameter read-only tool with no output schema, the description gives enough detail about frameworks and control statuses to use it correctly. It could be slightly more complete by clarifying whether it uses existing scan findings or triggers a fresh scan, though force_refresh partially covers that.

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 domain, format, and force_refresh are already documented in the schema. The description does not add parameter-level meaning beyond the schema, so the baseline score of 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?

The description states a specific verb and resource: mapping scan findings to named compliance frameworks, and it specifies the output shape as pass/fail/partial per control. This clearly distinguishes it from sibling scan/check tools and from map_supply_chain.

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

Usage Guidelines3/5

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

Usage is implied by 'scan findings' and the compliance-framework context, but there is no explicit guidance on when to use this instead of scan_domain, check_* tools, or other mapping tools. No prerequisites or exclusions are stated.

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

map_supply_chainA
Read-onlyIdempotent
Inspect

Map DNS-visible third-party service dependencies for a domain. Correlates SPF, NS, TXT verifications, SRV services, and CAA records to reveal which third-party vendors can send email as the domain, control DNS, or access integrated services. Use when asked to map third-party or supply-chain dependencies — not for listing who can send email (use check_spf for that).

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

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by explaining which DNS records are correlated and what the mapping reveals, though it does not describe output shape or caching behavior beyond the force_refresh parameter.

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?

The purpose is front-loaded in the first sentence, followed by the relevant record sources and the key usage distinction. The text is compact and every clause contributes either scope or routing guidance.

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?

For a read-only DNS dependency mapping tool with fully documented parameters and rich annotations, the description is largely complete: it names the inputs it correlates and the vendor categories it exposes. It does not describe the output structure, which is a minor gap given that there is no output schema.

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%, and all three parameters are documented directly in the schema, including format and force_refresh. The description adds little parameter-specific meaning beyond saying the tool operates on a domain, so the 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 uses a specific verb and resource: map DNS-visible third-party service dependencies for a domain. It further clarifies by naming the record types correlated and the vendor-access categories revealed, which lets an agent understand the tool's scope 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.

Usage Guidelines5/5

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

It explicitly says to use this when asked to map third-party or supply-chain dependencies, and names a concrete exclusion: not for listing who can send email, use check_spf for that. This gives both a positive trigger and an alternative for the nearest overlapping sibling.

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

osint_investigate_domain_startAInspect

Start an async OSINT investigation for a domain. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns an investigationId immediately — poll with osint_investigation_status and retrieve results with osint_investigation_report.

NameRequiredDescriptionDefault
queryYesInvestigation subject, per tool: a domain, public IP, organisation name, email address or username.

TDQS

A4.5/5.0
Behavior5/5

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

Despite annotations already covering safety hints, the description adds meaningful behavior: the investigation is asynchronous, returns an investigationId immediately, requires operator authorization, and degrades to informational output when unprovisioned. This gives an agent the operational context needed to invoke it correctly.

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?

The description is three focused sentences, front-loading the purpose, then constraints, then the async return and follow-up workflow. There is no redundant or filler content.

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?

For an async start tool with no output schema, the description covers the immediate return value, the polling tool, the reporting tool, authorization requirements, and provisioning behavior. An agent has enough information to call it and continue the workflow.

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?

There is only one parameter and schema coverage is 100%, so the schema already fully documents it. The description confirms the expected subject is a domain, but does not add syntax or format constraints beyond the schema.

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 verb and resource: start an async OSINT investigation for a domain. The domain qualifier distinguishes it from sibling start tools such as osint_investigate_email_start and osint_investigate_username_start.

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?

It clearly states usage constraints: operator-deploy only, targets must be operator-authorized on the recon watchlist, and provisioning degrades to info. It also names the follow-up tools for polling and reporting, but it does not explicitly contrast this with alternative investigation or scanning tools.

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

osint_investigate_email_startAInspect

Start an async OSINT investigation for an email address (breach exposure, account correlation). Owner/enterprise tier only — people-centric OSINT is restricted to prevent misuse. Returns an investigationId immediately — poll with osint_investigation_status and retrieve results with osint_investigation_report.

NameRequiredDescriptionDefault
queryYesInvestigation subject, per tool: a domain, public IP, organisation name, email address or username.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only declare readOnly=false, openWorld=true, idempotent=false, destructive=false. The description adds genuinely new behavioral facts: the call is asynchronous, it returns an investigationId immediately rather than results, and it requires an owner/enterprise tier. It does not mention cost, rate limits, or latency beyond 'async'.

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?

Three compact sentences, each earning its place: purpose, access constraint, and async workflow. The most important fact (async, returns an ID) is stated before the polling instructions.

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?

For a single-parameter async starter with no output schema, it covers what the tool does, who may call it, what it returns (an investigationId), and exactly which tools to call next. Nothing an agent needs to invoke it correctly is missing.

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?

The single 'query' parameter has 100% schema coverage but a generic description ('a domain, public IP, organisation name, email address or username'). The tool description narrows that to an email address for this specific tool, which is real added meaning beyond the schema.

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+resource ('Start an async OSINT investigation for an email address') and scopes the contents (breach exposure, account correlation). It is clearly distinguishable from the sibling osint_investigate_domain_start / _username_start / _infrastructure_start variants.

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 gates usage ('Owner/enterprise tier only — people-centric OSINT is restricted to prevent misuse') and routes the agent through the correct follow-up sequence (osint_investigation_status, then osint_investigation_report). It does not explicitly compare against the other osint_investigate_*_start siblings, but the email scope makes the choice unambiguous.

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

osint_investigate_infrastructure_startAInspect

Start an async deep-infrastructure OSINT investigation for a query (domain, IP, or org). Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns an investigationId immediately — poll with osint_investigation_status.

NameRequiredDescriptionDefault
queryYesInvestigation subject, per tool: a domain, public IP, organisation name, email address or username.

TDQS

A4/5.0
Behavior4/5

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

The annotations already indicate a non-read-only, open-world, non-idempotent but non-destructive operation, and the description adds useful behavioral details beyond them. It discloses that the investigation is async, returns an investigationId immediately, requires operator authorization, and degrades gracefully when unprovisioned. It does not provide rate limits or a fuller explanation of what 'degrades to info' entails, but it does not contradict 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and stays tightly structured across three sentences. It covers purpose, deployment constraints, and the immediate return/polling behavior without wasted wording.

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?

For an async start tool with no output schema, the description is nearly complete: it explains the immediate return value and points to the status tool for polling. The main missing context is a clearer statement of what the deep-infrastructure investigation covers and how it differs from the other investigation starters. The operator-authorization and degradation notes make it usable.

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 query parameter is already documented in detail. The description adds examples by saying the query can be a domain, IP, or org, but this does not materially extend the schema and is slightly narrower than the schema's mention of email address and username. With full schema coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: starting an async deep-infrastructure OSINT investigation for a query. It also scopes acceptable subjects to domain, IP, or org and names the status tool for polling. It is clear, but it does not explicitly distinguish this tool from sibling investigation starters such as osint_investigate_domain_start or osint_investigate_supply_chain_start.

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 gives meaningful context: operator-deploy only, targets must be operator-authorized on the recon watchlist, and the tool degrades to info when unprovisioned. It also tells the agent to poll results with osint_investigation_status. It does not explain when to choose this starter over the other OSINT investigation starters, so explicit exclusions and alternatives are missing.

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

osint_investigate_supply_chain_startAInspect

Start an async supply-chain OSINT investigation for a query. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns an investigationId immediately — poll with osint_investigation_status.

NameRequiredDescriptionDefault
queryYesInvestigation subject, per tool: a domain, public IP, organisation name, email address or username.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that the operation is async, that it returns an investigationId immediately, that it degrades to info level when unprovisioned, and that it requires operator authorization and watchlist membership. These are exactly the operational traits an agent needs and none of them are captured by readOnlyHint/destructiveHint/openWorldHint.

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?

Three tight sentences: purpose first, then eligibility constraints, then the return/polling contract. No filler and the most decision-critical information (operator-only, returns ID immediately) is front-loaded.

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, the description supplies the return value (investigationId) and the exact next tool to call, and it covers the provisioning/authorization edge case. For a single-parameter async-start tool, nothing an agent needs to invoke it 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% and the schema already enumerates the accepted subject types (domain, IP, organisation, email, username) plus length bounds. The description only restates 'for a query' and adds no format or disambiguation guidance beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: 'Start an async supply-chain OSINT investigation for a query.' The 'supply-chain' qualifier is meaningful scope. However, the description never explains how this differs from the many sibling starters (osint_investigate_domain_start, _email_start, _username_start, _infrastructure_start) whose subject types are also listed in the query parameter, leaving the agent to guess which starter to choose.

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?

Gives real preconditions — 'operator-deploy only' and 'targets must be operator-authorized on the recon watchlist' — plus the follow-up step 'poll with osint_investigation_status'. It stops short of stating when to pick this over the type-specific osint_investigate_* siblings, which is the main remaining ambiguity.

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

osint_investigate_username_startAInspect

Start an async OSINT investigation for a username (cross-platform presence, breach correlation). Owner/enterprise tier only — people-centric OSINT is restricted to prevent misuse. Returns an investigationId immediately — poll with osint_investigation_status and retrieve results with osint_investigation_report.

NameRequiredDescriptionDefault
queryYesInvestigation subject, per tool: a domain, public IP, organisation name, email address or username.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare openWorldHint=true, idempotentHint=false and destructiveHint=false, so the description's best value is the async contract: it returns an investigationId immediately rather than results. It also discloses the tier restriction and the deliberate restriction on people-centric OSINT. It doesn't mention cost, rate limits or how long an investigation persists, which keeps it below a 5.

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?

Three sentences, each with a distinct job: what it does, the access restriction, and the async return plus follow-up tools. Front-loaded with the action and no wasted text.

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?

For an async-job starter with no output schema, the description supplies everything an agent needs: the immediate investigationId return, the two tools that complete the workflow, and the tier gate that may block the call. Nothing material 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?

With a single required parameter at 100% schema description coverage, the schema already documents 'query'. The description only narrows that generic schema text by implying the query is a username, adding modest value over the structured field.

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 ('Start an async OSINT investigation') and resource ('a username'), plus the scope of the investigation (cross-platform presence, breach correlation). This clearly separates it from osint_investigate_email_start and osint_investigate_domain_start, whose subject types are different.

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 says to poll with osint_investigation_status and retrieve results with osint_investigation_report, so the follow-up path is unambiguous. It also states the owner/enterprise tier restriction and the misuse guardrail. It stops short of explicitly comparing against the email/domain/infrastructure start siblings, relying on the subject-type naming instead.

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

osint_investigation_reportA
Read-onlyIdempotent
Inspect

Retrieve the final report of a completed OSINT investigation by investigationId. For a deep_infrastructure investigation the report also composes discover_subdomains for the target (a cached CT sample under ctDiscovery, never an inventory). Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned or not yet complete.

NameRequiredDescriptionDefault
investigationIdYesInvestigation ID returned by an osint_investigate_*_start tool.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already identify this as a safe, read-only, idempotent, open-world read, so the description wisely adds higher-value context instead of repeating them. It discloses deployment constraints, authorization requirements, degradation behavior, and the special deep_infrastructure composition of discover_subdomains as a cached CT sample under ctDiscovery, explicitly noting it is never an inventory.

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?

The purpose is front-loaded in the first sentence, followed by the deep_infrastructure special case and then the operational constraints. It is dense but every sentence adds material information with no repetition or 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 annotations and schema, the description covers prerequisites, degradation behavior, and a non-obvious report-composition detail well enough to invoke correctly. Because there is no output schema, it could still say more about the report's structure or contents, which is the main remaining gap.

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 coverage is 100%, and the input schema already states that investigationId is returned by an osint_investigate_*_start tool. The description restates the parameter name but adds no format, length, or validation details beyond what the schema provides, so baseline 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 uses a specific verb and resource: retrieve the final report of a completed OSINT investigation by investigationId. The word 'completed' and phrase 'final report' distinguish it from sibling start/status tools, which manage initiation and progress rather than finished output.

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?

It clearly states the tool is for completed investigations and adds operational prerequisites: operator-deploy only and targets must be operator-authorized on the recon watchlist. It also explains graceful degradation when unprovisioned or not yet complete, but it does not explicitly point to osint_investigation_status as the tool for checking progress.

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

osint_investigation_statusA
Read-onlyIdempotent
Inspect

Poll the status of an OSINT investigation by investigationId. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns current status (running | completed | failed) and progress metadata.

NameRequiredDescriptionDefault
investigationIdYesInvestigation ID returned by an osint_investigate_*_start tool.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely non-structured context: an authorization requirement, a graceful-degradation mode when unprovisioned, and the terminal state set. It does not describe polling cadence or terminal-state handling, so it falls short of a 5.

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 purpose and selector are front-loaded in the first sentence, with constraints after. It is dense and largely waste-free, though the semicolon-chained constraints read as a compressed list rather than cleanly separated guidance.

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 compensates by naming the return values (running | completed | failed) and noting progress metadata, plus the degradation behavior. An agent has enough to call and interpret it, though a note on terminal-state polling behavior would close the remaining gap.

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% and the single parameter already documents its origin and length bounds. The description only restates that the ID is the lookup key, adding no format or validation 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.

Purpose5/5

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

States a specific verb and resource ('Poll the status of an OSINT investigation') plus the key selector (investigationId). It is clearly differentiable from the sibling osint_investigate_*_start tools (which launch jobs) and osint_investigation_report (which fetches results).

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?

Gives explicit preconditions: operator-deploy only, targets must be operator-authorized on the recon watchlist, and behavior degrades to info when unprovisioned. It stops short of an explicit 'call this after osint_investigate_*_start returns an ID' routing sentence, though the schema's parameter description implies it.

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

prioritize_portfolio_leadsA
Read-onlyIdempotent
Inspect

Rank a brand’s portfolio (or an explicit domain set) into prioritized registrar-partner sales leads by product-gap value × severity. Multi-domain, paid. Reuses map_registrar_products per domain, then ranks. Distinct from map_registrar_products (per-domain product mapping) and batch_scan (raw scores).

NameRequiredDescriptionDefault
brandNoBrand seed apex; discovers the portfolio, derives ownership buckets, then ranks the top candidates.
formatNoOutput verbosity. Auto-detected if omitted.
domainsNoExplicit domain set to rank (max 10). Ownership bucket = "unknown".
force_refreshNoBypass cache and run fresh scans.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive and open-world traits, so the bar is lower; the description adds genuinely new context by flagging the operation as 'paid' and 'multi-domain' and disclosing that it internally reuses map_registrar_products per domain, which implies cost and latency scaling. It does not quantify that cost or mention limits, keeping it out of the top band.

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?

Three tight sentences: purpose and ranking metric first, cost/composition second, sibling differentiation last. No filler and the key constraint ('paid') is front-loaded.

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 still conveys the output shape (leads ranked by product-gap value × severity) and there is a format parameter for verbosity. Minor gaps remain around what a lead record contains and the size of the ranked result, but an agent has enough to invoke it correctly.

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 baseline is 3. The description reinforces the relationship between the 'brand' seed (portfolio discovery plus ownership buckets) and the explicit 'domains' set, but adds little syntax, default or format detail beyond the schema.

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?

Specific verb (rank) and resource (brand portfolio into prioritized registrar-partner sales leads) with the ranking criterion stated (product-gap value × severity). It explicitly distinguishes itself from two siblings, map_registrar_products and batch_scan.

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?

Names the two closest alternatives and the axes on which they differ (per-domain product mapping vs raw scores vs ranked leads), which lets an agent choose correctly. It stops short of an explicit 'use this when / do not use this when' trigger, but the routing signal is strong.

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

rdap_lookupA
Read-onlyIdempotent
Inspect

Fetch domain registration data via RDAP (modern WHOIS replacement). Returns the domain registrar (the company the domain was registered with), registrant contact, creation/expiration dates, EPP status codes, and domain age. Use when asked who registered the domain, who the registrar is, or when the registration expires — distinct from check_ns which identifies the DNS nameserver provider.

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

Output Schema

NameRequiredDescription
scoreYes
passedYes
partialNo
categoryYes
findingsYes
checkStatusNo
verdictWithheldNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorldHint, so the safety profile is covered. The description adds the nature of RDAP as a WHOIS replacement and the shape of results, but says nothing about caching behavior, rate limits, or failure modes for unregistered domains. Adds moderate value on top of annotations.

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-loads the core action and keeps to a few tightly packed sentences with zero filler. The return-field list is somewhat enumerate-y but still earns its place by supporting purpose clarity.

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 annotations fully covering safety and idempotency, a complete input schema, and an output schema handling return values, the description supplies enough context to call it correctly. Minor gaps around caching/error handling keep it from a 5.

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 coverage is 100%, so the schema already documents domain, format, and force_refresh with enum values and cache-bypass semantics. The description adds no parameter-level detail beyond what the schema provides, so the baseline 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?

States a specific verb and resource ('Fetch domain registration data via RDAP') and explicitly enumerates the returned fields (registrar, registrant, dates, EPP status, domain age). It names the sibling check_ns and clarifies the distinction, so an agent can tell it apart without reading schemas.

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?

Explicitly states when to use it ('who registered the domain, who the registrar is, or when the registration expires') and names the alternative to pick instead for nameserver questions ('distinct from check_ns which identifies the DNS nameserver provider'). Both the selection condition and the exclusion are present.

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

register_brand_audit_watchAInspect

Creates a recurring brand-audit watch for a domain on a daily/weekly/monthly cadence. Each run enqueues a fresh brand_audit_batch_start and (when a webhook is configured) POSTs a diff webhook on classification drift. Returns the new watchId. Owner-scoped; per-principal cap of 20 active watches.

NameRequiredDescriptionDefault
domainYesDomain to watch.
formatNoOutput verbosity. Auto-detected if omitted.
intervalYesRecurrence interval.
webhook_urlNoOptional webhook URL — POSTed on classification drift. Re-validated for SSRF at both register and delivery time.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the per-principal cap of 20 active watches, owner scoping, the side effect that each run enqueues a fresh brand_audit_batch_start, webhook emission on classification drift, and the returned watchId. These are non-obvious operational traits (quota, blast radius, async fan-out) that annotations alone cannot convey.

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?

Three tight sentences, front-loaded with the create action and cadence, followed by side effects and then constraints. Every clause carries distinct information (trigger, webhook behavior, return value, quota) with no repetition of schema text.

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?

For a non-destructive but state-creating tool with no output schema, the description covers what is created, what happens on each run, the return value (watchId), ownership scope, and the quota ceiling. An agent has everything needed to decide to call it and to predict the outcome.

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 domain, interval, format, and webhook_url are already fully documented, including SSRF re-validation on the webhook. The description only restates cadence options and webhook presence, adding no syntax or default behavior beyond the schema — baseline 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?

States a specific verb and resource ("Creates a recurring brand-audit watch for a domain") plus the cadence dimension, which immediately separates it from list_brand_audit_watches and delete_brand_audit_watch. An agent knows this is the creation entry point for scheduled audits 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.

Usage Guidelines4/5

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

Gives clear conditions for use — recurring daily/weekly/monthly auditing of a domain — and names the chain it triggers (brand_audit_batch_start per run), which implicitly routes one-off work to the single-scan siblings. It stops short of an explicit exclusion sentence such as "for a one-off scan use brand_audit_single," so it is clear context rather than full routing.

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

resolve_spf_chainA
Read-onlyIdempotent
Inspect

Trace the full SPF include chain for a domain. Recursively resolves all includes, shows lookup count, tree depth, and flags circular includes or exceeding the 10-lookup limit.

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

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld), but the description adds real behavioral substance: it discloses the recursive traversal, that it flags circular includes, and that it enforces the RFC 10-lookup limit. It does not mention caching or rate/latency characteristics, which is the remaining gap.

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?

Two sentences, zero filler, with the core action front-loaded and the diagnostic outputs listed second. Every clause carries information.

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 carries the burden of explaining returns, and it does list what comes back (lookup count, tree depth, flags). It stops short of describing the shape of the result (tree vs flat list, full vs compact output) which matters given the format parameter.

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% and all three parameters are documented there, including the format enum and force_refresh's cache-bypass intent. The description adds no parameter-level 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.

Purpose4/5

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

States a specific verb and resource ('Trace the full SPF include chain for a domain') and enumerates what it produces: lookup count, tree depth, circular-include flags, 10-lookup limit. That distinguishes it fairly well from a basic SPF record check, but it never names check_spf as the shallower alternative, so the differentiation is implicit rather than explicit.

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

Usage Guidelines3/5

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

Usage is only implied by the word 'full' and 'recursively' — an agent can infer this is the deeper diagnostic versus a plain SPF lookup, but there is no statement of when to use this instead of check_spf or assess_spoofability, and no prerequisites or exclusions.

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

scan_buckets_findingsA
Read-onlyIdempotent
Inspect

Retrieve findings from a completed cloud-bucket discovery scan by scanId. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. The scanId is required so reads can be owner-scoped; target and provider filters are optional.

NameRequiredDescriptionDefault
scanIdYesScan ID returned by scan_buckets_start.
targetNoRestrict findings to this domain. All scanned targets if omitted.
providersNoRestrict findings to these cloud providers (max 8). All providers if omitted.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower; the description still adds real context beyond them — deployment gating, operator authorization against a watchlist, and graceful degradation to 'info' when unprovisioned. It omits any note on result volume, pagination, or what 'degrades to info' concretely returns.

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?

Three tight sentences with the core action front-loaded and constraints following in priority order; no filler. It loses a point only because the compressed clause 'degrades to info when unprovisioned' is ambiguous jargon an agent may misread.

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, a reader still gets access model, authorization requirements, and degradation behavior — enough to call it safely. It stops short of describing the findings payload, so an agent cannot anticipate the result shape from the description alone.

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 baseline is 3, but the description adds rationale the schema lacks: scanId is required specifically so reads can be owner-scoped, and target/provider filters are optional narrowing. That explains *why* the mandatory parameter exists rather than merely restating it.

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?

Specific verb+resource+scope: 'Retrieve findings from a completed cloud-bucket discovery scan by scanId.' It also implicitly distinguishes itself from scan_buckets_start (which produces the scan) and scan_buckets_status (which tracks it), so an agent can route correctly without opening schemas.

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?

States prerequisites clearly: operator-deploy only, targets must be operator-authorized on the recon watchlist, and the scan must be completed. It does not explicitly name the sibling to call first (scan_buckets_start/status) or what to do when the scan is not yet complete, which keeps it just 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.

scan_buckets_startAInspect

Start an async cloud-bucket discovery scan for a target domain. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns a scanId immediately — poll progress with scan_buckets_status and retrieve results with scan_buckets_findings.

NameRequiredDescriptionDefault
targetYesDomain whose cloud buckets to discover (e.g. example.com).
providersNoCloud providers to scan (max 8, e.g. aws, gcp, azure). All providers if omitted.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already disclose non-readonly, non-idempotent, and open-world behavior. The description adds critical operational context: async execution, immediate scanId return, authorization prerequisites, and graceful degradation when unprovisioned.

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?

Three tight sentences with no wasted words. The core purpose and constraints are front-loaded, and the follow-up guidance is concise.

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?

No output schema is present, but the description explains the immediate return value (scanId) and explicitly names the follow-up tools for progress and results. It covers everything needed for correct invocation.

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 fully documents both parameters. The description does not add syntax or format details beyond what the schema provides, which is the expected baseline.

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 ('Start'), resource ('async cloud-bucket discovery scan'), and target scope. It clearly distinguishes the start phase from the sibling status and findings tools.

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?

Explicitly names the operational constraints: operator-deploy only, target must be operator-authorized, and degrades to info when unprovisioned. It also routes the agent to scan_buckets_status and scan_buckets_findings for the next steps.

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

scan_buckets_statusA
Read-onlyIdempotent
Inspect

Poll the status of a cloud-bucket discovery scan by scanId. Operator-deploy only; targets must be operator-authorized on the recon watchlist; degrades to info when unprovisioned. Returns scan status (running | completed | failed) and progress metadata.

NameRequiredDescriptionDefault
scanIdYesScan ID returned by scan_buckets_start.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), so the description correctly spends its words on non-obvious behavior: the tool only works in operator deployments, targets must be on the recon watchlist, and it degrades to "info" when unprovisioned. It also discloses the status enum, useful since there is no output schema. Polling cadence, timeout, and what "progress metadata" contains are left unstated.

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?

Three tight sentences with the core action front-loaded, then prerequisites, then return shape. Dense jargon like "degrades to info when unprovisioned" costs a bit of readability but each clause carries real information.

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?

For a single-parameter status poller with no output schema, the description supplies the essentials an agent needs: the ID's origin, the deployment/authorization preconditions, and the possible status values. It stops short of telling the agent how often or how long to poll and what the progress metadata includes.

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 coverage is 100% and the schema itself already says scanId is "Scan ID returned by scan_buckets_start." The description repeats the parameter name and its source without adding format, length, or lifecycle detail, so 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?

States a specific verb+resource: poll the status of a cloud-bucket discovery scan by scanId. It also names the return values (running | completed | failed), which makes it unambiguously distinct from scan_buckets_start (which creates the scan) and scan_buckets_findings (which returns results).

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?

"Poll the status ... by scanId" plus the schema note that scanId comes from scan_buckets_start makes the predecessor relationship explicit. Gating conditions (operator-deploy, operator-authorized targets) are also stated. It does not explicitly route the agent to scan_buckets_findings once the scan completes, which keeps it 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.

scan_domainA
Read-onlyIdempotent
Inspect

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.

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.

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.

sge_quickscanA
Read-onlyIdempotent
Inspect

Answer, for ONE domain, whether it meets the New Zealand Secure Government Email (SGE) requirements agencies must satisfy by October 2026. Reports all seven SGE controls — DMARC p=reject, SPF -all, DKIM, SMTP transport TLS, MTA-STS enforce, TLS-RPT, full sub-domain coverage — each as satisfied, not satisfied, or NOT MEASURED, with the structured evidence behind every verdict. Neither SMTP transport TLS nor sub-domain coverage can be observed from a single domain scan, so a DNS-only result tops out at INDETERMINATE, which is not a pass. Distinct from map_compliance, which maps findings to NIST/PCI/SOC 2/CIS.

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

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavior: two of the seven controls cannot be observed from a DNS scan, so results cap at INDETERMINATE, and unmet-observable controls report NOT MEASURED rather than a pass. It does not mention caching behavior, though the force_refresh parameter implies it.

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?

Front-loaded with the core question, then the control list, then the INDETERMINATE caveat, then the sibling differentiation. Every sentence carries distinct information and the caveat is placed before the alternative, which is the right priority order.

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?

No output schema exists, yet the description specifies the verdict vocabulary (satisfied / not satisfied / NOT MEASURED / INDETERMINATE) and that structured evidence accompanies each verdict, which is exactly what an agent needs to parse results. Combined with the control enumeration, nothing material is missing for a 3-parameter read-only tool.

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% with all three parameters documented (domain, format, force_refresh), so the description need not restate them. It adds no parameter-level detail beyond the schema; 'one domain' and 'DNS-only scan' are the only implicit hints. Baseline 3 is correct.

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 (answer whether), a resource (one domain's SGE compliance), and a concrete deadline-bound standard (NZ SGE, October 2026). It also enumerates the seven controls checked, so an agent knows exactly what output dimensions to expect and can distinguish this from single-check siblings like check_dmarc or check_spf.

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?

Explicitly scopes usage to ONE domain and names the alternative (map_compliance) plus the reason to pick that alternative (NIST/PCI/SOC 2/CIS mapping). The 'DNS-only result tops out at INDETERMINATE' note tells the agent what this tool cannot do, which is unusually good exclusion guidance.

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

simulate_attack_pathsA
Read-onlyIdempotent
Inspect

Analyze current DNS posture and enumerate specific attack paths an adversary could exploit, with severity, feasibility, steps, and mitigations.

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

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds valuable context that the response contains severity, feasibility, exploitation steps and mitigations — non-trivial given there is no output schema.

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?

A single dense sentence with zero filler; the core purpose and result shape are front-loaded and nothing is repeated from structured fields.

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?

For a read-only composite analysis tool with full schema coverage, the description is nearly sufficient: it conveys scope and return content. It could add expected cost/latency or a hint that a prior scan makes the analysis richer, but no essential calling information 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 coverage is 100% and all three parameters carry their own descriptions, so the schema does the heavy lifting. The description adds no parameter-level meaning beyond it, making 3 the correct baseline.

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

Purpose4/5

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

Specific verb pair (analyze, enumerate) plus a named resource (DNS attack paths) and the shape of the result (severity, feasibility, steps, mitigations). This clearly distinguishes it from the single-signal check_* siblings without naming any of them.

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

Usage Guidelines3/5

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

The framing as an adversary-path enumeration implies this is the synthesis step rather than a point check, but no explicit when-to-use, prerequisites (e.g., run scan_domain first), or when-not guidance is given.

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

validate_fixA
Read-onlyIdempotent
Inspect

Re-check a specific security control after applying a fix, to confirm the finding is now resolved. Use only when a fix has already been applied and you want to verify or confirm the remediation was successful — not for initial inspection of a record.

NameRequiredDescriptionDefault
checkYesCheck name to re-run (e.g., "dmarc", "spf")
domainYesDomain to validate the fix for
formatNoOutput verbosity. Auto-detected if omitted.
expectedNoExpected DNS record value to verify against

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds workflow context (this runs post-remediation), but says nothing about how a mismatch is reported or what happens when the expected value isn't found, leaving the observable behavior partly opaque.

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?

Two sentences, front-loaded with the action and immediately followed by the when/when-not condition. No filler or restatement of the title.

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?

For a read-only verification tool with a fully documented schema, the definition covers the essential precondition and purpose. It doesn't clarify the shape of the result (e.g., pass/fail vs. diff against 'expected'), which is the one remaining gap given there is no output schema.

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%, with enums documented for 'check' and 'format', so the schema carries parameter meaning. The description adds no additional syntax or semantics for 'expected' or 'format' beyond what the schema states; 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?

States a specific verb and object ('Re-check a specific security control') plus the goal ('confirm the finding is now resolved'), which cleanly separates it from the sibling check_* tools that perform initial inspection. An agent can identify the operation 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.

Usage Guidelines4/5

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

Gives an explicit precondition ('only when a fix has already been applied') and an explicit exclusion ('not for initial inspection of a record'). It doesn't name a concrete alternative such as check_dmarc or scan_domain, so the routing is implied rather than fully spelled out.

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.

  1. 81 tool updates
    • Changedanalyze_drift1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedassess_spoofability1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbatch_scan1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbatch_scan_findings2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / format / description
        Added value: +"Output verbosity. Auto-detected if omitted."
    • Changedbatch_scan_start1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbatch_scan_status2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / format / description
        Added value: +"Output verbosity. Auto-detected if omitted."
    • Changedbrand_audit_batch_start1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbrand_audit_get_report2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Output verbosity. Auto-detected if omitted.",
        +  "enum": [
        +    "full",
        +    "compact"
        +  ],
        +  "type": "string"
        +}
    • Changedbrand_audit_single1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbrand_audit_status2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Output verbosity. Auto-detected if omitted.",
        +  "enum": [
        +    "full",
        +    "compact"
        +  ],
        +  "type": "string"
        +}
    • Changedcheck_agent_discovery1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_authoritative_dns_infra1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_bimi1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_caa1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_dane1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_dane_https1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_dbl1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_dkim1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_dmarc1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_dnskey_strength1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_dnssec1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_dnssec_chain1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_fast_flux1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_http_security1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_llms_txt1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_lookalikes1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_mta_sts1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_mx1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_mx_reputation1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_ns1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_nsec_walkability1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_ptr1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_rbl1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_realtime_threat_feed1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_resolver_consistency1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_root_server_set1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_shadow_domains1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_spf1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_srv1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_ssl1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_subdomailing1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_subdomain_takeover1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_svcb_https1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_tlsrpt1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_txt_hygiene1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcheck_zone_hygiene1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcompare_baseline2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / baseline / additionalProperties
        Previous value: -{}New value: +false
    • Changedcompare_domains1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcymru_asn1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changeddelete_brand_audit_watch2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Output verbosity. Auto-detected if omitted.",
        +  "enum": [
        +    "full",
        +    "compact"
        +  ],
        +  "type": "string"
        +}
    • Changeddiscover_brand_domains1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changeddiscover_brand_domains_findings2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Output verbosity. Auto-detected if omitted.",
        +  "enum": [
        +    "full",
        +    "compact"
        +  ],
        +  "type": "string"
        +}
    • Changeddiscover_brand_domains_start1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changeddiscover_brand_domains_status2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Output verbosity. Auto-detected if omitted.",
        +  "enum": [
        +    "full",
        +    "compact"
        +  ],
        +  "type": "string"
        +}
    • Changeddiscover_subdomains1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedexplain_finding1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgenerate1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_benchmark1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_domain_rank1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_provider_insights1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_brand_audit_watches2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Output verbosity. Auto-detected if omitted.",
        +  "enum": [
        +    "full",
        +    "compact"
        +  ],
        +  "type": "string"
        +}
    • Changedmap_compliance1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedmap_supply_chain1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedosint_investigate_domain_start1 field changed
      • addedInput schema / properties / query / description
        Added value: +"Investigation subject, per tool: a domain, public IP, organisation name, email address or username."
    • Changedosint_investigate_email_start1 field changed
      • addedInput schema / properties / query / description
        Added value: +"Investigation subject, per tool: a domain, public IP, organisation name, email address or username."
    • Changedosint_investigate_infrastructure_start1 field changed
      • addedInput schema / properties / query / description
        Added value: +"Investigation subject, per tool: a domain, public IP, organisation name, email address or username."
    • Changedosint_investigate_supply_chain_start1 field changed
      • addedInput schema / properties / query / description
        Added value: +"Investigation subject, per tool: a domain, public IP, organisation name, email address or username."
    • Changedosint_investigate_username_start1 field changed
      • addedInput schema / properties / query / description
        Added value: +"Investigation subject, per tool: a domain, public IP, organisation name, email address or username."
    • Changedosint_investigation_report1 field changed
      • addedInput schema / properties / investigationId / description
        Added value: +"Investigation ID returned by an osint_investigate_*_start tool."
    • Changedosint_investigation_status1 field changed
      • addedInput schema / properties / investigationId / description
        Added value: +"Investigation ID returned by an osint_investigate_*_start tool."
    • Changedprioritize_portfolio_leads1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrdap_lookup1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedregister_brand_audit_watch2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Output verbosity. Auto-detected if omitted.",
        +  "enum": [
        +    "full",
        +    "compact"
        +  ],
        +  "type": "string"
        +}
    • Changedresolve_spf_chain1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedscan_buckets_findings3 fields changed
      • addedInput schema / properties / providers / description
        Added value: +"Restrict findings to these cloud providers (max 8). All providers if omitted."
      • addedInput schema / properties / scanId / description
        Added value: +"Scan ID returned by scan_buckets_start."
      • addedInput schema / properties / target / description
        Added value: +"Restrict findings to this domain. All scanned targets if omitted."
    • Changedscan_buckets_start2 fields changed
      • addedInput schema / properties / providers / description
        Added value: +"Cloud providers to scan (max 8, e.g. aws, gcp, azure). All providers if omitted."
      • addedInput schema / properties / target / description
        Added value: +"Domain whose cloud buckets to discover (e.g. example.com)."
    • Changedscan_buckets_status1 field changed
      • addedInput schema / properties / scanId / description
        Added value: +"Scan ID returned by scan_buckets_start."
    • Changedscan_domain1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsge_quickscan1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsimulate_attack_paths1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedvalidate_fix1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  2. 6 tool updates
    • Changedbrand_audit_batch_start1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "category": {
        -      "type": "string"
        -    },
        -    "checkStatus": {
        -      "type": "string"
        -    },
        -    "findings": {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "partial": {
        -      "type": "boolean"
        -    },
        -    "passed": {
        -      "type": "boolean"
        -    },
        -    "score": {
        -      "type": "number"
        -    },
        -    "verdictWithheld": {
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "category",
        -    "score",
        -    "passed",
        -    "findings"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedbrand_audit_get_report1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "category": {
        -      "type": "string"
        -    },
        -    "checkStatus": {
        -      "type": "string"
        -    },
        -    "findings": {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "partial": {
        -      "type": "boolean"
        -    },
        -    "passed": {
        -      "type": "boolean"
        -    },
        -    "score": {
        -      "type": "number"
        -    },
        -    "verdictWithheld": {
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "category",
        -    "score",
        -    "passed",
        -    "findings"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedbrand_audit_single1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "category": {
        -      "type": "string"
        -    },
        -    "checkStatus": {
        -      "type": "string"
        -    },
        -    "findings": {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "partial": {
        -      "type": "boolean"
        -    },
        -    "passed": {
        -      "type": "boolean"
        -    },
        -    "score": {
        -      "type": "number"
        -    },
        -    "verdictWithheld": {
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "category",
        -    "score",
        -    "passed",
        -    "findings"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedbrand_audit_status1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "category": {
        -      "type": "string"
        -    },
        -    "checkStatus": {
        -      "type": "string"
        -    },
        -    "findings": {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "partial": {
        -      "type": "boolean"
        -    },
        -    "passed": {
        -      "type": "boolean"
        -    },
        -    "score": {
        -      "type": "number"
        -    },
        -    "verdictWithheld": {
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "category",
        -    "score",
        -    "passed",
        -    "findings"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changeddelete_brand_audit_watch1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "category": {
        -      "type": "string"
        -    },
        -    "checkStatus": {
        -      "type": "string"
        -    },
        -    "findings": {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "partial": {
        -      "type": "boolean"
        -    },
        -    "passed": {
        -      "type": "boolean"
        -    },
        -    "score": {
        -      "type": "number"
        -    },
        -    "verdictWithheld": {
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "category",
        -    "score",
        -    "passed",
        -    "findings"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedregister_brand_audit_watch1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "category": {
        -      "type": "string"
        -    },
        -    "checkStatus": {
        -      "type": "string"
        -    },
        -    "findings": {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "partial": {
        -      "type": "boolean"
        -    },
        -    "passed": {
        -      "type": "boolean"
        -    },
        -    "score": {
        -      "type": "number"
        -    },
        -    "verdictWithheld": {
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "category",
        -    "score",
        -    "passed",
        -    "findings"
        -  ],
        -  "type": "object"
        -}New value: +null
  3. 45 tool updates
    • Changedbrand_audit_batch_start1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedbrand_audit_get_report1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedbrand_audit_single1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedbrand_audit_status1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_agent_discovery1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_authoritative_dns_infra1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_bimi1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_caa1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_dane1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_dane_https1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_dbl1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_dkim1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_dmarc1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_dnskey_strength1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_dnssec1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_dnssec_chain1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_fast_flux1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_http_security1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_llms_txt1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_lookalikes1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_mta_sts1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_mx1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_mx_reputation1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_ns1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_nsec_walkability1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_ptr1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_rbl1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_realtime_threat_feed1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_root_server_set1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_shadow_domains1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_spf1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_srv1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_ssl1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_subdomailing1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_subdomain_takeover1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_svcb_https1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_tlsrpt1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_txt_hygiene1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcheck_zone_hygiene1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcymru_asn1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changeddelete_brand_audit_watch1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changeddiscover_brand_domains1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedlist_brand_audit_watches1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedrdap_lookup1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedregister_brand_audit_watch1 field changed
      • addedOutput schema / properties / verdictWithheld
        Added value: +{
        +  "type": "boolean"
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables DNS and email security analysis through passive and active scanning capabilities. Provides comprehensive domain security checks including SPF, DMARC, DNSSEC validation, MX record analysis, and SMTP connectivity testing.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that checks SPF, DKIM, DMARC, and MX records for a domain, returning a health verdict and specific DNS fixes to improve email deliverability.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides comprehensive tools for real-time DNS queries across 53 record types, global propagation checks, and SSL certificate analysis. It also enables domain security scans for SPF/DKIM/DMARC configurations and HTTP uptime monitoring.
    8
    43 npm
    22
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.