Skip to main content
Glama

Server Details

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

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
MadaBurns/bv-mcp
GitHub Stars
6
Server Listing
Blackveil DNS

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.2/5 across 80 of 80 tools scored. Lowest: 3.4/5.

Server CoherenceB
Disambiguation4/5

Most tools have clearly distinct purposes, with detailed descriptions that help differentiate overlapping areas (e.g., check_dane vs check_dane_https). However, there are sets of similar tools (brand audit, OSINT, polling) that could cause confusion if descriptions are not carefully read.

Naming Consistency3/5

The naming is mostly readable but inconsistent: many check_* tools follow a verb_noun pattern, but there are also noun_verb names (scan_domain, cymru_asn), bare verbs (generate), and varied patterns for async operations (discover_brand_domains_start vs discover_brand_domains).

Tool Count2/5

With 80 tools, the server feels overstuffed. It covers multiple domains (DNS, email, brand, OSINT, M365) that could benefit from separation. The high number includes many polling/status tools that add overhead.

Completeness3/5

The server covers core DNS and email security checks thoroughly, including many edge cases (e.g., BIMI, MTA-STS, subdomain takeover). However, there are gaps like lack of direct DNS record management and some OSINT tools are restricted to operator deployment, leaving agents with dead ends.

Available Tools

80 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).

ParametersJSON Schema
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.
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered. The description adds value by specifying the return payload (drift classification, score delta, lists of improvements/regressions) and clarifies the baseline 'cached' reuse, without contradicting 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?

Three sentences with clear information architecture: purpose, output, usage/alternatives. No wasted words; every sentence earns its place.

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?

No output schema exists, but the description covers the return values. It also explains when to use the tool and the key baseline parameter behavior (via schema), making it sufficiently complete for a moderate-complexity 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 detailed per-param explanations (e.g., baseline's 'cached' literal and exclusion of policy objects). The description itself doesn't add parameter-level semantics beyond schema, so a 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 the tool measures DNS security posture change against a prior snapshot, using specific verbs and resources. It explicitly distinguishes from compare_baseline by contrasting improvement-over-time vs compliance-to-policy, differentiating it from a key sibling tool.

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 case ('did our security score improve or regress since last time?') and an explicit exclusion (not for compliance checks — use compare_baseline instead). The baseline parameter schema reinforces this with 'NOT a policy/requirements object — for compliance enforcement against required controls, use compare_baseline instead.'

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

assess_coverageA
Read-onlyIdempotent
Inspect

Assess Conditional Access coverage gaps for a Microsoft Entra tenant — identifies users and apps not protected by any enforced policy. Requires m365Proxy service binding; returns { unprovisioned: true } when absent. A representative: true field in the response marks sample (non-live) data until live Graph reads land.

ParametersJSON Schema
NameRequiredDescriptionDefault
ms_tenant_idYesMicrosoft Entra tenant ID (GUID or domain).
Behavior5/5

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

Beyond the annotations (readOnlyHint, destructiveHint, idempotentHint), the description discloses important runtime behaviors: the requirement for m365Proxy service binding, the 'unprovisioned' fallback, and the 'representative' sample-data flag until live Graph reads are available. These are not apparent from annotations alone and add significant transparency.

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 sentences with no filler. It front-loads the primary purpose, then adds necessary caveats in a logical order. Every sentence contributes essential 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?

The description covers the tool's purpose, dependency, fallback, and data representativeness, which is strong given no output schema. However, it does not outline the overall response structure beyond the mentioned fields, so it leaves some ambiguity about the main result format. Still, it is largely complete for accurate selection and 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?

The input schema fully describes the only parameter ms_tenant_id with clear text ('Microsoft Entra tenant ID (GUID or domain)'), so the baseline is 3. The description adds no additional parameter-level meaning beyond the schema, so no higher score is warranted.

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 'Assess' with a clear resource ('Conditional Access coverage gaps for a Microsoft Entra tenant') and identifies the exact deliverable: 'users and apps not protected by any enforced policy.' This distinguishes it from sibling tools like get_ca_policies or analyze_drift.

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 provides clear context for when to use the tool: when you need to identify coverage gaps in Conditional Access. It also mentions a prerequisite (m365Proxy service binding) and fallback behavior. However, it does not explicitly mention alternatives or when not to use it, so it stops 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.

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.

ParametersJSON Schema
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.
Behavior4/5

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

With annotations already declaring readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the description adds value by explaining how the score is computed (combining SPF trust surface, DMARC enforcement, DKIM coverage) and what outputs to expect (risk level, sub-scores, plain-language summary). This goes beyond annotation coverage and helps set expectations.

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, no repetition of schema content, and the most important information (what the tool does and its output) is front-loaded. Every phrase serves a purpose, with the usage note placed last as a natural call to action.

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 has no output schema, so the description's explanation of returned data (risk level, sub-scores, summary) is valuable. It covers the core behavior and usage context. Minor gaps like handling of invalid domains or network-only data sources exist, but they are not critical for a read-only, idempotent 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%, so the baseline is 3. The description doesn't add parameter-level details beyond what the schema already provides (domain, format, force_refresh). It doesn't harm, but it also doesn't compensate further.

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 starts with a specific verb ('Compute') and clearly names the resource ('composite email spoofability risk score'), including the 0–100 scale and direction. It explicitly distinguishes itself from sibling tools like check_spf, check_dmarc, and check_dkim by framing this as a combined/composite assessment rather than a single-control check.

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 explicit usage triggers: 'Use when asked how easy it is to spoof email from a domain, or for a composite email spoofing risk score.' It implies alternatives (individual control checks) exist among siblings but does not name them or state when NOT to use this tool. This is clear context but lacks exclusions.

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.

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

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds valuable context beyond annotations: the parallel execution up to 10 domains, the output includes score and NIST-aligned letter grade, and that it performs a full security audit per domain. It does not fully describe potential rate limits or exact output structure, but the added detail justifies above baseline.

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 sentences long, front-loaded with the core action, and includes the key purpose, output summary, and sibling distinction with zero fluff. Every sentence earns its place.

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 bulk operation with no output schema, the description adequately communicates input limits (max 10), behavior (parallel, full audit), output (score, grade, finding counts), and intended usage. Combined with strong annotations and complete schema, this is sufficient for an agent to invoke and interpret results 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: domains, format, and force_refresh. The description reinforces the 'up to 10' limit for domains and mentions parallel execution, but does not add significant semantic 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?

The description clearly states a specific verb and resource: 'Bulk-scan up to 10 domains in parallel' with a full security audit. It explicitly differentiates from the sibling tool compare_domains, making its purpose unambiguous.

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 provides explicit usage context: 'Use when you want to audit multiple domains at once or do a bulk scan of several domains simultaneously'. It also names the alternative compare_domains and clarifies when that sibling is more appropriate (side-by-side analysis of 2–5 domains).

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoOutput view mode. 'csc_complement' produces a CSC-tuned 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false. The description adds valuable behavioral context: the operation is asynchronous (returns immediately with an auditId), requires polling for completion, and each target consumes 1 unit of the monthly BRAND_AUDIT_QUOTAS budget. It does not conflict with annotations and provides practical cost/rate information.

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 sentences, front-loaded with the core action and scope, followed by return shape, follow-up tools, and quota impact. Every clause earns its place with no redundancy 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 10 parameters and async workflow, the description covers the full lifecycle (enqueue → status → report) and notes quota implications. The output schema and per-parameter schema descriptions handle the remaining details. It could briefly mention when to prefer brand_audit_single for a single-domain audit, but the description is otherwise sufficiently complete for correct selection and invocation.

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. The description adds semantic linkage by mapping workflow concepts to parameters: 'standard/deep discovery depth' (depth), 'brand aliases' (brand_aliases), and 'caller-supplied candidate domains' (candidate_domains). It also clarifies the per-domain quota consumption, enriching the meaning of 'domains'.

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 ('Enqueue') and resource ('async brand audit') with clear constraints ('up to 50 target domains', optional depth/aliases/candidates). It differentiates from siblings by naming brand_audit_status and brand_audit_get_report as follow-up tools, positioning it unambiguously as the batch-start entry point.

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

Usage Guidelines4/5

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

The description clearly conveys when to use this tool: to start an async batch audit across multiple domains, and it provides an explicit follow-up workflow ('poll with brand_audit_status and fetch results with brand_audit_get_report'). However, it does not explicitly contrast with brand_audit_single or state conditions when this tool should not be used, so it lacks a full when-not/alternatives statement.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoSpecific target domain. Omit for audit-level aggregate.
auditIdYesAudit ID returned by brand_audit_batch_start.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, lowering the bar. The description adds substantial behavioral context: conditional response based on target, notReady for in-flight, pdfUrl authentication requirements, and pdfPending for polling. This goes well beyond the annotations with no contradictions.

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, all information-dense and front-loaded with the core purpose. Every sentence contributes unique value: fetch semantics, conditional behavior, in-flight and PDF edge cases. No redundancy or fluff.

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 simple schema (2 params, no nesting) and presence of an output schema, the description fully covers the tool's behavior across completed, in-flight, and PDF-rendering states. It tells the caller exactly what to expect in each scenario, making it complete for the tool's complexity.

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 schema already documents both parameters. The description adds meaningful context by explaining how omitting target changes the response from per-target to audit-level aggregate, which is not evident from the parameter descriptions alone.

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 begins with a specific verb+resource: 'Fetch the result JSON for a completed brand audit.' It clearly distinguishes the tool from siblings by explaining the difference between per-target and aggregate results, and it is distinct from status/start tools in the sibling list.

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 provides clear context on when to use it: after a completed audit, with optional target for per-target results. It also explains behavior during an in-flight audit (returns notReady) and PDF rendering states, but it does not explicitly reference alternative tools like brand_audit_status, so usage boundaries are implied rather than explicitly stated.

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

brand_audit_singleA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoOutput view mode. 'csc_complement' produces a CSC-tuned 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds valuable behavioral context: tier-wide monthly quota limits (free/agent=0, developer=50, partner=200, enterprise=500, owner=unlimited) and the classification taxonomy (consolidated, shadowIt, vendor dependency, indeterminate, impersonation). This goes well beyond the structured annotations without contradicting 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?

Three sentences with no filler: the first sentence states purpose and optionals, the second outlines the pipeline, and the third discloses quota gating. Each sentence earns its place, and the most important information 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?

For a tool with 11 parameters, an output schema, and over 60 siblings, the description covers the essential context: purpose, pipeline steps, classification categories, and quota constraints. It does not explain every parameter or return value, but those are handled by the schema and output schema. The only minor gap is lack of explicit sibling differentiation, which is acceptable given the description's clarity.

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

Parameters3/5

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

The input schema provides 100% coverage with detailed descriptions for all 11 parameters, including enums and defaults. The description only lightly echoes a few parameters (depth, brand_aliases, candidate_domains) without adding semantic detail beyond what the schema already documents. Baseline 3 is appropriate because the schema carries the heavy lifting.

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 opens with a specific verb+resource combination ('Run a full brand audit on a single target') and clearly differentiates from batch/status/report sibling tools by emphasizing 'single target' and 'full brand audit'. It enumerates concrete sub-operations (discover, look up registrar/registrant, classify) and names the classification outputs, leaving no ambiguity about what the tool does.

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 implies when to use this tool (single-target comprehensive audit) and contrasts with batch operations via 'single target'. It mentions optional depth, aliases, and caller-supplied candidate domains. However, it does not explicitly name alternatives like brand_audit_batch_start or discover_brand_domains, so the guidance is clear but not exhaustive.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
auditIdYesAudit ID returned by brand_audit_batch_start.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description adds valuable behavioral details: it states the exact status enum, progress format, per-target statuses, and the owner-scoping behavior where foreign auditIds surface as notFound. This significantly enhances the agent's understanding of the tool's 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?

The description is two sentences long, front-loaded with the action and resource, and every clause provides distinct value (return types, progress format, owner scoping). No filler or redundancy.

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 simple single-parameter polling tool with an output schema, the description covers all essential aspects: what it polls, what it returns, and an important edge case (owner-scoped notFound). It is fully sufficient for an agent to invoke and interpret results 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?

The schema already provides 100% coverage with a clear description of auditId ('Audit ID returned by brand_audit_batch_start'). The tool description does not add further parameter-specific nuances, but the baseline of 3 is appropriate given the schema's thoroughness.

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 enqueued brand audit,' clearly distinguishing it from related tools like brand_audit_get_report (which likely retrieves full findings) and brand_audit_single. It also lists the exact return fields, making the tool's function unambiguous.

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

Usage Guidelines4/5

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

The description clearly implies usage after enqueuing an audit, and the schema reinforces this by stating the auditId comes from brand_audit_batch_start. It does not explicitly name alternative tools or exclusion conditions, but the context is sufficiently clear for an agent to know when to use this status poll.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare read-only, non-destructive, and idempotent behavior. The description adds meaningful operational context: it notes the use of Private-Use SVCB param code points pending IANA assignment, the specific record paths checked, and the fact that it's read-only. This goes beyond the structured annotations without contradicting them.

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 three dense sentences covering multiple technical aspects without excessive fluff. It front-loads the primary purpose and then details specific behaviors. Slightly run-on but every clause adds value; could be split for readability, but it's appropriately sized for the complexity.

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 complexity, the description covers the core behaviors: detection, DNSSEC status, DANE/TLSA evaluation, and capability integrity. Since an output schema is present, return value details are not needed in the description. It could mention how the 'protocol' parameter scopes the check, but that is already in the 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?

All six parameters have detailed schema descriptions (100% coverage), so the baseline is 3. The description adds high-level context about SVCB records and protocol indices but does not materially enhance individual parameter understanding beyond what the schema already provides. For instance, 'verify_cap' is already well described 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 states the tool's purpose: assessing the security posture of IETF BANDAID agent-discovery records. It enumerates specific checks (SVCB detection, DNSSEC anchoring, DANE/TLSA binding, capability-document integrity), making it distinct from sibling tools like check_dane or check_dnssec by tying everything to the agent-discovery context.

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 specialized scope implies when to use the tool, but the description does not explicitly state when to prefer it over alternatives or provide exclusions. For example, it doesn't mention that generic check_dane would suffice without the BANDAID agent-discovery context. Usage is implied rather than directly instructed.

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

Check authoritative DNS infrastructure posture for a hostname. Uses BV_INFRA_PROBE when available for raw DNS, routing, RPKI, and vantage-point evidence.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
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 description adds value by disclosing the data sources (BV_INFRA_PROBE) and the types of evidence considered (raw DNS, routing, RPKI, vantage-point). This provides useful contextual behavior beyond the annotations, though it doesn't specify fallback behavior when BV_INFRA_PROBE is unavailable.

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 sentences, with the first sentence front-loading the core purpose and the second adding key evidence sources. There is no redundant information, and it earns a top score for conciseness.

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?

Given the output schema, annotations, and simple parameter set, the description is mostly sufficient. However, it lacks guidance on selection among the many sibling DNS check tools and doesn't explain the behavior when BV_INFRA_PROBE is unavailable, which is a contextual gap. It covers the basic what and how but not the when.

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

Parameters3/5

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

The input schema already documents all three parameters with descriptions, and schema coverage is 100%. The description adds no additional parameter-level meaning, so the baseline of 3 is appropriate. It doesn't clarify auto-detection of format or force_refresh cache behavior beyond 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 states the tool's action ('Check') and resource ('authoritative DNS infrastructure posture') for a specific scope ('for a hostname'). This is specific enough to distinguish it from broad or vague descriptions, and it aligns with the tool's name without being a tautology.

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?

The description provides no explicit guidance on when to use this tool versus the many sibling DNS-related tools (e.g., check_ns, check_dnssec). It only implies usage through the action and resource, but there is no 'use this when' or 'for alternatives, use X' context. The mention of 'when available' refers to BV_INFRA_PROBE, not tool selection.

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 VMC certificate evidence (a=), 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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/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 covered. The description adds value by detailing what the tool validates (l=, a=, p=), the DMARC prerequisite, and that it 'Returns findings for a missing/malformed record or unmet prerequisites.' This gives behavioral insight beyond the annotations without contradicting 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?

Three sentences, each earning its place. The first sentence states the action and target. The second explains what is validated. The third gives usage context. No redundancy, no filler, and key details are 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?

Given the tool's moderate complexity, the description covers the core behavior (checking a DNS record, validating specific fields, returning findings) and its role in a broader audit. An output schema exists but is not included in the description; however, the system provides it separately, so the description need not explain return formats. The only minor gap is not detailing what the 'format' parameter outputs, but that is covered by the 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%—all three parameters (domain, format, force_refresh) have descriptions. The tool description adds context about the record fields (l=, a=, p=) but does not add new meaning to the parameters themselves. Since the schema already handles parameter semantics, 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 ('Check') with a precise resource ('BIMI brand-logo record at default._bimi.<domain>'). It clearly distinguishes itself from sibling DNS check tools by naming the exact record type and its purpose (validating logo URL, VMC evidence, and DMARC prerequisite). This leaves no ambiguity about what the tool does.

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 states 'Use to assess brand-indicator readiness in inboxes' and notes it is 'Part of the scan_domain audit,' providing clear context for when to use it. However, it does not explicitly mention when not to use it or name alternative tools (e.g., check_dmarc), so it falls short of a full 5 but is well above a bare minimum.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the audit context and the nature of the lookup, but it does not disclose additional behavioral details such as caching behavior (despite force_refresh param) or any rate limits. No contradiction with 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 two concise sentences, front-loaded with the primary purpose, and every sentence adds meaningful context. No wasted words.

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 simple read-only DNS lookup tool with an output schema and fully described parameters, the description covers purpose and context sufficiently. It does not need to explain return values thanks to the output schema, and the audit context is provided.

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 parameter descriptions for domain, format, and force_refresh already present. The tool description provides no additional parameter semantics beyond what the schema already states, 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?

The description clearly states the tool performs a DNS lookup for CAA records and explains what those records indicate (authorized Certificate Authorities). This specific verb+resource combination distinguishes it from sibling DNS tools like check_dmarc or check_dkim.

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 when CAA records need to be checked as part of a domain audit, but it provides no explicit guidance on when to choose this tool over alternatives or when not to use it. The phrase 'Part of the scan_domain audit' gives context but no exclusionary or preferential criteria.

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., verifying whether SMTP mail-server certificates are bound in DNS (DNSSEC-backed protection against CA misissuance and MITM on inbound mail). Use when asked if SMTP connections are protected by DANE/TLSA pinning. For HTTPS DANE at port 443, use check_dane_https instead. Part of the scan_domain audit.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds behavioral context beyond annotations: it discloses the network operations (resolving MX hosts, querying TLSA records at _25._tcp.<mx-host>, verifying DNSSEC-backed binding). This goes beyond just stating it's read-only.

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 concise and front-loaded, with two sentences that deliver the core purpose, the exact DNS lookup pattern, usage guidance, and a sibling alternative. No filler or redundant statements.

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, return values are already covered. The description supplies the operational context (port 25, MX host resolution, TLSA record location), the purpose (protect against CA misissuance and MITM), and the relationship to the broader scan_domain audit. It is complete for an agent to invoke this 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%, with each parameter (domain, format, force_refresh) well-described in the schema itself. The tool description does not add parameter-level detail, but doesn't need to since the schema carries the full semantic load.

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 ('Check') and resource ('DANE/TLSA certificate pinning for SMTP at port 25'), and clearly differentiates from the sibling check_dane_https by specifying port 25 and SMTP. It also explains the mechanism (resolving MX hosts and looking up TLSA records), making the tool's purpose unmistakable.

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 this tool: 'Use when asked if SMTP connections are protected by DANE/TLSA pinning.' It also names the alternative for HTTPS: 'For HTTPS DANE at port 443, use check_dane_https instead.' This gives clear decision guidance.

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) to confirm the web certificate is pinned in DNS. Distinct from check_dane which covers SMTP at port 25. Part of the scan_domain audit.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context by explaining the DNS lookup mechanism and that it's part of a broader audit, which goes beyond the annotations. It doesn't contradict annotations, but stops short of describing potential side effects like DNS query volume or cache 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 description is three concise sentences, with the primary verb and resource front-loaded. Each sentence serves a purpose: stating the function, providing the technical method, and distinguishing from the sibling tool. No unnecessary words.

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 moderate complexity (3 params, 1 required), full schema descriptions, and presence of an output schema, the description is complete. It covers the core behavior, the specific DNS record checked, the port distinction, and its role in the audit. The output schema handles return value details, and annotations cover safety.

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 covers all parameters with descriptions (100% coverage). The description adds the specific record name (_443._tcp.{domain}) which enriches the domain parameter's meaning, but the other parameters (format, force_refresh) are already well-documented in the schema. Baseline 3 is appropriate since the description only provides marginal added value.

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 states the tool's function: 'Verify DANE certificate pinning for HTTPS connections.' It specifies the exact mechanism (TLSA record lookup at _443._tcp.{domain}) and explicitly distinguishes it from the sibling tool check_dane for SMTP, making the purpose unambiguous.

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?

The description identifies when to use this tool (for HTTPS DANE verification) and explicitly differentiates it from check_dane (SMTP at port 25), providing an alternative. It also situates it within the scan_domain audit, giving clear contextual guidance.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the bar is lower. The description adds value by naming the specific block lists queried and noting that return codes are decoded, but it does not discuss caching behavior, network prerequisites, or rate limits. This is a moderate addition beyond 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 two sentences, front-loaded with the core purpose, and contains no filler or redundant information. Every word earns its place.

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 read-only, idempotent lookup tool with good annotations and an output schema, the description is sufficient. It explains what the tool checks and what it returns (listing status with decoded codes). The presence of an output schema means the description does not need to enumerate return values.

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 fully describes all parameters. The description does not add any parameter-level semantic information (e.g., how format or force_refresh interacts with behavior), so it stays at the baseline for high schema coverage.

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 states the verb 'Check' and the resource 'domain reputation against DNS-based Domain Block Lists', naming specific lists (Spamhaus DBL, URIBL, SURBL). This is specific and distinguishes it from sibling tools that check other reputation sources, such as check_rbl for IP-based block lists.

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 the tool is for domain-level block lists but does not explicitly state when to use it versus alternatives like check_rbl, check_mx_reputation, or check_realtime_threat_feed. It gives context but no exclusions or direct comparisons, so usage guidance is only implied.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description adds meaningful behavior: probing common selectors, validating algorithm types (RSA-1024/2048, Ed25519), and reporting key strength. It also implies DNS lookups and offers a cache-bypass concept via the force_refresh parameter. No contradiction with 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?

Three sentences, front-loaded with the main action, with no redundant wording. Each sentence adds value: what it does, what it validates, and when to use it.

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 description fully explains the tool's purpose and behavior in the context of an email security audit. With an output schema present and clear annotations, the description does not need to detail return values or safety. It is complete for a read-only lookup 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 coverage is 100%, with each parameter already well-described. The description adds minimal extra meaning beyond the schema, though 'probes common selectors' reinforces the selector parameter's behavior. Baseline of 3 is appropriate given the schema does the heavy lifting.

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 states the tool looks up DKIM records, probes common selectors, validates signing algorithms, and reports key strength. It distinguishes itself from sibling tools like check_dmarc and check_spf by focusing on DKIM-specific cryptographic validation.

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 explicitly says 'Use to verify that outbound email signatures are cryptographically sound' and notes it is 'Part of the scan_domain audit,' giving clear context for when it should be used. It does not explicitly name alternatives or exclusions, but the tool's specific purpose is evident.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds value by specifying what the tool reports (enforcement, alignment, reporting destinations) and framing it as part of a scan_domain audit. No contradiction with 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?

Two sentences front-load the primary purpose and immediately provide distinguishing sibling comparisons. Every phrase contributes meaning without redundancy, fitting the 'part of scan_domain audit' context in a natural way.

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 output schema exists and annotations already cover safety/idempotency, the description is complete for agent decision-making. It clarifies the domain of operation, expected outputs, and relationship to sibling tools, so no critical context 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 parameters are already fully documented. The description adds context for the domain parameter by implying what the lookup does, but it does not add meaning for format or force_refresh 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?

The description starts with a specific verb+resource ('Look up and validate the DMARC record for a domain') and lists concrete outputs (enforcement level, alignment mode, reporting destinations). It also explicitly distinguishes itself from check_shadow_domains and assess_spoofability, which clarifies uniqueness among 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 states when to use the tool ('Use to determine a domain's DMARC enforcement level, whether it sends aggregate reports, or if it is protected against email impersonation') and names two alternatives with their differing purposes. It does not explicitly state a when-not-to-use scenario, but the alternative guidance is strong.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about reporting algorithms and flagging deprecated ones, but does not mention caching behavior or force_refresh implications, which would be extra value beyond 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 three sentences with no filler: purpose, examples/behavior, and usage. It is front-loaded with the primary action and every sentence provides value.

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 output schema exists, so return details are covered. The description addresses purpose, usage, and a key behavioral nuance (independence from chain validation), making it complete for a read-only audit 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%, so parameters are already well-documented in the schema. The description does not add additional parameter-specific meaning, so 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.

Purpose5/5

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

The description clearly states the tool audits cryptographic strength of DNSKEY signing algorithms, provides concrete examples (RSA/SHA-1, ECDSA P-256, etc.), and explicitly distinguishes it from chain validation, making it distinct from siblings like 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 Guidelines5/5

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

Explicit usage guidance is provided: 'Use when asked what algorithm is used for DNSSEC signing keys, or if deprecated DNSKEY algorithms are in use.' It also clarifies independence from chain validation, helping the agent decide when to use this tool over alternatives.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
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, covering the safety profile. The description adds useful context about the validation method (DNSKEY/DS records) and what it reports (enabled/validating), but does not discuss caching or output details, which are partially handled by 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.

Conciseness5/5

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

The description is three sentences long and front-loaded with the core purpose. Each sentence adds meaningful detail (verification method, reporting, audit context) without redundancy or fluff.

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 rich output schema and annotations, the description provides sufficient context. It explain the tool's role in scan_domain audit and the validation mechanism. It could mention specific sibling relationships, but that is not strictly required for completeness.

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% because all three parameters (domain, format, force_refresh) have descriptions in the schema. The tool description does not add parameter-specific information, 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 clearly states 'Check DNSSEC status for a domain' with a specific verb and resource, and elaborates on validating DNSKEY/DS records and reporting enabled/validating status. This distinguishes it from sibling tools like check_dnssec_chain and check_dnskey_strength by focusing on overall status.

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 provides clear context by noting 'Part of the scan_domain audit', indicating when this tool is used. However, it does not explicitly mention alternative tools or when not to use it, though the purpose is narrow enough to imply appropriate usage.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety. The description adds substantive behavioral detail: tracing DS/DNSKEY records and algorithm usage at each zone level, and providing a step-by-step delegation path, which goes beyond what annotations alone 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?

The description is two sentences, front-loaded with the action, and contains no filler. It efficiently states both what the tool does and when to use it, earning every word's place.

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 has a rich output schema, comprehensive annotations, and full schema coverage. The description covers purpose and usage sufficiently, and the output schema handles return values, so the description is complete for agent selection and 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%, with each parameter (domain, format, force_refresh) already documented. The description does not add further parameter-level meaning, 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?

The description uses a specific verb 'walk' and clearly identifies the resource: 'full DNSSEC chain of trust from the DNS root down to the target domain'. It distinguishes from sibling tools like check_dnssec by emphasizing the full chain trace and DS/DNSKEY record tracing at each zone level.

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?

Explicit usage guidance is provided: 'Use when asked to trace the chain of trust from the DNS root, or to see the full DNSSEC delegation path step by step.' This gives clear context for selection, though it doesn't mention exclusions or alternative tools by name.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnly, openWorld, and idempotent behavior, lowering the bar. The description adds valuable behavioral detail beyond annotations: it performs multiple query rounds, compares IP sets and TTLs, and describes the detection heuristic. It does not discuss caching behavior or rate limits, but the core multi-round approach is clearly disclosed.

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 purpose and method, with zero filler. The first sentence states what it does and how; the second elaborates the detection mechanism. Every word earns its place.

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, annotations covering safety and idempotence, and a description explaining the behavioral heuristic, the tool is fully contextualized. The agent understands what it checks, how it checks, and what kind of result to expect.

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 does not repeat parameter definitions but indirectly references the 'rounds' concept via 'multiple rounds of A/AAAA queries'. It adds no syntax or format detail beyond the schema, which is acceptable given full schema coverage.

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, action-oriented verb ('Detect') and clearly identifies the resource and scope: fast-flux DNS behavior via multi-round A/AAAA queries. It distinguishes itself from sibling DNS-check tools by focusing on IP rotation and TTL comparison.

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 context for when to use: to identify botnet or malicious infrastructure hiding behind rapidly rotating DNS answers. It does not explicitly name alternative tools or state when not to use it, but the purpose-driven context is strong enough for an agent to select it appropriately.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds valuable context by listing exactly which headers are inspected and what security weaknesses are flagged (unsafe-inline, wildcards, etc.), plus CDN/WAF interception detection. This goes beyond the annotations without contradicting 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?

The description is a single, information-dense paragraph that front-loads the core purpose and then lists specifics. Every sentence earns its place, and the length is appropriate given the number of headers and checks involved. No fluff or redundant phrasing.

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, an output schema exists, and annotations cover safety, the description fully explains what the tool inspects and what it returns (per-header findings). It also situates the tool within the broader scan_domain audit. No critical missing context for an agent to select and invoke 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 description coverage is 100%, so the parameters (domain, format, force_refresh) are already well-documented. The description does not add extra parameter semantics beyond what the schema provides, so 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.

Purpose5/5

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

The description clearly states the tool audits a domain's browser-facing HTTP security headers over HTTPS, enumerating specific headers and concerns (CSP, X-Frame-Options, etc.). This specific verb+resource combination distinguishes it from sibling tools like check_ssl or check_dmarc, making the purpose unambiguous.

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 implies usage as part of the scan_domain audit and clarifies the scope (browser-facing HTTP security headers). However, it does not explicitly mention when to use this tool versus alternatives or provide exclusions, so it stops short of the 'explicit when/when-not/alternatives' standard.

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

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds context about what the tool detects (character-substitution and visual-confusion domains, phishing risk) and that it finds 'active' domains, which is useful behavioral information beyond 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 three sentences with no wasted words. It front-loads the primary action ('Detect active typosquat...'), then clarifies scope, and finally differentiates from siblings. Every sentence earns its place.

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, schema (100% param coverage), and a likely output schema (not shown but flagged as present), the description is quite complete. It covers detection scope, excludes related tools, and notes 'active' domains. It doesn't mention limitations like inability to detect unregistered lookalikes, but that's largely implied by 'active' and not a major 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 parameters are already fully documented in the schema. The description mentions 'active' and 'registered by attackers' which provides domain context, but doesn't add parameter-specific meaning 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?

The description uses a specific verb ('Detect') and resource ('active typosquat and lookalike/homoglyph domains'), clearly stating the tool's purpose. It explicitly distinguishes itself from sibling tools check_shadow_domains and discover_brand_domains, making the scope precise.

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?

The description tells when to use the tool (to detect typosquat/phishing domains) and explicitly names alternatives for related but different tasks ('Distinct from check_shadow_domains... and discover_brand_domains...'). This gives clear guidance on selecting this tool over its siblings.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already provide the safety profile (read-only, idempotent, non-destructive), and the description adds meaningful behavioral details: the DNS query, policy fetch, and reported fields (mode and MX coverage). This goes beyond simple annotation restatement, though it could mention potential failure modes if no policy exists.

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 concise sentences: purpose, mechanism, usage/alternative. No filler or redundancy; information is dense and well-organized.

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 annotations covering safety, the description still contributes critical uniqueness: the exact DNS mechanism, report modes, and differentiation from a sibling tool. No significant gaps for this tool's complexity.

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

Parameters3/5

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

The schema descriptions already cover all parameters, so the baseline is 3. The description adds minor context by showing the DNS query pattern for the domain parameter, but doesn't dive deeper into format or force_refresh beyond what the schema 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 clearly states the tool's function: checking whether a domain enforces SMTP TLS via MTA-STS. It specifies the mechanism (queries _mta-sts.<domain>, fetches policy file) and output (mode and MX coverage), and distinguishes it from check_dane by mentioning TLSA pinning.

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 this tool ('verify whether inbound SMTP is protected against TLS downgrade or MITM') and names a specific alternative (check_dane) with the distinction. Also notes it is part of the scan_domain audit, providing appropriate context.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior3/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 clear. The description adds useful functional context (identifies mail servers and provider) but does not go beyond the schema in disclosing behavioral details like caching behavior, which is already implied by the force_refresh parameter. This is adequate but not rich.

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 the core verb and resource. Each sentence earns its place: action, outcome/provider identification, and usage context. No redundancy or 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?

Given a rich output schema, complete parameter documentation, and strong annotations, the description fully covers what the tool does, when to use it, and its role in the scan_domain audit. There are no significant missing context hints for the 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 coverage is 100%, and each parameter already has a descriptive declaration, so the baseline is 3. The description adds no new parameter-specific meaning beyond what the schema provides. It does not need to compensate for any gaps.

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: 'Look up MX records for a domain.' It clearly distinguishes itself from sibling tools like check_mx_reputation by focusing on mail server identification and provider detection. The mention of Google Workspace, Microsoft 365, and Proofpoint adds concrete purpose.

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 explicitly states when to use the tool: 'Use when asked which email provider hosts inbound mail for a domain, or to see MX record configuration.' It also notes it is 'Part of the scan_domain audit,' providing context. However, it does not mention when not to use it or name specific alternatives, so it falls 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_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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context by listing the specific blocklists checked (Spamhaus, Barracuda, SORBS, and other RBLs) and stating that reverse DNS is verified. It also implicitly conveys that the tool performs multiple network lookups and may rely on MX resolution, which is useful beyond 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 exceptionally concise at two sentences, with the primary action stated first. Every phrase earns its place: it covers the main function, the secondary verification (reverse DNS), and usage guidance with an alternative. There is zero wasted wording, making it easy for an agent to parse quickly.

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 that an output schema exists, the description doesn't need to explain return values. The tool is of moderate complexity, and the description adequately covers purpose, usage context, and distinguishes from a sibling tool. It doesn't mention potential rate limits or prerequisite conditions, but the annotations (openWorldHint, idempotentHint) fill in some gaps. This is slightly above the minimum but not exhaustive.

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

Parameters3/5

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

The input schema has 100% coverage, so the baseline is 3. The description adds some semantic value by clarifying that the 'domain' parameter is used to resolve MX hosts ('mail server (MX) IP addresses'), which isn't obvious from the schema's 'Domain to check.' However, it doesn't elaborate on the 'format' or 'force_refresh' parameters beyond what the schema provides, so it doesn't significantly exceed 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?

The description clearly states the tool's function with a specific verb+resource+scope: 'Check whether the mail server (MX) IP addresses are listed on spam blocklists... Also verifies reverse DNS for MX hosts.' It also explicitly distinguishes the tool from sibling check_rbl, saying 'distinct from check_rbl which checks a specific IP directly.' This makes the purpose unambiguous and differentiates it from similar 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?

The description provides explicit usage guidance: 'Use when you want to know if your mail server IP is blacklisted, or if your MX is on any blocklist.' It also names the alternative tool (check_rbl) and explains the difference, which tells the agent when NOT to use this tool. This is exactly what the dimension asks for.

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

Look up NS (nameserver) records for a domain. Identifies the DNS nameserver provider (Cloudflare, Route53, NS1, etc.) and shows delegation and redundancy. Use to find out which authoritative nameserver or DNS hosting service is used for a domain. Part of the scan_domain audit.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the tool 'shows delegation and redundancy' and identifies the provider, which is useful context. However, it doesn't go beyond this to explain caching behavior, rate limits, or other operational traits, so with annotation coverage, 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 three sentences, each with a distinct purpose: the operation, the specific outputs (provider, delegation, redundancy), and the use case. It is front-loaded with the core action and contains no filler or repetitive 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 a read-only lookup tool with only 3 parameters, an output schema, and comprehensive annotations, the description fully covers purpose, output semantics, and context (part of scan_domain audit). There are no significant gaps that would prevent an agent from selecting and invoking 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?

All 3 parameters have detailed schema descriptions, with 100% coverage. The description's mention of 'delegation and redundancy' hints at what output the format parameter might control, but it doesn't add significant meaning beyond the schema. Baseline 3 applies because the schema does the heavy lifting.

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 ('Look up') with a clear resource ('NS records for a domain') and distinguishes itself from sibling tools by detailing its unique focus on identifying the DNS provider and analyzing delegation/redundancy. It goes beyond a mere label and clearly states what the tool does.

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 use case: 'Use to find out which authoritative nameserver or DNS hosting service is used for a domain.' It also places the tool in context as part of the scan_domain audit. However, it doesn't explicitly mention when not to use this tool or name alternatives like check_authoritative_dns_infra, so it falls 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_nsec_walkabilityA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds meaningful context beyond annotations by specifying what the tool inspects (NSEC3PARAM configuration) and the specific detection outputs (plain NSEC, weak NSEC3, opt-out flags), which helps the agent anticipate 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?

The description is just two sentences, front-loaded with the primary verb and purpose. Every phrase earns its place: the analysis method ('NSEC3PARAM configuration') and the specific detection categories are included without fluff.

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 explain return values. It sufficiently covers the tool's purpose and detection capabilities. It could mention cache behavior or refresh implications, but force_refresh is documented in the schema, so the description remains complete for a read-only check 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%, so parameters are already fully documented in the input schema. The description does not add parameter-level detail beyond the schema, but the baseline of 3 applies given the high schema coverage.

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 is specific and actionable: 'Assess zone walkability risk' names the verb and resource, while 'by analyzing NSEC3PARAM configuration' and 'Detects plain NSEC zones, weak NSEC3 parameters, and opt-out flags' clearly delineate the tool's scope. It distinguishes itself from sibling check_* tools (e.g., check_dnssec) by focusing on NSEC walkability.

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 a use case (assessing walkability risk) but does not explicitly state when to prefer this tool over alternatives like check_dnssec_chain or check_zone_hygiene. No exclusions or alternative suggestions are provided, so guidance is only implied rather than explicit.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the mail-server-specific purpose and audit context but does not disclose other behavioral traits like caching behavior or network dependencies beyond what the schema 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 short sentences with no filler. The primary action is front-loaded, and the second sentence adds useful context without 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?

Given the low complexity (3 parameters, 1 required, output schema present) and strong annotations, the description is sufficient. It explains the tool's role in the domain audit and the schema covers the invocation details, though it could mention explicit exclusions or alternative tools.

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 parameters having clear descriptions. The tool description does not add parameter-specific meaning beyond the schema, 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 ('Verify') and resource ('forward-confirmed reverse DNS (PTR/FCrDNS) for mail servers'), clearly distinguishing it from sibling DNS-check tools like check_spf or check_dmarc. It also notes it is part of the scan_domain audit, giving additional context.

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 'Part of the scan_domain audit' implies use within a broader domain audit, but there is no explicit guidance on when to use this tool versus alternatives or when to avoid it. The description gives context but leaves selection to inference.

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 7 DNS-based Real-time Blocklists (SpamCop, UCEProtect, Mailspike, Barracuda, PSBL, SORBS). Resolves MX hosts to IPs first.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

The description discloses that it resolves MX hosts to IPs first, a behavioral detail beyond the read-only annotation. It also enumerates the exact blocklists used, adding useful context. However, it does not mention caching, rate limits, or other behavioral traits, though annotations cover the safety profile.

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 sentences long, front-loaded with the main purpose and followed by specific details. Every word serves a purpose; there is no filler or repetition.

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 description, combined with the schema and annotations, provides a comprehensive picture. It covers what the tool does, the specific RBLs, the resolution step, and the safety profile. The output schema handles return-value documentation, so the description is 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?

All three parameters have descriptions in the schema, so the baseline is 3. The description contributes minimal extra parameter semantics, only implying that 'domain' is the domain to resolve for MX IPs. It does not explain 'format' or 'force_refresh' 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 clearly states the tool checks MX server IP reputation against seven specific DNS-based RBLs, naming them explicitly. It also notes the MX resolution step, making the scope unambiguous and distinguishing it from generic MX checks or other reputation tools.

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 conveys a clear use case—checking a domain's mail server reputation against RBLs—but does not explicitly state when to prefer this over sibling tools like check_mx_reputation or check_dbl. No exclusions or alternative guidance is provided, so usage is implied rather than explicit.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
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 valuable behavioral context: the feed is curated via intel-gateway, operator deployment is required, and it degrades gracefully to info when unprovisioned. No contradiction detected.

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 primary action, followed by critical differentiators. Every word adds value: the feed name, distinction from DNSBL, deployment restriction, and degradation behavior. 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?

For a simple lookup tool with a rich output schema and clear annotations, the description covers purpose, differentiation, and operational constraints. It does not explain what 'info' means when unprovisioned, but that is a minor gap. Overall, it is complete enough for an agent to select and invoke 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 descriptions cover 100% of parameters, each with meaningful explanations (domain, format, force_refresh). The description does not add parameter-specific semantics beyond the schema, but it provides context about the data source and operational behavior, which informs usage. Since schema coverage is full, a baseline of 3 is appropriate.

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

Purpose5/5

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

Description uses a specific verb ('Check') and resource ('domain against BlackVeil real-time threat intelligence'), and explicitly distinguishes itself from DNSBL checks. This makes the tool's function clear and separates it from sibling tools like check_rbl and check_dbl.

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 provides clear usage context: it is distinct from DNSBL checks, operator-deploy only, and degrades to info when unprovisioned. While it names an alternative category (DNSBL), it doesn't list specific alternative tool names, but the guidance is still actionable.

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

check_resolver_consistencyA
Read-onlyIdempotent
Inspect

Check DNS consistency across 4 public resolvers.

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

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

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds that exactly 4 public resolvers are used. However, it does not explain what 'consistency' means in terms of output or behavior (e.g., whether it reports mismatches only, or includes 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 a single, focused sentence that is front-loaded and contains no wasted words. It conveys the core function quickly and clearly.

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?

Given there is no output schema, the description should hint at what the result looks like, but it does not. The tool is simple and annotations cover safety, but the lack of return-value context leaves a gap for the 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 coverage is 100%; each parameter already has a description. The tool description adds no additional parameter semantics 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.

Purpose5/5

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

The description uses a specific verb ('Check') and clearly identifies the resource ('DNS consistency across 4 public resolvers'). It distinguishes this tool from sibling DNS-checking tools like check_dnssec or check_ns by focusing on cross-resolver consistency.

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 when DNS consistency across public resolvers is needed, but it does not explicitly state when to choose this tool over alternatives or when not to use it. No exclusions or alternative-recommendations are provided.

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

Check the DNS root server set against official root hints, root glue, delegation, serial, and DNSKEY cross-root evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds value by specifying the behavioral scope—what evidence sources are consulted (root hints, root glue, delegation, serial, DNSKEY). This goes beyond the annotations and gives the agent a concrete understanding of the tool's internal checks.

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 a single, tightly packed sentence that front-loads the action and resource. It contains no filler or redundant phrases. Every word contributes to explaining the tool's purpose, making it highly efficient.

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 simple (one optional parameter), has an output schema, and strong annotations. The description explains the core purpose and evidence types. However, it omits any context about when such a check is relevant or what the output might look like—though the output schema covers return values. Given the available structured metadata, the description is nearly sufficient, but the lack of usage context slightly lowers completeness.

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% for the single parameter 'format', which is described in the schema as 'Output verbosity. Auto-detected if omitted.' The tool description adds no additional parameter semantics, so the baseline of 3 applies. The schema fully documents the parameter, so no gap exists.

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 states the specific verb 'Check' and the resource 'DNS root server set', and enumerates the exact evidence types checked (root hints, glue, delegation, serial, DNSKEY). This makes the tool's purpose unambiguous and distinguishes it from sibling tools like check_dnssec or check_ns, which target different DNS aspects.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any specific context, prerequisites, or exclusions. Given the crowded sibling namespace of check_* tools, the absence of usage differentiation is a clear gap.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds valuable context about the security-relevant behavior (email spoofing), without contradicting the annotations. No hidden side effects are disclosed beyond annotation coverage, but the added risk context warrants a strong score.

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 sentences long and front-loaded with the core action and purpose. Every sentence earns its place—the first defines the tool, the second gives usage context and distinguishes it from a sibling, with no wasted words.

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 read-only lookup tool with rich annotations, a complete input schema, and an output schema present, the description fully covers what the tool does, when to use it, and how it differs from a similar option. Nothing essential is missing for an agent to select and 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?

The input schema provides 100% parameter documentation, including descriptions for domain, format, and force_refresh. The description does not add extra parameter-level meaning beyond what schema already provides, so 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.

Purpose5/5

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

The description states a specific action ('Find alternate TLD variants of a domain') with a clear purpose ('weak or missing email authentication and could be used to spoof email'). It also explicitly distinguishes itself from the sibling tool check_lookalikes, so there is no ambiguity about its scope.

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?

The description gives explicit when-to-use guidance: 'Use when asked about TLD variants with email auth gaps'. It also names the alternative: 'distinct from check_lookalikes which detects typosquat/homoglyph impersonation domains'.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already signal safety (readOnly, idempotent, non-destructive). The description adds context about outputs—listing authorized senders, flagging syntax errors, and revealing trust surface—without contradicting annotations. This goes beyond the schema explanations.

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 the core action. Each sentence adds distinct value: purpose, outputs, and usage context. No filler or redundancy.

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 read-only validation tool with a comprehensive schema and output schema, the description sufficiently explains what it does and when to use it. It covers the trust surface aspect, which gives the agent useful context. No major gaps.

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% with descriptions for domain, format, and force_refresh. The tool description does not add additional meaning about parameters; the schema already carries the burden. 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 clearly states the tool looks up and validates SPF records for a domain, enumerating specific outputs (IPs, third-party senders, syntax errors, trust surface). This specific verb+resource combination distinguishes it from sibling tools like check_dmarc 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?

Provides explicit guidance: 'Use when you need to know who is permitted to send email as a domain.' It also situates the tool as part of the scan_domain audit. However, it does not mention when not to use it or point to alternatives like resolve_spf_chain.

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 ~16 common SRV record prefixes (email, calendar, messaging, web, directory) in parallel. Returns discovered services and flags insecure service advertisements — e.g. plaintext IMAP/POP3 without an encrypted variant. Use when asked to map DNS-visible services or flag insecure service advertisements.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safe-read nature is clear. The description adds valuable context beyond annotations: it probes ~16 prefixes in parallel and specifically flags plaintext IMAP/POP3 without an encrypted variant. This gives deeper insight into the tool's execution and output without contradicting 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 exactly two sentences: the first delivers the core function and output, the second gives a crisp usage directive. No filler or redundant phrasing, and the key information 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?

The tool has a moderate complexity (3 params, one enum, output schema present), and the description covers the essential aspects: purpose, scope (~16 prefixes), return type (discovered services), a notable safety behavior (flagging insecure ads), and usage guidance. Return formatting is handled by the output schema, so the description need not elaborate. It is complete for an AI agent to select and invoke this 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?

The input schema already describes all three parameters with 100% coverage (domain, format, force_refresh), so the baseline is 3. The description does not add additional parameter-specific semantics beyond what the schema provides, but it does frame the domain parameter's role by mentioning prefix probing. Overall, no significant additional meaning is contributed.

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 states a specific verb ('Map') and resource ('a domain's DNS-visible service footprint' via SRV record prefixes). It explicitly lists what is returned (discovered services) and the key behavior of flagging insecure advertisements, which distinguishes it from the many sibling 'check_*' tools focused on other record types (e.g., check_mx, 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 Guidelines4/5

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

The description provides an explicit 'Use when ...' directive covering both mapping DNS-visible services and flagging insecure service advertisements. It does not, however, mention exclusions or recommend alternative tools for cases where the user might actually need MX, SPF, etc., so it stops short of the strongest level.

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. Negotiated TLS protocol versions and cipher suites are NOT returned. Use to verify HTTPS/HSTS configuration and certificate issuer/expiry. Part of the scan_domain audit.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior5/5

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

The description discloses key behavioral details beyond the annotations: certificate metadata is read from public CT logs and may differ from the currently served certificate, and TLS protocol versions/cipher suites are NOT returned. This is valuable contextual information not covered by readOnlyHint or idempotentHint.

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, front-loaded with the main purpose, followed by a caveat, exclusions, and usage. Each sentence adds necessary information with no redundancy or fluff.

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 description covers all critical aspects: primary checks, the CT log caveat, what is not returned, and intended usage. With an output schema present and annotations declaring safety profile, this is sufficient for an agent 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 coverage is 100%, with descriptions for all three parameters. The tool description does not add extra parameter-level meaning 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 clearly states the tool checks HTTPS/TLS posture with specific checks (reachability, HSTS policy, HTTP-to-HTTPS redirect) and certificate metadata from CT logs. It distinguishes itself from sibling tools by focusing on the TLS/HTTPS aspect and notes it is part of the scan_domain audit.

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 provides an explicit use case: 'Use to verify HTTPS/HSTS configuration and certificate issuer/expiry.' It does not explicitly name alternative tools or exclusions, but the intended context is clear and practical.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description is not burdened with safety disclosure. The description adds value by explaining the analytical process (SPF include chain analysis) and that it's part of the scan_domain audit. No contradiction with 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 concise: two sentences plus a contextual note. It front-loads the purpose, then gives usage guidance, and ends with audit context. Every sentence contributes meaning without redundancy.

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 annotations covering safety, the description sufficiently covers purpose, usage, and context. It also ties the tool to the broader scan_domain audit, making it clear where this fits in the workflow. No critical gaps.

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 documented in the schema itself. The description does not add additional semantic value 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 clearly states the tool detects SubdoMailing risk by analyzing the SPF include chain for dangling or hijackable subdomains. It distinguishes itself from sibling tools like check_subdomain_takeover (which focuses on actual subdomain takeover) and check_spf (SPF record validation) by specifying the exact risk and mechanism.

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 provides when-to-use guidance: '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.' This clearly signals the intended use case and differentiates from other checks.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior5/5

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

Beyond the read-only and idempotent hints, the description discloses key behavioral traits: the default 15-name built-in subdomain list, the ability to supply an explicit subdomain list (capped at 1000), cache-bypassing via force_refresh, and the provider family detection scope. This adds substantial context not captured by 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?

The description is dense but efficient, front-loaded with the core purpose and followed by operational details. Every sentence adds value: provider coverage, usage trigger, pairing advice, and a caveat. No filler or redundancy.

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 (16 provider families, multiple parameters, output schema), the description is remarkably complete. It covers what the tool does, when to use it, how to expand the candidate set, parameter options, and caching behavior. The annotations and schema handle safety and return format, allowing the description to focus on unique value.

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% (baseline 3), but the description enriches the subdomains parameter by explaining its source (CT enumeration or brand-audit discovery) and adds practical context for force_refresh (useful after DNS changes). It doesn't explain the format enum, but the schema already does.

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 states the tool's purpose with a specific verb ('Sweep') and resource (subdomains), and explains the vulnerability type (dangling CNAMEs leading to subdomain takeover). It differentiates from sibling tools by specifying the detection of 16 provider families, making it distinct among the many check_* 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?

It explicitly states when to use the tool ('Use when asked if subdomains are pointing to deprovisioned cloud services') and provides a concrete pairing recommendation with discover_subdomains, including a caveat about the CT sample not being a full inventory. This gives clear usage context and alternatives.

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

check_svcb_httpsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds context about validating modern transport capability and RFC compliance, but no additional behavioral details like caching or rate limits. With annotations present, this is acceptable.

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 concise sentences that front-load the primary purpose and provide context. No wasted words or redundancy.

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 simple, read-only, and has full schema plus output schema. The description covers what it does and its role in scan_domain, making it complete for selection and 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?

Input schema covers 100% of parameters with descriptions. The description adds no further parameter detail; the schema already explains domain, format, and force_refresh semantics, so the baseline holds.

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 states the tool validates HTTPS/SVCB records per RFC 9460, with a specific verb and resource. It distinguishes itself from siblings like check_dane_https by focusing on transport capability advertisement.

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 notes it is 'part of the scan_domain audit,' implying usage during domain scans, but does not explicitly compare with alternatives or state when not to use it. This is implied rather than explicit.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare this as read-only, idempotent, and non-destructive, lowering the burden. The description adds valuable behavior details: it queries the specific TXT record, validates the rua destination (mailto:/https:), and flags missing/duplicate records or invalid URIs. This gives the agent a clear model of what the tool will do beyond the safe-operation hints.

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 focused sentences, with the main purpose front-loaded. Each sentence adds distinct information: the check, the validation behavior, and its complementary role. No filler or redundant phrasing.

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 low complexity, rich annotations, full schema coverage, and presence of an output schema, the description is complete. It explains the DNS query, the validation criteria, typical failure flags, and the audit context. No missing prerequisites or side effects need disclosure for a 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?

Input schema has 100% coverage with all three parameters (domain, format, force_refresh) already described. The tool description does not add extra semantics about these parameters beyond the schema, so the baseline 3 is appropriate. The mention of 'rua= mailto:/https:' is about validation logic, not parameter meaning.

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 starts with a specific action and target: 'Check whether a domain has SMTP TLS Reporting (TLS-RPT) configured.' It clearly identifies the resource (_smtp._tls.<domain>) and differentiates from sibling tools like check_mta_sts or check_dmarc by focusing on TLS-RPT. The inclusion of 'Part of the scan_domain audit' also provides context on its role.

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 states 'Complements MTA-STS by giving visibility into TLS delivery failures,' which gives clear contextual guidance on when to use it—alongside MTA-STS checks. However, it does not explicitly exclude alternatives or mention when not to use it, so it falls short of a full 5.

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

check_txt_hygieneA
Read-onlyIdempotent
Inspect

Audit TXT records for stale entries and SaaS exposure.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint as safe, so the safety profile is clear. The description adds the audit focus but does not disclose additional behaviors like caching or result interpretation beyond what annotations 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 a single sentence that is front-loaded with the action verb 'Audit', immediately states the resource, and adds meaningful scope. No unnecessary words.

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 read-only audit tool with a well-documented schema and full annotations, the description is sufficient to understand what the tool does. The output schema exists to handle return values, so that is not a gap. Slightly lacking in usage context but otherwise complete.

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% with rich parameter descriptions, so the baseline is 3. The tool description does not add any extra meaning to parameters; it relies entirely on the schema to explain domain, format, and force_refresh.

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 ('Audit') and resource ('TXT records'), and further clarifies the focus ('stale entries and SaaS exposure'). This clearly distinguishes it from sibling DNS checks like check_spf or check_dmarc.

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 when to use the tool (to audit TXT hygiene) but provides no explicit guidance on when-not-to-use or alternatives among the many sibling DNS tools. There is no mention of how this relates to check_zone_hygiene or other domain-level audits.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
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 description is not expected to repeat that. It adds context about the types of findings (stale SOA, propagation issues) but does not disclose other behavioral traits like cache behavior, timing, or limitations. No contradiction with 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 two sentences, with the key verb and resource front-loaded. Every sentence adds value: the first states what the tool does, the second states when to use it. There is no redundancy or 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?

Given the tool's read-only nature, the presence of an output schema, and fully described parameters, the description covers the essential context: purpose, use cases, and types of issues found. No significant gaps remain for an agent to select and invoke this 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?

The input schema has 100% description coverage for all three parameters, so the schema already carries the semantic weight. The description adds no additional parameter-level meaning, though it hints at the audit topics that relate to parameters like force_refresh. 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 ('Audit') and resource ('DNS zone hygiene'), and clearly enumerates what it identifies (sensitive/forgotten subdomains, stale SOA records, propagation issues). It distinguishes itself from sibling tools by focusing on overall zone hygiene rather than a single DNS record type.

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 provides clear usage context: 'Use to find any sensitive subdomains that should not be publicly visible, or to audit overall DNS zone cleanliness.' It does not mention exclusions or alternative tools, so it stops 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.

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

ParametersJSON Schema
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.
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds meaningful semantic context by defining 'fixed policy baseline' (compliance requirements) and excluding drift/regression analysis, which prevents misuse and clarifies the tool's scope. No contradiction with 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?

Two sentences, front-loaded with the core action ('Compare...'), followed immediately by usage guidance with alternative tool names. No redundant or filler content.

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 has a nested baseline object and no output schema, but the description plus rich schema provide sufficient context for selection and invocation: it explains the compliance purpose, explicitly excludes drift and multi-domain comparison, and the schema fully documents parameters. A minor gap is not describing the output format, but this is partially mitigated by 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%, so domain, baseline (including all nested require_* flags, max_* fields, grade/score floors), format, and force_refresh are fully documented. The description text does not add parameter-level detail, but the schema carries the burden, 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 states a specific verb+resource+outcome: 'Compare a domain's current security configuration against a fixed policy baseline to determine compliance.' It also distinguishes from sibling tools by explicitly naming analyze_drift and compare_domains for other use cases.

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?

Explicit when-to-use and when-not-to-use guidance is provided: '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).' The schema's baseline description reinforces this by clarifying the baseline is a policy object, not a prior scan.

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.

ParametersJSON Schema
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.
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description need not repeat safety traits. It adds output details (relative scores, gaps, weaknesses) but does not disclose behavioral traits like caching, rate limits, or side effects. This matches the baseline for a description that adds some value without rich behavioral context.

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 sentences, front-loaded with purpose, then output details, then usage guidance. Every sentence earns its place with no redundancy or fluff.

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?

No output schema exists, so the description must partially explain return values. It does mention 'relative scores, category gaps, and unique weaknesses,' which is a useful summary, though not exhaustive. Annotations cover safety, and schema covers parameters. It is adequately complete for a comparison tool, but lacks a precise output format description.

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 baseline is 3. The description does not add meaning beyond the schema for domains, format, or force_refresh. The only implied semantic is the 2–5 domain limit, which is already in the schema. No compensation needed, so baseline holds.

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 states a specific verb ('comparison') and resource ('domains'), and specifies output: 'relative scores, category gaps, and unique weaknesses.' This distinguishes it from sibling tools like compare_baseline, which likely compares against a baseline rather than other domains.

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?

Explicit usage context is provided: 'Use when comparing your security posture against a competitor, or doing a head-to-head comparison between multiple domains.' However, it does not mention alternatives or when not to use it, so it falls short of the highest score requiring explicit when-not/alternatives.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior, so the bar is lower. The description adds value by specifying the return fields (ASN, prefix, country, registry, organization) and the flagging of high-risk hosting ASNs, which goes beyond annotation data.

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 concise sentences deliver purpose, return fields, and a distinctive behavior with no redundancy. Every sentence earns its place.

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 lookup tool, the description covers purpose, returns, and a unique flagging behavior. Combined with rich schema and annotations, it is sufficiently complete, though it doesn't detail how IPs are resolved or the exact impact of 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?

Input schema covers 100% of parameters with descriptive text, so the baseline is 3. The description does not add parameter-specific meaning beyond what the schema already provides; it focuses on output rather than input.

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 states the tool maps domain IPs to ASNs via Team Cymru DNS, with a specific verb-resource pair. It distinguishes from sibling DNS check tools by focusing on ASN attribution and listing return fields (ASN, prefix, country, registry, organization).

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 implies usage for ASN lookups and clarifies it works via Team Cymru DNS, which gives clear context. It does not explicitly exclude alternatives like rdap_lookup, but the purpose is specific enough to guide selection.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
watchIdYesWatch ID returned by register_brand_audit_watch.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior5/5

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

The description adds substantial behavior beyond the destructiveHint annotation: it emphasizes permanent deletion, reveals that the watchId is owner-scoped (a non-owned watch surfaces as notFound), and states that a confirmation is returned. These are specific, useful behavioral disclosures not captured by 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 two sentences, front-loads the action, and contains no fluff. Every clause adds meaningful information about the deletion behavior.

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 simple delete tool with only one parameter, the description covers the essential aspects: action, scope, error handling, and return value. The annotations handle safety profile, and an output schema exists, so nothing significant 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?

The schema already fully documents the single parameter (watchId) and even indicates it comes from register_brand_audit_watch. The description only mentions 'by watchId' without adding additional semantic detail, so the baseline of 3 (full schema coverage) 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 ('removes') and identifies the exact resource ('recurring brand-audit watch') with a clear identifier ('watchId'). It distinguishes itself from sibling tools like list_brand_audit_watches and register_brand_audit_watch by focusing on deletion and clarifying owner-scoping.

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 context that this is the deletion counterpart to registration, but it does not explicitly state when to use it versus alternatives. Since no other delete tool exists among siblings, this is sufficient, though it could have explicitly said 'use when you want to stop a recurring audit watch.'

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare the operation read-only (readOnlyHint=true, destructiveHint=false, idempotentHint=true), so the description doesn't need to restate that. It adds useful behavioral context beyond annotations: the tool aggregates multiple signal types and is highly sensitive to domain normalization (the verbatim-domain warning). No contradiction with 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?

Three sentences, each purposeful: purpose, usage trigger, and a critical behavioral instruction. No filler, front-loaded, and the caps emphasis on the verbatim-domain rule is effective. Every sentence earns its place.

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 complex (12 params, output schema), but the description covers the core selection criteria and the most critical execution detail (verbatim domain). The schema and output schema handle the remaining parameter and return-value detail. It could mention the tiered-mode complexity, but that is already documented in the discovery_mode parameter. Adequate for an overview.

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

Parameters3/5

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

The input schema provides 100% coverage with detailed descriptions for all 12 parameters, so the description adds marginal semantic value. The only reinforcement is the verbatim-domain instruction, which already appears in the domain parameter's schema description. This is a repeat of structured data, not new insight.

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+resource ('Discover all domains that belong to a brand's portfolio') and clearly distinguishes the tool's scope from siblings like discover_subdomains by focusing on brand portfolio aggregation. The inclusion of signal types (certificate, DNS, redirect, mail-policy) further pins down what the tool does.

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 explicitly states when to use the tool: 'Use when asked what domains are part of a brand portfolio, or to find all domains related to a brand.' It also provides a critical usage instruction (pass the exact seed domain verbatim). However, it does not mention exclusions or alternatives for cases where the tool should not be used, such as subdomain discovery.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationIdYesOperation ID returned by discover_brand_domains_start.
Behavior4/5

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

Annotations already cover read-only and non-destructive behavior. The description adds valuable behavioral context beyond annotations: the notReady interim state, eventual result delivery, and 'Owner-scoped' access restriction. This transparently sets expectations for an async polling operation.

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, no superfluous text. Every phrase earns its place: what is fetched, the source run, the polling states, and the scoping constraint. Information is front-loaded and immediately actionable.

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 async polling tool, the description covers the core lifecycle (in-flight vs. complete), the data returned, and the owner scope. It lacks an explicit output structure, but given no output schema exists, the reference to 'discovery CheckResult' offers enough context for a competent agent. Sibling tools further clarify its role.

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% with a single parameter (operationId) that is already described as 'Operation ID returned by discover_brand_domains_start.' The description reinforces this by referencing the start tool, but adds no new semantic 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?

The description clearly states a specific verb ('Fetch') and resource ('ranked candidate domains (the discovery CheckResult)') tied to an async run. It explicitly names the starting tool (discover_brand_domains_start), distinguishing this findings-retrieval tool from sibling tools like the start/status 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?

The description explains when to use the tool: after starting an async run, and it describes the polling behavior ('Returns notReady while the discovery is still in-flight; the discovery result once complete'). It does not explicitly name alternatives or exclusions, but the lifecycle context and sibling names make the usage clear.

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.

ParametersJSON Schema
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.
Behavior4/5

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

Annotations indicate non-read-only, non-destructive, open-world, and non-idempotent. The description adds valuable beyond-annotation detail: it returns { auditId, queuedAt, etaSeconds } immediately, indicates queued execution, and mandates polling. This gives a concrete async lifecycle picture, though it does not mention side effects like the actual background DNS scanning.

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 dense sentences: the first states the core action and the sibling rationale, the second gives the exact return contract and follow-up tools. Every clause earns its place 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?

For an async start tool with 12 parameters and no output schema, this description provides the entire agent-facing workflow: immediate response shape, polling via status, and retrieval via findings. It is complete enough for an agent to invoke and track the operation 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 descriptions cover 100% of parameters, so the baseline is 3. The description only says 'Same args as discover_brand_domains' and emphasizes EXACT seed domain, which partially echoes the schema's existing 'Do NOT normalize' note. It adds no meaningful parameter-level information 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 uses the specific verb 'Start' and the resource 'async brand-domain discovery,' clearly distinguishing it from the synchronous discover_brand_domains. It also emphasizes the EXACT seed domain requirement, making the tool's purpose unambiguous.

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 names the async sibling discover_brand_domains and explains why to use this version (sync can run ~24s and time out interactive clients). It also prescribes the post-start workflow: poll with discover_brand_domains_status and fetch with discover_brand_domains_findings.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationIdYesOperation ID returned by discover_brand_domains_start.
Behavior4/5

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

Annotations already establish the tool is read-only, idempotent, and non-destructive. The description adds valuable behavioral context: the returned status enum, progress reporting, and the owner-scoped behavior (operationIds of other principals surface as notFound). No contradictions with 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?

Two concise sentences, front-loaded with the primary purpose, followed by return values and a key behavioral caveat. Every sentence carries necessary information 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 no output schema, the description appropriately discloses return content (status and progress) and the notFound behavior. It lacks a bit of detail on the progress format or next-step guidance after completion, but for a simple status polling tool, it is largely complete and well-scoped.

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. The description enhances the operationId parameter by explaining that operationIds owned by other principals surface as notFound, which is not in the schema. This adds semantic value beyond the schema's own description.

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 clearly identifies the resource ('status of an async brand-domain discovery'). It distinguishes itself from sibling tools by explicitly referencing discover_brand_domains_start as the initiation point, making its role as a status poller unambiguous.

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 indicates that this tool is for polling status after starting an async discovery with a specific companion tool. The owner-scoping note provides useful context about access, but it does not explicitly explain when to use this tool versus other status or findings tools, so it stops 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.

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.

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

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

Beyond the annotations, the description discloses critical behavioral limitations: it returns a CT sample (not a full inventory), the count is a lower bound, hosts without publicly-logged certificates are invisible, and results include a per-source coverage record. This goes well beyond the read-only hint and helps the agent set correct expectations.

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 first sentence is concise and action-oriented, but the second sentence is dense with caveats and may be slightly long. Still, every clause contributes value by explaining the sampling limitation, making it a well-structured but not perfectly minimal description.

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?

Despite lacking an output schema, the description explains key aspects of the return value (sample nature, lower bound, coverage record), which is essential for an agent. It doesn't fully detail the output structure, but given the tool's simplicity and the schema covering parameters, this is adequate for a discovery 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?

The input schema has 100% description coverage for all three parameters (domain, format, force_refresh), so the baseline is established. The description does not add parameter-specific semantics beyond the schema, but it does hint at the sampled nature of results, which indirectly informs how to interpret the domain parameter. With full schema coverage, this is acceptable.

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 opens with a specific verb-resource pair ('Find subdomains of a domain') and identifies the method (Certificate Transparency logs), which clearly establishes what the tool does. It also distinguishes itself from sibling tools like check_dnssec or scan_domain by focusing on CT-based discovery and the associated shadow IT/forgotten services use case.

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 for discovering subdomains via CT logs but does not explicitly state when to prefer this tool over alternatives such as discover_brand_domains or check_subdomain_takeover. It provides no exclusion criteria or when-not-to-use guidance, leaving the agent to infer the appropriate context.

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

explain_findingB
Read-onlyIdempotent
Inspect

Explain a finding with impact and remediation.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
statusYesFinding severity or status.
detailsNoAdditional detail from check result.
checkTypeYesCheck type (e.g., 'SPF', 'DMARC').
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 minimal behavioral context (that output includes impact and remediation) but does not describe format, pagination, or external data access. With strong annotations, this is acceptable but not enriching.

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 a single, front-loaded sentence with no filler. Every word contributes to understanding the tool's purpose. Perfectly concise.

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 simplicity, strong annotations, and 100% schema coverage, the description adequately covers the essentials. It mentions the output content (impact and remediation) but does not detail return format or edge cases. No output schema exists, so a bit more detail on the response structure could be helpful, but it is not a critical 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%, as every parameter (checkType, status, format, details) has a description. The tool description does not add meaning beyond the schema, but the schema fully carries the parameter semantics. 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 'Explain a finding with impact and remediation' clearly states the verb (explain), resource (finding), and the value delivered (impact and remediation). It is concise and distinguishes from sibling check_* tools that likely run checks rather than explain them, though it does not explicitly name alternatives.

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?

No guidance is provided on when to use this tool versus alternatives. The description does not mention typical use cases (e.g., after a check returns a finding) or exclude cases where other tools are more appropriate. Without this, an agent may struggle to choose between explain_finding and similar tools.

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.

ParametersJSON Schema
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"]).
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, which signal a safe, non-mutating operation. The description adds artifact-type context but doesn't disclose additional behavioral traits (e.g., output format, side effects). It is consistent with annotations, so no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is a single front-loaded sentence that introduces the tool's purpose, lists artifact types, and gives a usage note. The list adds length but is necessary for clarity; no wasted words.

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 11-parameter tool with no output schema, the description covers the main purpose, artifact types, and usage context. The schema handles parameter details, and annotations cover safety. It doesn't explain return format, but the tool's function is straightforward enough that this is a minor 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 schema already describes every parameter, including enums and defaults. The description repeats the artifact enum in prose but adds no meaningful extra semantics beyond what the schema 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 clearly states the tool generates DNS/email security remediation artifacts and enumerates all six artifact types (spf_record, dmarc_record, etc.). It distinguishes itself from sibling check/analyze tools by being the generation 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?

Explicitly says 'Use when asked to generate or create a record or policy.' This provides a clear usage trigger. It does not mention alternatives or exclusions, but given the sibling tool names (all check_*/analyze_*), the context is still clear.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput verbosity. Auto-detected if omitted.
profileNoProfile to benchmark (default "mail_enabled").
Behavior3/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the tool shows benchmark comparisons by sector/country cohort, which is useful context, but it does not add much beyond the annotations and the basic output description. There is no contradiction with 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 two sentences long, front-loaded with the core function, and every sentence serves a purpose: the first states what the tool does, the second lists clear use cases. No unnecessary words or repetition.

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 only 2 optional parameters, a fully documented schema, and no output schema, the description provides sufficient context for an AI to select and invoke the tool. It explains the output contents (percentile, mean score, failures) and the use cases. It lacks only explicit alternative guidance, but overall it is complete for the tool's simplicity.

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

Parameters3/5

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

The input schema covers 100% of the parameters, with enums and descriptions for both 'format' and 'profile'. The description does not add any additional semantic detail beyond the schema, so 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 clearly states the tool's function: 'Get industry benchmark data' and enumerates the specific data points returned (percentile, mean score, common failures). It is specific about the resource and scope, but it does not explicitly distinguish itself from sibling tools like get_domain_rank or get_provider_insights, which limits it to a 4 rather than a 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 description includes an explicit 'Use when' section listing three concrete scenarios: comparing to industry average, asking about percentiles, or asking about common security failures. This provides clear context for when to use the tool, though it does not mention when not to use it or name specific alternatives.

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

get_ca_policiesA
Read-onlyIdempotent
Inspect

Retrieve Conditional Access policies for a Microsoft Entra tenant. Requires m365Proxy service binding; returns { unprovisioned: true } when absent. A representative: true field in the response marks sample (non-live) data until live Graph reads land.

ParametersJSON Schema
NameRequiredDescriptionDefault
ms_tenant_idYesMicrosoft Entra tenant ID (GUID or domain).
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds important behavior not covered by annotations: the return of { unprovisioned: true } when the service binding is absent, and the representative field marking sample data until live Graph reads land. This helps the agent interpret responses 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 two sentences, front-loaded with the core purpose. Every sentence adds value, with no wasted words. It explains the unprovisioned case and the representative flag concisely.

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 tool with one parameter, no output schema, and safety annotations, the description covers essential behavioral quirks (unprovisioned, sample data). It could still mention what a success response contains beyond the representative flag, but this is not critical for a read-only retrieval.

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

Parameters3/5

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

The schema fully documents the single parameter ms_tenant_id with type and description, covering 100% of schema descriptions. The tool description adds no additional parameter semantics, 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 clearly states the tool retrieves Conditional Access policies for a Microsoft Entra tenant, using a specific verb and resource. It also distinguishes itself from sibling tools that focus on security checks like DNS or brand audits.

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 usage context is implied by the purpose: one would use this tool to get CA policies. However, it does not explicitly state when to use this vs alternatives, nor does it mention exclusions. The m365Proxy binding note is a prerequisite rather than a usage guideline.

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.

ParametersJSON Schema
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.
Behavior4/5

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

Annotations already state readOnlyHint, idempotentHint, and destructiveHint false. The description adds useful behavioral context beyond that: 'Owner-gate exempt — public cohort data only' clarifies permission requirements and data scope. It also explicitly mentions the return format, which helps set expectations. No contradiction with 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?

Two sentences, front-loaded with the primary verb and resource, and every clause earns its place. It avoids redundancy and fluff, making it highly scannable and 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?

Given the tool has no output schema, the description takes responsibility for explaining return values ('returns a percentile: "scores better than X% of peers"'). It covers the core inputs (score, country/sector), the dependency on scan_domain, and the permission exemption. The description is fully sufficient for an agent 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 baselines are 3. The description does add marginal meaning by linking the score to scan_domain and summarizing country/sector as optional cohort selectors, but it largely restates what the schema already documents. No significant additional parameter semantics provided 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 opens with a specific verb and resource: 'Rank a domain against its country or global cohort using the GSI benchmark corpus.' It clearly distinguishes the tool's purpose from siblings by emphasizing cohort ranking and the benchmark corpus, and it states the exact output (a percentile). This fully clarifies what the tool does.

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 provides clear contextual guidance: it references scan_domain as the source of the required score, and explains how country/sector alter the cohort. However, it does not explicitly name alternatives or state when not to use this tool (e.g., vs. get_benchmark). This is a minor omission, so it earns a 4 rather than a 5.

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.

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

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds useful context by explaining the cohort-based nature (aggregated over provider customers) and that it surfaces typical misconfigurations, going beyond the generic 'read-only' annotation. No 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 sentences, with the first sentence concisely stating the core purpose and the second giving precise usage guidance. Every word earns its place, and the structure is front-loaded with the action and outcome.

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 description covers purpose, usage, and parameter context adequately. However, with no output schema, it does not describe the return format (e.g., how benchmarks are presented or what 'full' vs 'compact' affects), which would be helpful for an agent setting expectations. Still, the description is largely complete for a read-only lookup tool with strong annotations.

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 all three parameters. The description adds a little contextual meaning (e.g., provider refers to an email or DNS service vendor) but does not materially improve understanding 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?

The description clearly states the tool returns security benchmarks and common configuration issues for a specific provider cohort, with concrete examples (Google Workspace, Microsoft 365). It uses a specific verb ('Get') and resource, and effectively distinguishes from sibling check_* tools by focusing on provider-level insights rather than domain-level checks.

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 explicit when-to-use guidance: '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.' It does not mention when-not-to-use or alternatives, but the context is clear enough for an agent to select it appropriately.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the 'Read-only' phrase is redundant. However, the description adds valuable behavioral context: 'caller's' and 'owner-scoped' clarify that the tool returns only the caller's watches, not all watches. 'Recurring' also describes the nature of the watches. No contradictions with 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 a single, well-structured sentence. It front-loads the action, provides a concise field list, and appends the two qualifiers ('Owner-scoped', 'Read-only') efficiently. No wasted words.

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 low complexity (no parameters), the presence of an output schema, and strong annotations, the description covers all essential aspects: purpose, scope, and return content. The owner-scoping detail is crucial and included. The description is complete for an agent to invoke it 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?

The tool has zero parameters (empty input schema), so description adds nothing about parameters. Per rubric, 0 params earns a baseline of 4. The description does not need to explain parameter semantics when there are none.

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 identifies the verb ('Returns'), the resource ('brand-audit watches'), and the scope ('caller's'). The explicit field list (watchId, domain, interval, etc.) makes the purpose unambiguous and distinguishes it from sibling tools like register_brand_audit_watch or delete_brand_audit_watch.

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 indicates when to use it (to view the caller's own recurring watches) via 'owner-scoped' and 'read-only', but it does not explicitly mention alternatives or say when not to use it. It lacks an explicit reference to sibling tools, so the agent must infer that it is for listing rather than creating or deleting.

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.

ParametersJSON Schema
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.
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds useful context about the compliance frameworks and pass/fail/partial statuses, but does not disclose deeper behaviors such as caching or external calls, which is acceptable given the annotation coverage.

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 sentences, front-loaded with the main purpose and listing the frameworks and output format. No redundant words or filler.

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?

There is no output schema, so the description must convey return values. It does mention pass/fail/partial status per control, but lacks clarity on prerequisites (e.g., whether findings must already exist), result grouping, or relationship to other scan tools. This is adequate but leaves gaps.

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% for all three parameters (domain, format, force_refresh), including a description for each. The tool description adds no parameter-specific information 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.

Purpose5/5

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

The description clearly states the tool maps scan findings to specific compliance frameworks (NIST 800-177, PCI DSS 4.0, SOC 2, CIS Controls) and shows status per control. This distinguishes it from sibling tools like map_supply_chain and assess_coverage, using a specific verb and resource.

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 implies the tool is used when you have scan findings and need compliance mapping, giving clear context. However, it does not explicitly mention when not to use it or name alternative tools, so it falls 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.

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

ParametersJSON Schema
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.
Behavior4/5

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

Annotations already signal read-only, idempotent, and non-destructive behavior. The description adds valuable context by detailing the correlation methodology (SPF, NS, TXT, SRV, CAA) and the insights it produces (vendor email sending, DNS control, integrated services). It goes beyond annotations without contradicting them, earning a solid score.

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 sentences: main purpose, methodology, and usage guidance. It is front-loaded with the core function, and every sentence contributes meaning without redundancy or fluff.

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 mapping tool with no output schema, the description explains what it does and how, and gives usage boundaries. It does not describe return value structure, but the input schema is rich and sibling differentiation is clear. This is sufficiently complete for an AI to select and 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?

The input schema provides 100% coverage for all three parameters (domain, format, force_refresh) with descriptions. The tool description does not add parameter-specific semantics, but the schema already carries the load. 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 opens with a specific verb and resource: 'Map DNS-visible third-party service dependencies for a domain.' It clearly differentiates from siblings by explicitly stating it is 'not for listing who can send email (use check_spf for that).' This makes the tool's purpose unambiguous and distinct.

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 explicit guidance: 'Use when asked to map third-party or supply-chain dependencies — not for listing who can send email (use check_spf for that).' This gives both positive and negative usage context and names an alternative tool, satisfying the highest bar for usage guidelines.

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; degrades to info when unprovisioned. Returns an investigationId immediately — poll with osint_investigation_status and retrieve results with osint_investigation_report.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds valuable context beyond these by noting the async nature, the immediate return of an investigationId, and the special behavior of degrading to info when unprovisioned. This gives the agent a clearer picture of expected behavior and edge cases.

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 concise sentences front-load the core action, then immediately cover the provisioning constraint and the async follow-up pattern. Every clause adds value—no fluff or repetition of schema fields.

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 has a single simple parameter and an output schema, so the description doesn't need to detail return values. It covers the essential context: start operation, domain scope, operator-only provision requirement, unprovisioned degradation, immediate investigationId return, and how to poll/retrieve results. This is complete for an initiation 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?

With schema_description_coverage at 0%, the description must compensate for the single 'query' parameter. It implies the query is the domain to investigate ('for a domain'), which adds meaning beyond the bare schema. However, it does not specify the expected format (e.g., whether to include protocol, subdomain handling, or IDN support), leaving some ambiguity for the agent.

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 states 'Start an async OSINT investigation for a domain,' identifying a specific action (start), resource (OSINT investigation), and scope (domain). It distinguishes itself from sibling start tools for email, infrastructure, supply chain, and username investigations by explicitly naming the domain focus.

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 provides clear context: it is used to start a domain OSINT investigation, is asynchronous, and is operator-deploy only. It tells the agent to poll with osint_investigation_status and retrieve with osint_investigation_report for follow-up. While it doesn't explicitly exclude alternative tools, the domain-specific language and sibling names make the when-to-use obvious.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Discloses asynchronous behavior (returns investigationId immediately), the need to poll status and retrieve report, and the tier restriction. These go beyond the annotations, which only state safety hints. No contradiction with readOnlyHint=false since it creates an investigation.

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, then restriction, then follow-up flow. No wasted words.

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 one-parameter async start tool, it covers the full lifecycle: start, return ID, poll, and retrieve. It names the exact sibling tools for each step, and the tier restriction. The output schema exists, so not explaining return values is acceptable.

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 schema only names the parameter 'query' with length constraints; the description adds the critical meaning that the query is an email address. Even though it doesn't explicitly say 'query is the email', the context makes it clear.

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?

Clearly states it starts an async OSINT investigation for an email address, naming the specific focus (breach exposure, account correlation). This distinguishes it from sibling osint_investigate_*_start tools and from the status/report 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?

Provides clear context: it's for email address investigation, async, and restricted to owner/enterprise tier. It explicitly directs follow-up with osint_investigation_status and osint_investigation_report. However, it doesn't name alternatives or state when not to use it beyond the tier restriction.

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; degrades to info when unprovisioned. Returns an investigationId immediately — poll with osint_investigation_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior5/5

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

The description adds meaningful behavior beyond annotations: async execution, immediate return of investigationId, polling mechanism, and degradation to info when unprovisioned. It complements openWorldHint/readOnlyHint disclosure by explaining exactly what happens when started. No contradiction with 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?

Two sentences pack all essential information: action, resource, query types, operator caveat, degradation behavior, and follow-up polling instruction. No filler or repetition of schema fields.

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

Completeness5/5

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

Despite high complexity from sibling tools, the description covers the async start lifecycle, return value, and operational caveat. With an output schema present and this level of contextual detail, the agent has enough to invoke the tool correctly and understand the next step.

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 schema only defines 'query' as a string with length limits, but the description adds crucial semantics by explaining the query can be a domain, IP, or org. This compensates for the 0% schema description coverage, though it doesn't specify formatting details (e.g., URL vs raw IP).

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 opens with a specific verb ('Start') and identifies the resource ('async deep-infrastructure OSINT investigation') plus accepted query types (domain, IP, or org). It clearly distinguishes this from sibling tools like osint_investigate_domain_start by narrowing to infrastructure in the name and description.

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 operational context: returns immediately, poll with osint_investigation_status, and operator-deploy requirement. It doesn't explicitly state when not to use or name alternatives, but the query type (domain, IP, or org) and 'infrastructure' scope imply when this start tool is appropriate versus sibling variants.

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; degrades to info when unprovisioned. Returns an investigationId immediately — poll with osint_investigation_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

The description reveals that the operation is asynchronous, returns an investigationId immediately, and requires polling—important behavioral context beyond the annotations. It also discloses deployment-conditional behavior. However, it does not describe any side effects or data persistence beyond creating an investigation, which is somewhat implied by 'start'.

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 sentences long, front-loaded with the action and resource, and every clause adds useful information (async, operation constraint, return value, polling). No fluff or 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?

For an async start tool, the description covers the essential workflow: start, receive ID, poll status. The output schema likely documents return details, so not explaining return values is fine. The main gap is parameter semantics, but that is already penalized in dimension 4, and the overall context is otherwise complete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only repeats the word 'query' without explaining what a valid query should be (e.g., domain, organization, product). This leaves the sole parameter ambiguous, offering no 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?

The description uses a specific verb ('Start') and resource ('async supply-chain OSINT investigation') with a clear scope ('for a query'). It distinguishes itself from sibling investigation start tools (domain, email, infra, username) by naming the 'supply-chain' focus, making the purpose unmistakable.

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 states a usage constraint ('Operator-deploy only') and a fallback behavior ('degrades to info when unprovisioned'), which guides when the tool can be used. It also tells the next step ('poll with osint_investigation_status'), but it does not explicitly compare against alternative investigation start tools, leaving differentiation to the tool name.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior5/5

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

Discloses that the tool returns an investigationId immediately (async behavior) and notes the access restriction, which are not evident from annotations. This adds practical context about the tool's operational behavior beyond what annotations 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?

Three sentences cover purpose, restriction, and workflow with no filler or redundancy. The description is front-loaded with the primary action and avoids unnecessary detail.

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?

Explains the async pattern and points to status/report tools for follow-up, making the tool usable within a larger workflow. With an output schema present and sibling tools covering retrieval, the description is sufficiently complete, though it does not detail error cases or report content.

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 is implicitly defined as the username via the tool name and description, adding meaning beyond the schema's bare string type. The description could mention format (e.g., no @), but it is sufficiently clear.

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?

Clearly states it starts an async OSINT investigation for a username, specifying cross-platform presence and breach correlation. The verb 'start' and resource 'username' distinguish it from sibling investigation start tools for domains, emails, infrastructure, and supply chains.

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?

Specifies the owner/enterprise tier restriction and explains the async workflow with status and report tools. It does not explicitly contrast with other 'start' tools, but the restriction and workflow provide clear usage context.

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. Operator-deploy only; degrades to info when unprovisioned or not yet complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
investigationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnly=true, idempotent=true, and destructive=false, so the safety profile is covered. The description adds valuable behavioral context: it degrades to info when unprovisioned or not yet complete, which is not inferable from the annotations alone.

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 a single sentence that delivers the core purpose and key constraints without unnecessary elaboration. Every clause earns its place, making it highly scannable and efficient.

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 presence of an output schema and clear annotations, the description covers the essential operational constraints (completion state, provisioning) and the tool's purpose. It does not explain how to obtain the investigationId, but that is expected to come from other investigation tools, so this is acceptable.

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

Parameters2/5

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

The schema has no descriptions for the single parameter (investigationId), so the description must compensate. It merely restates 'by investigationId' without adding format details, where to obtain the ID, or how it relates to investigation start/status tools. This provides minimal additional meaning over the parameter name.

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 states the tool retrieves the final report of a completed OSINT investigation by investigationId. It uses a specific verb ('retrieve') and resource ('final report'), and the 'completed' qualifier distinguishes it from sibling status or start 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?

The description provides clear usage context: only for completed investigations and operator-deploy environments. It implies agents should check completion status first (and can infer from the degradation behavior), but it does not explicitly name alternative tools like osint_investigation_status.

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; degrades to info when unprovisioned. Returns current status (running | completed | failed) and progress metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
investigationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Beyond the annotations (readOnlyHint, idempotentHint), the description discloses important behavioral traits: 'degrades to info when unprovisioned' and that it returns current status plus progress metadata. This adds context beyond annotation hints. No contradiction with 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 two sentences, front-loaded with the primary verb ('Poll') and resource, then condenses essential usage constraints and return information. No filler or 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?

For a simple one-parameter tool with an output schema, the description covers purpose, behavior, and return metadata. It could mention when to use it relative to sibling start tools, but the reference to 'investigationId' and the sibling names imply the typical flow. With an output schema present, the description is sufficiently complete.

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 0%, so the description must compensate for the parameter. It identifies 'investigationId' as the identifier used for polling, giving semantic meaning. However, it does not add details like format, lifecycle, or how to obtain the ID. For a single obvious parameter, this is minimum viable but not rich.

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 states the tool's action ('Poll the status of an OSINT investigation by investigationId') and specifies the exact return values ('running | completed | failed') and progress metadata. This distinguishes it from sibling tools like osint_investigate_domain_start (which starts investigations) and osint_investigation_report (which likely retrieves full reports).

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 provides clear context by noting 'Operator-deploy only' and the degradation behavior when unprovisioned. It does not explicitly name alternatives or exclusion conditions, but the context is sufficient for an agent to infer this is for polling after starting an investigation.

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

prioritize_csc_leadsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
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.
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context beyond these: it is paid, multi-domain, reuses map_csc_products, and ranks by a specific formula. It does not describe response formats or potential side effects, but with the annotations covering safety, this is adequate.

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 sentences, front-loaded with the primary purpose, and every sentence adds value: one defines the function and ranking logic, one notes operational constraints (multi-domain, paid), and one differentiates from siblings. No wasted words.

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 no output schema, the description adequately conveys what the tool produces (prioritized leads). It covers input variants, cost, and relationship to other tools. It lacks explicit return format details, but for a ranking tool with four well-described parameters, this is not a critical 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%, with each parameter (brand, format, domains, force_refresh) already described in the schema. The description adds no additional parameter-level meaning beyond what the schema provides, so 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.

Purpose5/5

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

The description clearly states the tool's purpose: ranking a brand's portfolio or explicit domain set into prioritized CSC sales leads, with a specific ranking criterion (product-gap value × severity). It also explicitly differentiates from sibling tools map_csc_products and batch_scan, making its unique role unmistakable.

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?

The description provides explicit guidance on when to use this tool versus alternatives, naming map_csc_products and batch_scan and clarifying the difference (per-domain mapping vs. raw scores vs. this ranking tool). It also notes that it is multi-domain and paid, which are key operational considerations for an agent deciding whether to invoke it.

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

query_signinsA
Read-onlyIdempotent
Inspect

Query Microsoft Entra sign-in logs for a tenant. Optionally filter by user principal name, failure status, or lookback window. Requires m365Proxy service binding; returns { unprovisioned: true } when absent. A representative: true field in the response marks sample (non-live) data until live Graph reads land.

ParametersJSON Schema
NameRequiredDescriptionDefault
since_hoursNoLookback window in hours (default: 24, max: 720).
ms_tenant_idYesMicrosoft Entra tenant ID (GUID or domain).
failures_onlyNoWhen true, return only failed sign-ins.
user_principal_nameNoFilter to a specific user (UPN). Omit for all users.
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds important behavioral details: it requires m365Proxy service binding, returns { unprovisioned: true } when absent, and uses 'representative: true' to indicate sample data. This is rich, non-obvious context that aids correct interpretation.

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 concise: two sentences, front-loaded with the primary purpose, and every sentence adds value. It covers the main function, optional filters, prerequisites, and response edge cases without unnecessary verbosity.

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 has no output schema, so the description partially carries the burden of explaining return values. It covers edge cases (unprovisioned, representative data) but does not describe the normal success response structure (e.g., fields or pagination). For a simple query tool, this is adequate but not fully complete.

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 paraphrases the optional filters but does not add new semantic details beyond what the input schema already provides. The schema already explains each parameter's meaning and constraints.

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 states a specific verb and resource: 'Query Microsoft Entra sign-in logs for a tenant.' It distinguishes this tool from siblings like query_ual by explicitly focusing on sign-in logs. The scope is well-defined.

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 provides clear context for usage, including optional filters (UPN, failure status, lookback) and a prerequisite (m365Proxy service binding). However, it does not explicitly mention alternatives or when not to use this tool relative to sibling tools like query_ual.

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

query_ualA
Read-onlyIdempotent
Inspect

Query the Microsoft 365 Unified Audit Log for a tenant. Optionally filter by operation type, user, or lookback window. Requires m365Proxy service binding; returns { unprovisioned: true } when absent. A representative: true field in the response marks sample (non-live) data until live Graph reads land.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationNoFilter to a specific Unified Audit Log operation (e.g., "MailItemsAccessed").
since_hoursNoLookback window in hours (default: 24, max: 720).
ms_tenant_idYesMicrosoft Entra tenant ID (GUID or domain).
user_principal_nameNoFilter to a specific user (UPN). Omit for all users.
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses important behaviors: the need for a service binding, the unprovisioned response when absent, and the representative field indicating sample data. This significantly helps the agent interpret results.

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 concise sentences, front-loaded with the core purpose, then adding necessary behavioral caveats. 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?

The tool has 4 parameters, no output schema, and non-trivial behaviors (unprovisioned, representative data). The description covers these quirks and gives sufficient information for correct invocation and response interpretation.

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 applies. The description only restates that filters exist without adding details beyond the schema's parameter descriptions. No additional syntax or format guidance is given.

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 states the verb 'Query' and the resource 'Microsoft 365 Unified Audit Log for a tenant', distinguishing it from sibling tools like query_signins. It also mentions optional filters, making the scope specific.

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 for use (querying audit logs, optional filters) and a prerequisite (m365Proxy service binding). Does not explicitly mention alternatives or exclusions, but the scope is unambiguous given sibling context.

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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/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 description only needs to add contextual behavior. It adds useful context such as being a 'modern WHOIS replacement' and lists the specific data returned, going beyond the annotations. It does not disclose potential RDAP limitations (e.g., unsupported TLDs, rate limits), but for a read-only lookup this is not a major 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?

The description is compact and front-loaded: the first sentence states the primary action and returns, the second gives usage context, and the third draws a clear sibling distinction. Every sentence contributes meaningful information without redundancy.

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 moderate complexity, an output schema is present, and annotations cover safety, the description is complete. It specifies purpose, return data, usage timing, and a sibling alternative, making it sufficient for an agent to invoke correctly without further information.

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 (domain, format, force_refresh) already described in the schema. The description does not add additional parameter-specific semantics, so it meets the baseline but does not exceed 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 ('Fetch domain registration data') and resource ('RDAP'), and enumerates concrete return values (registrar, registrant contact, dates, EPP codes, domain age). It explicitly distinguishes itself from the sibling tool check_ns, leaving no ambiguity about its scope.

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?

The description provides clear when-to-use guidance: 'Use when asked who registered the domain, who the registrar is, or when the registration expires.' It also names an alternative (check_ns) and explains the difference, which helps an agent select the correct tool.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to watch.
intervalYesRecurrence interval.
webhook_urlNoOptional webhook URL — POSTed on classification drift. Re-validated for SSRF at both register and delivery time.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior5/5

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

Annotations only indicate non-read-only, non-idempotent, non-destructive, and open-world. The description adds concrete behavioral context: each run enqueues a fresh brand_audit_batch_start, POSTs a diff webhook on drift, returns a new watchId, and enforces a per-principal cap of 20 active watches. This goes well 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?

Three sentences, each earning its place: first states the purpose, second details side effects, third gives the return value and a constraint. Front-loaded and free of 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?

Given the output schema exists and annotations are present, the description still adds critical operational details: recurrence semantics, webhook behavior, owner scoping, and the 20-watch cap. It provides enough context to invoke correctly without surprises.

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 covers 100% of parameters with descriptions and an enum for interval. The description adds some context for webhook behavior and return value, but it mostly reinforces what the schema already states. With full schema coverage, a 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: 'Creates a recurring brand-audit watch for a domain'. It distinguishes itself from siblings like list_brand_audit_watches, delete_brand_audit_watch, and brand_audit_single by specifying the recurring cadence, enqueuing brand_audit_batch_start, and webhook behavior.

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 implies usage context: recurring scheduled watches for a domain, with clear mention of cadence options and owner-scoped execution. It doesn't explicitly state when not to use it or name alternatives, but the recurring/enqueue wording sets it apart from one-off audit tools like brand_audit_single.

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.

ParametersJSON Schema
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.
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral details beyond annotations: recursive resolution, output metrics (lookup count, tree depth), and detection of circular includes and the 10-lookup limit. This is more context than typical and aligns with the read-only nature.

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 sentences long and front-loads the primary action. Every sentence adds substantive information (what it does, what it shows, and what it flags), with no waste or repetition.

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?

Without an output schema, the description explains the key output aspects (lookup count, tree depth, flags) and edge cases (circular includes, limit). It covers the core behavior adequately. It could mention output format or caching behavior (given force_refresh exists), but overall it gives enough context for an agent to understand the tool's capabilities.

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% (all three parameters have descriptions). The tool description provides no additional parameter-specific meaning beyond the schema. It mentions output characteristics but not parameter details, 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?

The description clearly states the tool's purpose: 'Trace the full SPF include chain for a domain.' It specifies the exact resource (SPF include chain) and the specific actions (recursively resolves includes, shows lookup count, tree depth, flags circular includes/limit). This distinguishes it from siblings like check_spf or 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?

The description implies the use case: when you need to trace SPF includes and check for circular includes or lookup limits. However, it does not explicitly mention when not to use it or contrast with alternative tools like check_spf. The context is clear but lacks explicit exclusions or alternative references.

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; degrades to info when unprovisioned. The scanId is required so reads can be owner-scoped; target and provider filters are optional.

ParametersJSON Schema
NameRequiredDescriptionDefault
scanIdYes
targetNo
providersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context: it 'degrades to info when unprovisioned' and explains that scanId is required for 'owner-scoped' reads, both of which go beyond annotation information.

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 sentences long, front-loads the primary purpose, and contains no verbose or redundant wording. Every sentence contributes either a constraint or parameter role information.

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

Completeness5/5

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

For a read-only retrieval tool with a provided output schema and strong annotations, the description is sufficient. It covers the required parameter rationale, optional filters, and deployment caveat, making it contextually complete for an agent to invoke 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 0%, so the description must compensate. It notes scanId is required for owner-scoping and that target and provider filters are optional, but it does not explain the meaning or acceptable values of target/providers beyond 'filters', leaving a partial gap.

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 the specific verb 'Retrieve' and the resource 'findings from a completed cloud-bucket discovery scan', clearly identifying the tool's purpose. The inclusion of 'by scanId' distinguishes it from sibling tools like scan_buckets_start and scan_buckets_status, which focus on initiation and status.

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 states the tool is for retrieving findings from a 'completed' scan, implying it should be used after scan completion, and restricts usage to 'Operator-deploy only'. However, it does not explicitly name alternatives (e.g., scan_buckets_status) or provide when-not-to-use guidance.

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; degrades to info when unprovisioned. Returns a scanId immediately — poll progress with scan_buckets_status and retrieve results with scan_buckets_findings.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
providersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior5/5

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

The description adds meaningful behavior beyond annotations: it notes the operation is asynchronous ('Returns a scanId immediately') and discloses the provisioning constraint ('Operator-deploy only; degrades to info when unprovisioned'). This is valuable context on what to expect. The annotations (readOnlyHint=false, openWorldHint=true) are consistent, and there is no 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?

The description is three sentences, each serving a distinct purpose: state the action, disclose constraints, and specify the follow-up workflow. It is front-loaded with the primary purpose and contains 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?

Given that the tool has an output schema (likely covering the returned scanId) and annotations, the description is complete: it covers the async nature, provisioning behavior, and the required next steps for status and results. It does not need to detail return values because the output schema exists. This is fully sufficient for an agent to invoke and use the tool correctly.

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

Parameters2/5

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

The description does not explain the parameters at all. Schema description coverage is 0%, so it should compensate, but 'target' is only implied by 'target domain' and 'providers' is completely unspecified. The parameter semantics are left to inference from the tool name, which is insufficient for an agent to know what values to supply.

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 starts with a specific verb and resource: 'Start an async cloud-bucket discovery scan for a target domain.' It clearly states the tool's action and scope. It also distinguishes from sibling tools by explicitly naming scan_buckets_status and scan_buckets_findings for follow-up, making the unique role clear.

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 provides clear context: it highlights that it is 'Operator-deploy only' (a prerequisite) and that it 'degrades to info when unprovisioned' (a constraint). It also indicates the async flow by telling users to poll with status and retrieve with findings, which implies the typical use sequence. However, it does not explicitly state exclusions or compare with alternative scan tools, so it stops 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_statusA
Read-onlyIdempotent
Inspect

Poll the status of a cloud-bucket discovery scan by scanId. Operator-deploy only; degrades to info when unprovisioned. Returns scan status (running | completed | failed) and progress metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
scanIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
passedYes
categoryYes
findingsYes
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful context: the 'degrades to info when unprovisioned' caveat and the specific status values returned. This goes beyond the annotations without contradicting 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?

The description is three concise sentences with the key action up front, followed by a constraint and the return behavior. Every sentence adds value, and there is no redundancy or fluff.

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 description covers the core purpose, the unprovisioned edge case, and the return format. It does not explicitly connect to scan_buckets_start as the source of scanId, but the output schema and annotations fill in much of the remaining context. Reasonably complete for a status-polling 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 0%, and the description only mentions 'scanId' in passing. It gives no additional detail on where the scanId comes from or any formatting expectations, relying on the parameter name to carry meaning. This is a modest contribution but not sufficient for a 0% schema coverage.

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 states the tool's purpose with a specific verb ('Poll') and resource ('cloud-bucket discovery scan by scanId'), and the return values ('running | completed | failed') make its role unambiguous. It distinguishes itself from sibling tools like scan_buckets_start and scan_buckets_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?

The description provides a clear context ('Operator-deploy only') and notes the unprovisioned degradation, which hints at prerequisites. However, it does not explicitly mention when to prefer this over sibling tools like scan_buckets_findings, though the name and action make the use case fairly obvious.

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.

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

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so safety is covered. The description adds valuable behavioral context by noting it aggregates checks in parallel and returns a security score, NIST-aligned grade, maturity stage, and prioritized findings, going beyond the basic safety profile.

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 concise and well-structured. It starts with the core purpose, then elaborates on what the tool does and outputs, and ends with usage guidance. Every sentence adds value without unnecessary filler.

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

Completeness4/5

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

Given the tool's complexity (aggregating many checks) and lack of an output schema, the description sufficiently covers what the tool returns (score, grade, maturity, findings) and its scope (single domain). It could mention alternatives like batch_scan for multiple domains, but the described context is adequate for selection and 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 baseline is 3. The description does not add extra parameter-level details beyond what the schema already provides, but it does not need to since each parameter (domain, format, profile, force_refresh) is clearly documented 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?

Description clearly states the tool runs a full DNS and email security audit for a single domain, using specific verbs and listing concrete checks (SPF, DKIM, DMARC, etc.). It distinguishes itself from sibling single-check tools by emphasizing aggregation and the output of an overall score/grade.

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 explicitly says 'Use for a comprehensive single-domain audit, to get a domain's overall security grade, or to assess email security maturity.' This provides clear context on when to use it, though it does not explicitly mention when not to use it or name alternatives like individual check_* tools.

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.

ParametersJSON Schema
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.
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds value by explaining that the tool evaluates attack paths with severity, feasibility, steps, and mitigations, which provides insight into the nature of the analysis. However, it does not disclose additional behavioral traits such as caching, performance characteristics, or whether it relies on external data sources beyond what annotations and schema imply.

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 a single, focused sentence that is front-loaded with the primary action ('Analyze current DNS posture') and enumerates key output aspects in a compact list. Every word earns its place, with no redundancy 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 tool's complexity (simulating attack paths), the description provides a solid overview of purpose and expected output, and the annotations cover safety and idempotency. The schema documents all parameters. It lacks explicit mention of caching or relationship to other tools, but for the scope of this tool, the description is reasonably complete.

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

Parameters3/5

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

The schema provides 100% description coverage for all 3 parameters, so the baseline is 3. The description does not add parameter-specific information beyond what the schema already provides, but it does mention 'DNS posture' which loosely relates to the 'domain' parameter. No additional clarity is needed.

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 states a specific verb ('Analyze' and 'enumerate') and a specific resource ('current DNS posture'), and it distinguishes itself from sibling check_* tools by focusing on attack path enumeration with concrete outputs (severity, feasibility, steps, mitigations). It unambiguously describes what the tool does.

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 context (use when you want to analyze attack paths from DNS posture), but it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or alternative tools. Given the large sibling list, some explicit guidance would help, but the purpose is understandable enough to infer usage.

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.

ParametersJSON Schema
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
Behavior3/5

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

Annotations already declare the tool as read-only and non-destructive. The description adds the context that it is a follow-up verification step after remediation, which is useful behavioral context. However, it does not go deeper into output behavior or any special side effects, so a mid-range score 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 concise sentences front-loaded with the core purpose, followed by explicit usage conditions. No wasted words; every sentence adds meaning.

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 has a clear post-fix verification purpose, and the description covers when to use it and what it does. With annotations providing safety attributes and the schema covering all parameters, the description is complete for this tool's complexity. No output schema exists, so return values are not expected to be documented here.

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

Parameters3/5

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

The input schema provides descriptions for all four parameters, including enums and examples, so the description does not need to compensate. The schema coverage is 100%, and the description adds no parameter-specific details, so a baseline score of 3 is warranted.

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 ('re-check') and resource ('security control') and clearly states the purpose is to confirm remediation after applying a fix, distinguishing from initial inspection tools. It effectively communicates the tool's role.

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?

The description explicitly states when to use ('only when a fix has already been applied') and when not to use ('not for initial inspection'), providing clear exclusion criteria. This guides the agent away from using it for initial scans.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    -
    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.
    Last updated
    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.
    Last updated
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for IntoDNS.ai providing 36 free tools for DNS, DMARC, SPF, DKIM, BIMI, DNSSEC, MTA-STS, FCrDNS, blacklist and email security checks. Citation-grade report snapshots with content hashes. No API key required.
    Last updated
    36
    31
    2
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.