dns
Server Details
DNS and email security scanner with 76 MCP tools for SPF, DMARC, DNSSEC, SSL, and brand audits.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- MadaBurns/bv-mcp
- GitHub Stars
- 8
- Server Listing
- Blackveil DNS
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
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.
Tool Definition Quality
Average 4.2/5 across 80 of 80 tools scored. Lowest: 3.4/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.
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).
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.
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
76 toolsanalyze_driftARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to analyze drift for | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| baseline | Yes | Prior 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_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_spoofabilityARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_scanARead-onlyIdempotentInspect
Bulk-scan up to 10 domains in parallel. Runs a full security audit on each domain in the list and returns score, NIST-aligned letter grade (6-band A+/A/B/C/D/F), and finding counts per domain. Use when you want to audit multiple domains at once or do a bulk scan of several domains simultaneously — distinct from compare_domains which does a side-by-side analysis of 2–5 domains. Version stamps (hoisted once per batch): 'scoringModelVersion' is the scoring POLICY semver and is INDEPENDENT of 'dnsChecksPackageVersion', the @blackveil/dns-checks npm engine-package version — the model version legitimately lags and the two must not be compared. Record 'scoringConfigHash' when citing scores.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output verbosity. Auto-detected if omitted. | |
| domains | Yes | Domains to scan (max 10 per request) | |
| force_refresh | No | Bypass cache and run fresh scans. |
Tool Definition Quality
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 version stamps (scoringModelVersion vs dnsChecksPackageVersion independence and reporting requirements for scoringConfigHash). This matches the high bar by adding meaningful behavioral disclosure 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and the version-stamp caveat earns its place. The sentence about version stamps is useful but could be seen as overly detailed for a description, though it's essential domain context. Everything earns its place; only minor length concerns prevent a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema, the description covers the key aspects: what it does, what it returns (score, grade, finding counts), and version semantics. The description is complete for a batch list-style tool despite lacking an output schema. Slight deduction for not explicitly describing pagination or error behavior for the 10-domain limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 per the rubric. The description adds context about 'hoisted once per batch' version stamps and output includes score/grade/finding counts, but the parameter descriptions in the schema are already adequate. The description doesn't add meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is very clear: 'Bulk-scan up to 10 domains in parallel' with specific verb+resource+scope. It clearly describes auditing multiple domains at once, distinct from sibling tool compare_domains. The 6-band letter grade explanation (A+/A/B/C/D/F) adds valuable specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly distinguishes this tool from compare_domains (side-by-side analysis of 2–5 domains), giving clear when-to-use guidance. It explains when to use batch_scan versus the alternative, which fully satisfies the usage guidelines criteria.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Output view mode. 'csc_complement' produces a CSC-tuned payload; requires enterprise tier. Default 'standard'. | |
| depth | No | Discovery depth. standard is default; deep expands candidate seeding and enrichment fanout. | |
| format | No | Inline output mode. Defaults to "both". | |
| domains | Yes | Domains to audit (max 50 per batch). Duplicates are merged. | |
| planner_mode | No | Planner mode for staged discovery fanout. observe emits metrics; enforce applies candidate-backed signal caps. | |
| brand_aliases | No | Optional public brand aliases to seed, such as product or legal-entity labels. | |
| discovery_mode | No | Brand-discovery pipeline mode. classic = legacy sweep; tiered = tenant/graph/evidence wrappers first (BlackVeil-internal). | |
| min_confidence | No | Drop candidates whose combined confidence falls below this threshold (0-1, default 0.5). | |
| candidate_domains | No | Optional candidate domains supplied by the caller for corroboration. | |
| ownership_verified | No | Caller 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
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=false, destructiveHint=false, idempotentHint=false. The description reveals that it is async, returns an immediate response with auditId and eta, and explains quota usage. With annotations covering the basic traits and the description adding async and budget details, the score is appropriately above midpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and includes essential information: what it does, return fields, follow-up tools, and quota consumption. It is front-loaded and efficient, but could be trimmed slightly (e.g., 'caller-supplied' vs 'optional candidate domains' introduces minor redundancy). Still, it earns its keep.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that output schema exists (implicit from the described return fields), the description properly defers return value details. The complexity is high (10 params, async flow), but the description covers the core workflow, quota, and dependencies (status/report tools). The annotation set and schema are extensive, making this description complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 value by explaining the purpose of 'domains' (max 50, duplicates merged) and the meaning of optional fields like brand_aliases and candidate_domains in the context of an audit. This goes beyond what the schema provides, justifying a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies that the tool enqueues an async brand audit across up to 50 domains, with optional depth, aliases, and candidate domains, which clearly differentiates it from siblings like 'brand_audit_single' or 'brand_audit_status'. It gives a precise verb and resource with explicit scope and mode details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells how to use the tool, what it returns immediately, and how to check results (poll status, fetch report). It also mentions quota consumption. However, it does not explicitly say when NOT to use it or compare with other tools like 'brand_audit_single' for smaller audits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brand_audit_get_reportARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Specific target domain. Omit for audit-level aggregate. | |
| auditId | Yes | Audit ID returned by brand_audit_batch_start. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value beyond these by disclosing the notReady polling response, the PDF sidecar metadata (pdfUrl and pdfPending), and the behavior difference with/without target. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at four sentences, each delivering essential information: core purpose with modes, polling behavior, and PDF sidecar details. No redundancy or filler, and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent tool with two parameters and an output schema, the description covers the primary behaviors (two modes, polling, PDF sidecar). It does not discuss error codes or timeouts, but given the output schema exists and annotations cover safety, the description is sufficiently complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters well-described. The description adds that omitting target yields an audit-level aggregate and setting it returns a per-target CheckResult, but this largely restates the schema's description for target. The baseline of 3 is appropriate given the schema already carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches the result JSON for a completed brand audit, distinguishes between two usage modes (with target for per-target CheckResult, without for audit-level aggregate), and differentiates from sibling tools like brand_audit_status by describing the actual data retrieval behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning polling behavior (returns notReady for in-flight audits) and the two modes. However, it does not explicitly state when to use this tool versus alternatives like brand_audit_status or brand_audit_batch_start, leaving the agent to infer the prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brand_audit_singleARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Output view mode. 'csc_complement' produces a CSC-tuned payload; requires enterprise tier. Default 'standard'. | |
| depth | No | Discovery depth. standard is default; deep expands candidate seeding and enrichment fanout. | |
| domain | Yes | Target domain to audit (e.g., apple.com). | |
| format | No | Inline output mode. Defaults to "both". | |
| planner_mode | No | Planner mode for staged discovery fanout. observe emits metrics; enforce applies candidate-backed signal caps. | |
| brand_aliases | No | Optional public brand aliases to seed, such as product or legal-entity labels. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. | |
| discovery_mode | No | Brand-discovery pipeline mode. classic = legacy sweep; tiered = tenant/graph/evidence wrappers first (BlackVeil-internal). | |
| min_confidence | No | Drop candidates whose combined confidence falls below this threshold (0-1, default 0.5). | |
| candidate_domains | No | Optional candidate domains supplied by the caller for corroboration. | |
| ownership_verified | No | Caller 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
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds important behavioral context: quota gating by tier (with specific limits per tier) and the classification categories produced. It also implies that the tool may use caching (by mentioning force_refresh param in schema). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loading the core action. It is concise and covers purpose, behavior, and constraints. However, it could be slightly more structured (e.g., breaking out quota limits) and reduces redundancy ('full brand audit' then detailing same). Still, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 params, output schema exists, no nested objects), the description adequately covers the tool's purpose, outcome (classification types), and behavioral constraint (quotas). It omits mention of prerequisites like ownership_verified (important for certain tiers) and the 'view' parameter's csc_complement mode, but these are documented in the schema. Overall, provides a solid mental model for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all 11 parameters, so baseline is 3. The description echoes some parameters (depth, brand_aliases, candidate_domains) but does not add new semantic meaning beyond what the schema already provides. For example, the schema already explains 'depth' enum values and 'view' for csc_complement. The description contextualizes the workflow but does not enhance individual parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a 'full brand audit on a single target' with specific actions: discovers brand-related domains, looks up registrar/registrant, and classifies relationships into detailed categories (consolidated, shadowIt, etc.). The name 'brand_audit_single' and sibling context (e.g., brand_audit_batch_start, check_*) strongly differentiate this as the comprehensive single-target audit tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit when-to-use vs when-not-to-use guidance or mention alternatives like discover_brand_domains or brand_audit_batch_start. However, the description inherently implies usage for a full single-target audit, and the presence of many check_* siblings suggests this is for broad analysis. An agent can infer context from the name and description, but lacks clear directives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brand_audit_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| auditId | Yes | Audit ID returned by brand_audit_batch_start. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds value by detailing the return format (status enum, progress 'N/M', per-target statuses) and the owner-scoping behavior (notFound for other principals). It also implies polling semantics. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that efficiently convey the core purpose, return types, and a key constraint. Every word adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a status polling tool, the description covers the essential behavior: status codes, progress reporting, per-target details, scoping, and source of auditId. Combined with the output schema (present), the agent has sufficient information to use and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for auditId. The description adds semantic context: the parameter must come from brand_audit_batch_start and that owner-scoping means other-owned IDs return notFound. This goes beyond the schema's basic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool polls the status of an enqueued brand audit, specifying return fields (audit-level status, progress, per-target statuses). It distinguishes from siblings like brand_audit_batch_start and brand_audit_get_report by focusing on status polling, and adds owner-scoping constraints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after brand_audit_batch_start (auditId from there) and notes owner-scoping behavior. It clarifies that audit IDs belonging to others surface as notFound. While it does not explicitly exclude alternatives or provide when-not guidance, the use case is clear and contextually sufficient given sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_agent_discoveryARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Resolve a single named agent ({name}.{domain}) instead of enumerating the zone. | |
| domain | Yes | Domain to check for published agent-discovery records (e.g., example.com). | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| protocol | No | Scope discovery to a single agent protocol index (_index._{protocol}._agents). Omit to sweep the zone. | |
| verify_cap | No | Fetch 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_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
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 value by explicitly stating 'Read-only', detailing the specific checks performed, and noting the use of Private-Use SVCB param code points pending IANA assignment. This provides behavioral context beyond the annotations, though it does not cover caching behavior or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of four sentences, front-loaded with the main purpose. It is concise and packs relevant information without being verbose. It could be slightly more structured (e.g., bullet points), but it is still efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters (100% schema coverage), annotations, and an output schema, the description covers the key aspects: what it checks, that it is read-only, and the standard it follows. It does not detail output format (covered by output schema) or error handling, but it is complete enough for a security assessment tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 per-parameter details beyond what the schema provides, but it offers overall context (e.g., 'sweep the zone' relates to the protocol parameter). The description is adequate but does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool assesses the security posture of IETF BANDAID agent-discovery records, listing specific checks (SVCB records, DNSSEC anchoring, DANE/TLSA binding, capability-document integrity). It includes a standard reference and uses a specific verb-resource combination ('assess the security posture of ... records'). The distinct focus on agent discovery differentiates it from sibling tools like check_dane, check_dnssec, and check_svcb_https.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly defines the use case by stating the tool is for assessing agent-discovery security posture. It does not explicitly provide when-to-use or when-not-to-use guidance, but the domain-specific nature makes the context clear. No exclusions or alternatives are mentioned, which prevents a 5, but the purpose is sufficiently specific to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_authoritative_dns_infraARead-onlyIdempotentInspect
Check authoritative DNS infrastructure posture for a hostname. Uses BV_INFRA_PROBE when available for raw DNS, routing, RPKI, and vantage-point evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior. Description adds that it uses BV_INFRA_PROBE when available and lists the evidence domains (raw DNS, routing, RPKI, vantage-point), providing useful context beyond annotations. Does not explain fallback behavior if probe unavailable, but still adds value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second adds probe/evidence details. No wasted words, front-loaded, and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is moderately complex (multiple evidence types, probe dependency). Description covers core purpose and probe usage, and output schema handles return details. Missing explicit notes on when not to use or behavior when BV_INFRA_PROBE is unavailable, but with strong annotations and schema, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters, so baseline is 3. The description does not add additional parameter-level meaning beyond what the schema already provides; it only hints at hostname scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Check' with resource 'authoritative DNS infrastructure posture', clarifying scope beyond individual DNS record checks. Mentions specific evidence types (routing, RPKI, vantage-point) which distinguishes it from sibling tools like check_ns or check_dnssec.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for overall authoritative DNS infrastructure assessment but does not explicitly state when to prefer this tool over siblings like check_ns or check_dnssec. No exclusions or alternative tool guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_bimiARead-onlyIdempotentInspect
Check the BIMI brand-logo record at default._bimi.. Validates the logo URL (l=) and the presence of mark-certificate authority evidence (a=) — the a= tag is a bare URL, so the certificate type (VMC or CMC) is not determined — and verifies the DMARC enforcement prerequisite (p=quarantine/reject) that mail clients require before displaying a BIMI logo. Returns findings for a missing/malformed record or unmet prerequisites. Use to assess brand-indicator readiness in inboxes. Part of the scan_domain audit.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=true and destructiveHint=false, the description adds valuable behavioral detail: the a= tag limitation (VMC vs CMC not determined), the DMARC enforcement prerequisite, and the specific validation of l= and a= tags. The return behavior ('Returns findings for a missing/malformed record or unmet prerequisites') is also disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: core action is front-loaded, followed by technical detail, limitation, prerequisite, return behavior, and usage context. The structure flows logically, and despite the density of information, there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity tool with an output schema (which removes the need to describe return structure) and comprehensive parameter definitions, the description covers validation logic, limitations, prerequisites, and use cases thoroughly. Minor gaps include no mention of network/DNS failure edge cases or interaction with the format/force_refresh parameters, but these are adequately handled by the output schema and parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with each parameter clearly documented (e.g., 'Auto-detected if omitted' for format, 'Bypass cache' for force_refresh). The description maintains the baseline 3 by not detracting from the schema but adds minimal parameter-specific value beyond it, sticking to domain-level validation context instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource construction ('Check the BIMI brand-logo record at default._bimi.<domain>') and details exact validation logic (l= tag, a= tag, DMARC prerequisite). The scope is precisely delimited, and the focus on BIMI-specific checks (as opposed to the many sibling DNS-check tools) makes 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use context ('Use to assess brand-indicator readiness in inboxes' and 'Part of the scan_domain audit'). However, it does not name alternative tools or explicitly articulate when NOT to use it, which would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_caaBRead-onlyIdempotentInspect
Look up CAA records for a domain. Shows which Certificate Authorities are authorized to issue certificates. Part of the scan_domain audit.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral traits beyond what the annotations already provide (readOnlyHint, idempotentHint, destructiveHint). It does not disclose caching behavior, rate limits, or any other operational details. With annotations covering safety, the description contributes minimal behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three sentences covering purpose, function, and context. No wasted words; every sentence adds value. It is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, existing output schema, and comprehensive annotations, the description is largely complete. It explains what the tool does and its role in a broader audit. It could briefly mention that it performs a DNS record check, but the name and context already imply this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are well-documented in the input schema (e.g., domain format, verbosity, force_refresh meaning). The tool description does not add any additional semantic value beyond the schema, thus baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool looks up CAA records for a domain, specifying the verb 'Look up' and the resource 'CAA records'. It further explains the purpose (showing which CAs are authorized) and places it in the context of 'scan_domain audit', differentiating it from other DNS check tools among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternative tools like check_dnssec, check_dmarc, or others. The description only mentions it is 'Part of the scan_domain audit' but does not specify conditions or exclusions for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_daneARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
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 behavioral context about MX resolution and TLSA lookup at a specific DNS label, which is useful. However, it does not explain return value structure (despite an output schema existing) or edge cases (e.g., no MX records). With annotations covering the core behavioral traits, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no waste. It front-loads the core action and protocol details, then provides usage guidance, then distinguishes from the sibling tool. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 (which reduces the burden to explain return values), the description is complete for a focused security check tool. It covers purpose, process, and sibling differentiation. Minor gap: it doesn't mention what happens if the domain has no MX records or if DNSSEC is not available, but these are implied by the task and the tool is part of a larger audit suite (scan_domain).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all 3 parameters documented. The description adds value by explaining the domain parameter in the context of SMTP DANE checking and the force_refresh parameter with a usage hint ('Useful after DNS changes'). The format parameter's auto-detection is noted. This goes slightly beyond the schema baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the verb 'Check', the resource 'DANE/TLSA certificate pinning for SMTP at port 25', and the exact process (resolve MX, look up TLSA records at _25._tcp.<mx-host>). It clearly distinguishes itself from the sibling tool check_dane_https by naming the alternative and the different port/protocol.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('when asked if SMTP connections are protected by DANE/TLSA pinning') and when to use the alternative ('For HTTPS DANE at port 443, use check_dane_https instead'). This provides clear context and exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_dane_httpsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true. The description adds value beyond these by specifying the exact DNS lookup target (_443._tcp.{domain}) and noting the tool is part of the scan_domain audit. This extra context about scope and workflow is valuable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loading the main action and then providing technical detail and differentiation. It is concise with no wasted words, though slightly redundant with 'port 443' mentioned twice. A tight structure earns a high score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 params with full schema, output schema present), the description covers the core function, DNS lookup mechanism, port, sibling differentiation, and audit context. It lacks mention of prerequisites or error cases but is sufficiently complete for an experienced agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not elaborate on parameters beyond what the schema provides (domain, format, force_refresh). While the schema itself is well-described, the tool description adds no new semantics for the parameters, meeting but not exceeding the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool verifies DANE certificate pinning for HTTPS connections using TLSA records at _443._tcp.{domain}. It explicitly distinguishes itself from the sibling check_dane (SMTP port 25), providing a specific verb and resource with differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names the sibling tool check_dane and explains the port difference (HTTPS vs SMTP), giving clear context for when to use this tool over that one. However, it does not provide exclusions or guidance for other related siblings (e.g., check_ssl, check_svcb_https), so the guidance is good but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_dblARead-onlyIdempotentInspect
Check domain reputation against DNS-based Domain Block Lists (Spamhaus DBL, URIBL, SURBL). Returns listing status with decoded return codes.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety and idempotency. The description adds that results include decoded return codes, but does not disclose caching behavior, rate limits, or what constitutes a 'listing'—though the force_refresh parameter hints at caching. The description provides moderate additional context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The first sentence states the purpose and target lists, the second describes the return value. Highly efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is concise but lacks details on the output structure (though an output schema exists), potential performance implications, or how 'decoded return codes' map to actual listing statuses. For a tool that queries multiple DNS block lists, it provides functional completeness but not operational depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 with descriptions. The tool description adds no extra meaning to parameters beyond what the schema provides. Baseline 3 is appropriate when schema fully covers parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool checks domain reputation against specific DNS-based block lists (Spamhaus DBL, URIBL, SURBL) and returns listing status with decoded codes. This distinguishes it from similar tools like check_rbl, which typically check IP-based RBLs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names the exact block lists, implying usage for domain reputation checks, but provides no explicit guidance on when to use this tool versus alternatives (e.g., check_rbl, check_mx_reputation). No when-not-to-use or prerequisite conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_dkimARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| selector | No | DKIM selector. Omit to probe common ones. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false. The description adds behavioral detail: it probes common selectors, validates algorithms, and reports key strength. There is no contradiction. The description adds value beyond the annotations by explaining the internal probing and validation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, followed by specific capabilities and usage guidance. Every sentence 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 4 parameters (100% schema coverage), clear annotations, existence of an output schema, and the family of sibling check_* tools, the description fully covers what the tool does, why to use it, and how it fits into the audit context. No missing information is needed 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes all four parameters well. The description mentions 'probes common selectors' which adds context for the optional selector parameter, but does not significantly enhance parameter 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it looks up DKIM records, probes common selectors, validates signing algorithms (RSA-1024/2048, Ed25519), and reports key strength. It distinguishes itself from the many sibling check_* tools by focusing specifically on DKIM verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use to verify that outbound email signatures are cryptographically sound' and places it as part of scan_domain audit. While it doesn't explicitly list alternatives or when not to use, the domain-specific purpose and sibling names imply when to invoke it. A small gap in explicit comparative guidance keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_dmarcARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
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 value by detailing the specific DMARC fields returned (enforcement, alignment, reporting) and notes it is 'part of the scan_domain audit,' which gives context about its role. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. The first sentence states the core action and resource, the second elaborates on returned fields, and the third provides usage guidance and sibling differentiation. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters (all documented in schema), an output schema, and clear annotations, the description covers what is needed: purpose, output specifics, usage context, and distinguishing from related tools. The agent can confidently invoke this tool without additional clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaning for the parameters (domain, format, force_refresh) beyond what the schema already provides. It mentions 'domain' implicitly in the first sentence but offers no additional details on formatting or caching behavior. The schema itself is sufficient, so 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Look up and validate the DMARC record for a domain') and lists specific outputs (enforcement level, alignment mode, reporting destinations). It explicitly distinguishes from two sibling tools (check_shadow_domains and assess_spoofability), 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: 'determine a domain's DMARC enforcement level, whether it sends aggregate reports, or if it is protected against email impersonation.' It also names two distinct alternatives and explains what they check. While it does not state when NOT to use this tool, the positive guidance is strong enough for an agent to select appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_dnskey_strengthARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature. The description adds value by specifying exactly what is checked (algorithm types, deprecated status) and what it does NOT do (check DNSSEC chain validation), which clarifies behavioral boundaries 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tightly written sentences front-load the core purpose, then detail what is reported, flag deprecated algorithms, and give usage examples. No wasted words. Achievement of conciseness without sacrificing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only one required parameter (domain), a detailed output schema (mentioned as existing), and full annotation coverage, the description is complete. It explains what is checked, what is reported, and what is not covered, leaving no significant gaps for an AI agent to fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds value by explaining that format is auto-detected if omitted and that force_refresh bypasses cache 'after DNS changes', providing context beyond schema defaults and enum descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Audit', 'Reports', 'flags') and clearly identifies the resource ('cryptographic strength of DNSKEY signing algorithms used for DNSSEC'). It lists example algorithms and distinguishes itself from sibling tools like check_dnssec (which validates chains) by stating it reports algorithm strength independent of chain validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance ('Use when asked what algorithm is used for DNSSEC signing keys, or if deprecated DNSKEY algorithms are in use') and implies alternatives by noting independence from DNSSEC chain checks (contrasting with check_dnssec sibling). The scope is clear: auditing algorithm strength, not validation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_dnssecARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and non-destructiveHint. The description adds value by stating it validates DNSKEY and DS records, reports enablement and validation status, and mentions it checks against cache poisoning and DNS spoofing—behavioral context beyond what annotations offer. The description is consistent 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with main purpose, then provides behavioral details, and ends with contextual note about being part of scan_domain. Every sentence earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, full schema coverage, rich annotations (readOnly, idempotent, openWorld), and presence of an output schema, the description is complete. It explains what the tool checks, how it validates, and its role in a broader audit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds marginal value by explaining the domain parameter in context of DNSSEC check, but the schema already describes parameters well. The description doesn't add new parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks DNSSEC status for a domain, with specific verbs like 'verifies', 'validates', and 'reports'. It distinguishes itself from many DNS-related sibling tools (e.g., check_dnssec_chain, check_nsec_walkability) by focusing on high-level DNSSEC validity and tamper-proof status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this is part of the scan_domain audit, which implies use in a security audit workflow. While it doesn't explicitly say when not to use it or name alternatives, the sibling list provides strong differentiation cues. No specific usage exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_dnssec_chainARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
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 behavioral context beyond these by detailing that the tool traces DS/DNSKEY records and algorithm usage at each zone level, and implies per-zone walking. No contradictions are present (annotation_contradiction=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences long, with no filler or repetition. The first sentence front-loads the core purpose (walking the chain with specific records). The second sentence provides clear usage guidance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (so return values are documented), three well-documented parameters, and comprehensive annotations, the description is nearly complete. It covers purpose, scope (zone-level tracing, algorithm usage), and usage guidance. One minor gap: it doesn't mention potential time or network requirements, but that is often implied and not critical for selection. Overall, it's adequate for confident agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (domain, format, force_refresh) are already documented in the input schema. The description does not add extra semantic detail for the parameters beyond what the schema provides. A score of 3 is appropriate as the schema carries the full burden, and the description adds minimal parameter-specific value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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'), including the records traced (DS/DNSKEY) and algorithm usage. It distinguishes itself from siblings like check_dnssec (general validity) and check_dnskey_strength (key strength) by focusing on step-by-step delegation path tracing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'when asked to trace the chain of trust from the DNS root, or to see the full DNSSEC delegation path step by step.' This provides clear context. While it does not explicitly mention when not to use it or list alternative sibling tools, the usage scenario is specific enough to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_fast_fluxARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| rounds | No | Number of query rounds (3-5, default 3). | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive hints. The description adds meaningful behavioral detail: it performs multiple query rounds, compares IP answer sets and TTLs, and ties the behavior to botnet detection. This goes beyond the annotations and helps the agent understand the tool's operational profile 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose ('Detect fast-flux DNS behavior'), followed by a clear explanation of the method and rationale. Every sentence contributes, with no filler or repetition of schema/annotation content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 strong annotations, the description covers the essential context: what the tool does, how it works (multi-round queries), and why it matters. It does not explain return values (covered by output schema) or explicitly address edge cases like cache behavior (covered by parameter descriptions), but it is adequately complete for tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, rounds, force_refresh) are already well documented. The description adds high-level context (multiple rounds, comparison of IPs/TTLs) but does not explain individual parameters beyond the schema. Baseline 3 is appropriate given the rich schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Detect fast-flux DNS behavior' — a specific verb and resource that clearly states the tool's function. It further explains the methodology (multiple rounds of A/AAAA queries, IP rotation check) and distinguishes it from generic DNS 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool (when fast-flux detection is needed) and provides context (botnet/malicious infrastructure). However, it does not explicitly name alternative tools or state exclusion conditions (e.g., when a single DNS lookup suffices), leaving some ambiguity among the many sibling DNS-check tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_http_securityARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds value by detailing what headers are inspected, what issues are flagged (e.g., unsafe-inline, weak X-Frame-Options), and detection of CDN/WAF interception. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph of 4-5 sentences. It front-loads the core purpose ('Audit a domain's browser-facing HTTP security headers') and then lists specifics. Every sentence contributes useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description doesn't need to explain return values. It covers what headers are checked, what vulnerabilities are flagged, and mentions CDN/WAF detection. Combined with annotations, it provides sufficient context for a security audit tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add new parameter-level context beyond the overall purpose. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool audits HTTP security headers, listing specific headers (CSP, X-Frame-Options, etc.) and their purposes. It distinguishes itself from sibling tools like check_ssl (SSL/TLS) and check_dmarc (email) by focusing on browser-facing HTTP security.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for assessing HTTP security headers but lacks explicit guidance on when to use this tool versus alternatives like check_ssl or scan_domain. No when-not-to-use or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_lookalikesARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds valuable context that these are 'active' domains registered by attackers and intended for phishing, which goes beyond the structured fields. It does not fully describe rate limits or cache behavior, but given the annotation coverage, the additional context justifies a score 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences: purpose, technical scope, and sibling differentiation. Every sentence carries distinct value with no filler or redundancy. It front-loads the core action and immediately clarifies boundaries.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, full schema coverage, explicit annotations, and presence of an output schema, the description covers the essential context. It explains what the tool detects, why it matters (phishing), and how it differs from related tools. Additional return-value details are unnecessary because the output schema is available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with each parameter (domain, format, force_refresh) already documented. The tool description does not add further parameter-level detail, but it also does not need to because the schema is sufficient. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Detect') and clearly identifies the resource: active typosquat and lookalike/homoglyph domains that impersonate a brand and could be used in phishing. It further specifies technical detail (character-substitution and visual-confusion domains) and explicitly distinguishes itself from sibling tools, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names comparator tools and defines boundaries: 'Distinct from check_shadow_domains (TLD variants with auth gaps) and discover_brand_domains (legitimate brand portfolio).' This tells the agent when to prefer this tool over alternatives and clarifies what it does not cover.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_mta_stsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behaviors. The description adds value by detailing the mechanism: queries _mta-sts.<domain>, fetches the policy file, and reports mode and MX coverage. This goes beyond the annotations but does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: first states purpose, second explains mechanism and output, third provides usage guidance and differentiation. Every sentence adds value with no redundancy, perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 well-documented parameters, an output schema, and comprehensive annotations. The description covers purpose, mechanism, output fields, and usage context, making it 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.
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) are documented in the schema. The description does not add new parameter semantics beyond implying the domain is the primary input. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks MTA-STS enforcement for a domain, specifies the verb 'Check whether a domain enforces SMTP TLS', and distinguishes from the sibling check_dane by mentioning TLSA pinning, making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use to verify whether inbound SMTP is protected against TLS downgrade or MITM — distinct from check_dane which uses TLSA pinning', providing direct guidance on when to use this tool and contrasting it with a closely related alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_mxARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, and non-destructive behavior. The description adds context by explaining what the tool actually does with the MX records (identify servers and provider). It does not contradict annotations and provides useful behavioral insight 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main action. Every sentence adds value: purpose, what it identifies, usage guidance, and context. No unnecessary words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, 1 required, output schema present), the description is sufficiently complete. It explains the core function, usage scenarios, and its role in the broader scan_domain audit. The presence of an output schema eliminates the need to describe return values. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 parameter-level details beyond what the schema already provides. The description mentions 'domain' implicitly but no additional semantics for 'format' or 'force_refresh'. This is adequate given the schema's thoroughness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Look up' and the resource 'MX records for a domain'. It specifies what it identifies (mail servers and email hosting provider) and provides concrete examples. It distinguishes itself from sibling tools like check_mx_reputation by focusing on the MX record lookup and provider identification. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'when asked which email provider hosts inbound mail for a domain, or to see MX record configuration'. It also mentions it's part of the scan_domain audit, providing context. However, it does not explicitly exclude other scenarios or mention alternatives, which is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_mx_reputationARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, open-world, and non-destructive. The description adds behavioral context: it queries multiple external RBLs (Spamhaus, Barracuda, etc.), performs reverse DNS checks, and relies on caching (with force_refresh bypass). These are useful beyond the annotations, though it does not specify cache TTL or behavior when MX records are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first delivers the core action with specific details (RBLs, reverse DNS), and the second provides usage context and sibling differentiation. No wasted words, fully front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 doesn't need to detail return values. It covers what the tool checks (blocklists, rDNS), caching behavior, and when to use it. Minor gaps: no mention of what happens if the domain has no MX records, but the output schema likely handles that. Overall complete for a reputation check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning by explaining that 'domain' is used to resolve MX records and that the tool checks blocklists/reverse DNS, which gives context beyond the schema's simple descriptions. This raises the score slightly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks mail server MX IPs against spam blocklists and verifies reverse DNS. It explicitly distinguishes from the sibling tool 'check_rbl' by stating it targets MX hosts rather than a specific IP, leaving no ambiguity about its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 directly contrasts with check_rbl, which checks a specific IP, giving clear context for when to choose this tool over its sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_nsARead-onlyIdempotentInspect
Audit a domain’s nameserver delegation and redundancy. Identifies the DNS hosting provider and, when the infrastructure probe is available, directly compares parent and child NS sets, verifies authoritative AA responses, and checks required glue addresses. Use to detect stale registrar delegations, lame nameservers, and intermittent resolution risk. Part of the scan_domain audit.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and no destructive behavior, so the safety profile is covered. The description adds meaningful context: it mentions that comparison uses 'the infrastructure probe' (when available), notes specific checks (authoritative AA, glue addresses), and implies a caching mechanism (by mentioning force_refresh in schema). One minor gap: it doesn't explain output structure or what happens when probe is unavailable, but annotations and output schema mitigate this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact (4 sentences) and front-loaded with the core action. Every sentence serves a purpose: action+scope, inputs/checks, use cases, and context. No filler or duplication of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema (3 params, all documented), strong annotations (readOnly, idempotent, non-destructive), and the presence of an output schema (not shown but noted via 'has output schema: true'), the description is complete. It explains what the tool does, what it checks, when to use it, and where it fits in the broader audit suite. No critical gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 goes beyond by explaining the tool's purpose in a way that gives meaning to the parameters: 'domain', 'format', and 'force_refresh' gain context from the audit goal. However, it doesn't explicitly document each parameter beyond what the schema already provides, so the added value is moderate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific action verb 'Audit' and clearly identifies the resource 'domain nameserver delegation and redundancy'. It distinguishes this tool from its many siblings (e.g., check_dnssec, check_resolver_consistency) by detailing what it uniquely checks: NS delegation, redundancy, DNS hosting provider, AA responses, and glue addresses. The purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use to detect stale registrar delegations, lame nameservers, and intermittent resolution risk.' It also positions it as 'Part of the scan_domain audit', providing context for integration. While it doesn't explicitly name alternative tools, the specific use cases naturally differentiate it from sibling probes (e.g., check_dnssec or check_fast_flux), effectively guiding agent choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_nsec_walkabilityARead-onlyIdempotentInspect
Assess zone walkability risk by analyzing NSEC3PARAM configuration. Detects plain NSEC zones, weak NSEC3 parameters, and opt-out flags.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
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, fully covering the safety profile. The description adds value beyond annotations by specifying exactly what is detected (plain NSEC zones, weak NSEC3 parameters, opt-out flags), giving the agent behavioral insight into the analysis scope without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that immediately state the purpose and specific detections. Every phrase ('Assess zone walkability risk,' 'analyzing NSEC3PARAM configuration,' 'Detects plain NSEC zones...') adds value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool having 3 parameters and an output schema, the description is complete enough for the given complexity. It covers the tool's purpose, key analytical capabilities, and the output schema (though not explicitly described) likely structures the detection results. The high annotation coverage and schema richness mean the description needn't elaborate further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters with descriptions including domain constraints (min/maxLength), format enum, and force_refresh semantics. The description adds no additional parameter details beyond the schema, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool assesses 'zone walkability risk' by analyzing 'NSEC3PARAM configuration,' with specific detections for 'plain NSEC zones, weak NSEC3 parameters, and opt-out flags.' This distinct purpose and resource distinguish it from sibling tools like 'check_dnssec' and 'check_dnssec_chain,' which focus on broader DNSSEC validation and chain verification, respectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when evaluating DNSSEC security of a zone, particularly regarding NSEC/NSEC3 weaknesses. It does not explicitly state when to use this tool versus alternatives like 'check_dnssec' or 'check_zone_hygiene,' but the specialized focus on NSEC3PARAM makes the context clear. No explicit when-not or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_ptrARead-onlyIdempotentInspect
Verify forward-confirmed reverse DNS (PTR/FCrDNS) for mail servers. Part of the scan_domain audit.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint covering safety and idempotency. The description adds context about mail server focus and audit role, but does not elaborate on caching, rate limits, or other behavioral nuances beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and resource. No wasted words; every sentence earns its place by defining the tool and placing it in the audit workflow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the existence of an output schema, the description adequately covers purpose and context. It lacks details on prerequisites or caching behavior, but the force_refresh parameter and annotations fill some gaps. For a straightforward DNS check, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds minimal context (e.g., 'for mail servers' hints at domain use), but does not explain format or force_refresh beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Verify' and clearly identifies the resource as 'forward-confirmed reverse DNS (PTR/FCrDNS) for mail servers', which is distinct from sibling check_* tools that focus on other DNS records or security aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used within a 'scan_domain audit' and for mail servers, but lacks explicit guidance on when to prefer this over alternatives like check_dnssec or check_mx. Usage context is implied but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_rblARead-onlyIdempotentInspect
Check MX server IP reputation against 7 DNS-based Real-time Blocklists (SpamCop, UCEProtect, Mailspike, Barracuda, PSBL, SORBS). Resolves MX hosts to IPs first.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read operation. The description adds value by disclosing the 7 specific blocklists, the MX resolution step, and implicitly that results are cached (since force_refresh parameter exists). The description is consistent with annotations—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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences. The first sentence states the core function, blocklist count, and specific blocklist names. The second sentence clarifies a key prerequisite (MX resolution). Every word earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, 100% schema coverage, an output schema, and comprehensive annotations, the description is nearly complete. It covers purpose, RBL list, and resolution behavior. Minor omissions: it doesn't explain what format options affect or that the tool might take time due to 7 lookups. But overall, it's very complete for an RBL check tool within the sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents parameters well. The description adds context by explaining the MX resolution process and the specific blocklists used, which indirectly clarifies the domain parameter's role. The force_refresh parameter's purpose ('Bypass cache and run a fresh check. Useful after DNS changes.') is described, though this comes from the schema description, not the main description. The description mentions the MX resolution but doesn't add syntax or behavior beyond parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 7 specific DNS-based blocklists (SpamCop, UCEProtect, Mailspike, Barracuda, PSBL, SORBS). It also mentions resolving MX hosts to IPs first, which distinguishes it from other check_* siblings like check_mx (which likely only resolves MX records) or check_dbl (which checks domain blocklists). The verb 'check' combined with 'reputation against 7 DNS-based Real-time Blocklists' is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used to assess email deliverability risk by checking RBL listings. It mentions the specific blocklists checked, helping the agent understand the scope. However, it does not explicitly state when to use this tool versus alternatives like check_mx_reputation (which may check other reputation sources) or check_realtime_threat_feed. The description also lacks guidance on when not to use it, such as for domains without MX servers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_realtime_threat_feedARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
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: 'Operator-deploy only' explains deployment dependency, and 'degrades to info when unprovisioned' describes fallback behavior. This gives the agent a clear picture of the tool's operational constraints and non-standard behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: stating the core function, differentiating from siblings, and noting deployment behavior. No extraneous words or repetition. Information is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters (all documented in schema), a full output schema, and explicit annotations, the description covers all essential context: what the tool does, its niche among many sibling tools, and its deployment-dependent behavior. The description is sufficient for an agent to understand when and how to use it without consulting additional sources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 new parameter-level detail beyond what is already in the schema (e.g., 'domain' and 'format' are well-described in the schema). The mention of 'Distinct from DNSBL checks' indirectly hints at the domain parameter's role but does not significantly enhance parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'Check a domain', the resource ('BlackVeil real-time threat intelligence'), and the context ('Distinct from DNSBL checks'). It also specifies operational constraints ('Operator-deploy only; degrades to info when unprovisioned'). This clearly defines the tool's purpose and distinguishes it from sibling tools like check_rbl or check_dbl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 this tool: it is an alternative to DNSBL checks for real-time threat intelligence. It also mentions that it is operator-deployed and degrades when unprovisioned, which guides usage in different environments. However, it does not explicitly list when not to use it or enumerate alternatives beyond DNSBL.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_resolver_consistencyARead-onlyIdempotentInspect
Check DNS consistency across 4 public resolvers.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| record_type | No | Record type. Omit for A/AAAA/MX/TXT/NS. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_setARead-onlyIdempotentInspect
Check the DNS root server set against official root hints, root glue, delegation, serial, and DNSKEY cross-root evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output verbosity. Auto-detected if omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. The description adds specific behavioral context about the types of evidence checked, which is valuable but not essential beyond what annotations provide. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the core purpose immediately. There is no redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown but present), the description does not need to explain return values. The description covers the inputs and the verification scope adequately. One minor gap: it could clarify what 'cross-root evidence' entails, but the output schema likely handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already describes the single parameter 'format' with its enum and auto-detection behavior. The description does not add any additional parameter information, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 'the DNS root server set', and lists specific evidence types (root hints, root glue, delegation, serial, DNSKEY cross-root) that distinguish it from sibling tools like check_ns, check_dnssec, and check_dnskey_strength.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for verifying root server set integrity against official evidence, but it does not explicitly state when to use this tool versus alternatives (e.g., check_ns for nameserver checks, check_dnssec for DNSSEC validation). No when-not-to-use or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_shadow_domainsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds behavioral context beyond these: it checks email authentication (SPF/DKIM/DMARC), looks for weak/missing auth, and mentions cache bypass via force_refresh. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero wasted words. First sentence states purpose with examples. Second sentence gives usage guidance and sibling distinction. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 (not shown but indicated), the description need not explain return values. It covers the tool's focus (email auth on TLD variants), differentiates from a key sibling, and addresses caching. No major gaps for a single-domain check tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add per-parameter details, but it provides overall context that helps interpret the domain parameter. Baseline 3 is appropriate as the description adds no new param semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds 'alternate TLD variants of a domain' with weak email auth for spoofing, using specific verbs and resource. It gives concrete examples (example.net, example.co) and explicitly distinguishes itself from the sibling tool check_lookalikes, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it: 'when asked about TLD variants with email auth gaps'. It contrasts with check_lookalikes, providing clear differentiation. It does not mention prerequisites or when not to use, but the positive guidance is strong enough for a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_spfARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations: it lists outputs (IP addresses, third-party senders, syntax errors, trust surface) and mentions it is a lookup operation. Annotations already declare readOnlyHint:true, idempotentHint:true, destructiveHint:false, so the safety profile is clear. The description reinforces this but does not go deeper into details like caching behavior (force_refresh parameter is only in schema) or output structure—adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences plus a usage note) and front-loaded with the primary action. Every sentence contributes: first sentence defines the core purpose, second details outputs, third gives usage guidance, fourth notes integration. No wasted words, though it could be slightly more compact by merging the last two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the output schema exists and annotations are rich (readOnly, idempotent, non-destructive), the description covers all essential aspects: what the tool does, what it returns, when to use it, and its audit context. No missing information that would hinder an AI agent's ability to select and invoke this tool correctly among 70+ sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 any parameter-specific details—it focuses on the tool's overall purpose. Since the schema already describes all three parameters (domain, format, force_refresh) and their roles are standard, the description adds no extra semantic value. An example of format values or the effect of force_refresh would improve this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Look up and validate the SPF record for a domain.' It specifies the verb (look up/validate), resource (SPF record) and domain context. It distinguishes itself from siblings like 'resolve_spf_chain' and 'check_dmarc' by being focused on SPF validation, listing authorized senders, and flagging syntax errors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use when you need to know who is permitted to send email as a domain' and notes it is 'Part of the scan_domain audit.' This provides clear context for when to use the tool, but it does not explicitly state when NOT to use it or mention alternatives (e.g., resolve_spf_chain for detailed chain resolution). Lack of exclusions keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_srvARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint. The description adds value by explaining parallel probing, the specific prefixes checked, and that insecure advertisements are flagged. This provides behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two well-structured sentences. The first sentence delivers the core purpose and action, the second provides a usage cue. No fluff or redundancy; every sentence is earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 parameters, output schema exists, rich annotations), the description covers purpose, probing scope, parallel execution, return content, and usage context. It does not need to explain return format since an output schema is present. The description is complete for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% as all three parameters have descriptions. The description does not add additional meaning beyond the schema: it does not expand on domain validation, format options, or force_refresh behavior. Baseline 3 is appropriate when the schema already handles the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb 'Map' and resource 'domain's DNS-visible service footprint'. It clearly states it probes ~16 common SRV record prefixes and returns discovered services along with insecure flagging. This distinguishes it from sibling tools like check_mx or check_spf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when asked to map DNS-visible services or flag insecure service advertisements.' This provides a clear usage context. However, it doesn't mention when not to use it or suggest alternative tools for specific record types, which would improve the guidance given the many sibling check_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_sslARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it warns that certificate data comes from Certificate Transparency logs and 'may differ from the one currently served.' It also explicitly states what is excluded (TLS protocol versions, cipher suites). Annotations already indicate readOnlyHint, idempotentHint, non-destructive, so the description complements them without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. It efficiently covers scope, data source caveats, and exclusions in 4 sentences. Minor redundancy: 'read from public Certificate Transparency logs' could be tighter, but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (the score mentions 'has output schema: true'), the description does not need to detail return values. It covers key behavioral aspects (caveats, exclusions, usage). However, for a tool with 3 parameters and potential caching nuances, a brief note on default caching behavior or typical latency could strengthen completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds minimal value beyond the schema: it mentions 'domain' implicitly through 'Check the HTTPS/TLS posture of a domain' and notes the force_refresh is 'Useful after DNS changes' in the schema itself. No new semantic insight is added beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Check the HTTPS/TLS posture of a domain' and lists specific checks (HTTPS reachability, HSTS policy, redirect, certificate metadata). It differentiates from siblings like check_http_security and scan_domain by mentioning it is 'Part of the scan_domain audit,' but does not explicitly distinguish from all reading-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context, e.g., 'Use to verify HTTPS/HSTS configuration and certificate issuer/expiry.' It also mentions what is NOT returned (negotiated TLS protocols), which guides agents away from expecting that data. However, it does not explicitly state when NOT to use this tool or provide alternative sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_subdomailingARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds value by specifying that the tool analyzes the SPF include chain, which is a specific behavioral trait not captured in structured data. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a brief note—no wasted words. The first sentence front-loads the primary purpose, followed by usage guidance in the second, and ends with the audit context. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (specifies return values) and thorough annotations (safety, idempotency), the description covers the essential context: what the tool does, when to use it, and its role in a broader audit. It does not explain integration with related sibling tools like resolve_spf_chain, but that is not critical for basic selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 additional meaning beyond what the schema already provides for the three parameters (domain, format, force_refresh). It mentions 'SPF include chain' contextually but does not elaborate on parameter details or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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. This specific verb+resource combination distinguishes it from sibling tools like check_subdomain_takeover and check_spf, which cover related but distinct concerns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool: '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.' It also notes it's part of the scan_domain audit, providing context. It does not explicitly name alternatives for when not to use it, but given the sibling list, the usage scope is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_subdomain_takeoverARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com). | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| subdomains | No | Optional 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_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds value by explaining the sweeping mechanism (CNAMEs, 16 providers), the built-in 15-name list, caching behavior (force_refresh), and parameter constraints. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a concise usage note. Every sentence is purposeful: purpose, detection scope, usage context, and companion tool. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, 100% schema coverage, output schema present, full annotations), the description is complete. It explains the built-in subdomain list, parameter customization, caching, and pairing with discover_subdomains. No critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds meaningful context for the 'subdomains' parameter (explicit list, source, capping, dedup) and 'force_refresh' (bypass cache). The 'domain' and 'format' parameters are not enhanced beyond the schema, but the overall addition is solid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('sweep subdomains'), the vulnerability ('dangling CNAMEs pointing to deprovisioned cloud services'), and the scope ('subdomain takeover'). It enumerates 16 provider families, distinguishing it from sibling check_* tools that focus on other security aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage context: 'Use when asked if subdomains are pointing to deprovisioned cloud services.' Also advises pairing with discover_subdomains and notes that discover_subdomains returns a CT sample, not a full inventory. The description lacks an explicit 'when not to use' but the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_svcb_httpsARead-onlyIdempotentInspect
Validate HTTPS/SVCB records (RFC 9460) for modern transport capability advertisement. Part of the scan_domain audit.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint as true, and destructiveHint as false, so the safety profile is well-covered. The description adds valuable behavioral context by mentioning 'modern transport capability advertisement' and the RFC standard. It does not contradict annotations, and complements them with the domain-specific purpose. One could argue for a 5, but the description does not detail caching behavior beyond what the 'force_refresh' parameter implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every sentence adds value. The first sentence defines the tool's function with RFC specificity, and the second provides organizational context. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a clear input schema (100% coverage), comprehensive annotations, an output schema, and a straightforward domain-checking purpose, the description is complete. It does not need to explain return values because the output schema exists. The RFC reference and audit context provide sufficient richness for the agent to use the tool correctly alongside many sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds marginal value by referencing RFC 9460 which implies the validation standard, and mentions 'part of the scan_domain audit' which contextually ties the parameters (domain, format, force_refresh) to a broader audit workflow. However, it does not elaborate on the 'format' parameter beyond the schema, nor explain how 'force_refresh' interacts with caching. Still, the high schema coverage means the schema carries the bulk of the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 for modern transport capability advertisement, using a specific verb ('validate') and resource ('HTTPS/SVCB records'). It also identifies the tool as part of the 'scan_domain audit', which helps distinguish it from the many sibling tools like check_caa, check_dane, and others that operate in the same domain audit context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions this is part of the 'scan_domain audit', giving some context, but does not explicitly say when to use this tool vs alternatives like check_dane_https, check_http_security, or check_ssl. There is no guidance on when not to use it or what prerequisites are needed. The agent must infer usage from the RFC 9460 reference and the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_tlsrptARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, etc.), the description details the DNS query, validation of the reporting destination, and flagging of missing records, duplicates, or invalid URIs. This adds substantial 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3-4 sentences) and front-loaded with the core purpose. Every sentence contributes useful information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, output schema, clear annotations), the description fully covers the tool's behavior, relationship to other checks, and expected outcomes. No gaps remain for an agent to understand invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 value by explaining the DNS query pattern (_smtp._tls.<domain>) and the validation of rua= mailto:/https:, which gives semantic meaning to the domain parameter beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks for SMTP TLS Reporting (TLS-RPT) configuration by querying _smtp._tls.<domain> and validating the record. It distinguishes itself from sibling tools like check_mta_sts by explicitly noting it complements MTA-STS and 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by stating the tool complements MTA-STS and is part of a domain audit, which helps an agent understand when to use it. However, it does not explicitly exclude alternative tools or provide direct guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_txt_hygieneBRead-onlyIdempotentInspect
Audit TXT records for stale entries and SaaS exposure.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false, indicating safe, non-destructive behavior. The description adds focus on 'stale entries' and 'SaaS exposure' but doesn't disclose caching, rate limits, or error handling. With annotations present, the description provides minimal additional 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it is very terse. It is not front-loaded with key usage guidance; it simply states the purpose. Still, it avoids verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, an output schema, and 100% schema coverage, the description is too minimal. It does not explain what 'stale entries' or 'SaaS exposure' mean in practice, nor does it help the agent understand when to use this tool over similar sibling tools. The output schema exists, so return values are covered, but the overall context is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the input schema already documents all three parameters with descriptions. The tool description adds no additional parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Audit TXT records for stale entries and SaaS exposure' provides a clear verb (audit) and resource (TXT records), with specific purposes. It distinguishes from sibling tools like check_spf or check_dmarc by indicating a broader audit of TXT records, though it could be more explicit about differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as check_spf, check_dmarc, or check_zone_hygiene. There are no prerequisites, exclusions, or context signals to help the agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_zone_hygieneARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as readOnlyHint: true, idempotentHint: true, and destructiveHint: false. The description adds that it identifies sensitive subdomains and stale records, matching the read-only audit character. However, it does not disclose any behavioral nuances beyond the annotations, such as data freshness details or the fact that 'force_refresh' bypasses cache. Score is adequate but not elevated due to good 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the main purpose ('Audit DNS zone hygiene'), and provides concrete examples of findings (sensitive subdomains, stale SOA records, propagation issues). Every sentence adds value, with no redundancy or filler. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a complete output schema, so return values are already documented. The description covers what the tool does and key finding categories. Given the presence of sibling tools like check_txt_hygiene and check_subdomains, it would benefit from a brief mention of how it differs from them (e.g., 'Unlike check_subdomains, this focuses on security hygiene rather than enumeration'), but as is, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (domain, format, force_refresh) with descriptions. The tool description adds no additional parameter-level semantics. Baseline 3 is correct because the description does not enhance or clarify the parameter usage beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool audits DNS zone hygiene, identifies sensitive or forgotten subdomains, stale SOA records, and propagation issues. The verb 'audit' and resource 'DNS zone hygiene' are specific. However, among sibling tools like 'check_subdomaining' and 'discover_subdomains', it could better distinguish itself, e.g., by noting it focuses on security posture rather than discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies two use cases: finding sensitive subdomains visible in DNS and auditing overall zone cleanliness. However, it does not mention when NOT to use it (e.g., if only subdomain discovery is needed, use 'discover_subdomains') nor does it reference alternative tools. Context is implied but exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_baselineARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to scan and compare. | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| baseline | Yes | Policy/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_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_domainsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output verbosity. Auto-detected if omitted. | |
| domains | Yes | Domains to compare (2–5 domains) | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_asnARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds meaningful behavioral context: the tool uses Team Cymru DNS and flags high-risk hosting ASNs. This goes beyond the structured hints and informs the agent about output characteristics. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the verb and resource, and contains no filler. Every sentence adds value: the first explains the core mapping function, the second lists return fields and a notable output feature. This is an exemplary use of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 (not shown here), the description does not need to detail return values. It covers the core purpose, the data source (Team Cymru DNS), the key output fields, and the high-risk flag. The three parameters are well-documented in the schema. The description is complete enough for an agent to understand the tool's role and output, though it could briefly mention when to use the optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all three parameters with descriptions, achieving 100% schema coverage. The description does not add any parameter-specific information beyond what the schema provides, so the baseline score of 3 is appropriate. The description's mention of output fields does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 Autonomous System Numbers via Team Cymru DNS, lists the specific output fields (ASN, prefix, country, registry, organization), and mentions a unique feature (flagging high-risk hosting ASNs). This purpose is distinct from sibling tools like rdap_lookup or check_* tools, which focus on different aspects of domain security.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives such as rdap_lookup or osint_investigate_infrastructure_start. It lacks explicit when-to-use, when-not-to-use, or prerequisite information, leaving the agent to infer context solely from the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_brand_audit_watchADestructiveIdempotentInspect
Permanently removes a recurring brand-audit watch by watchId. Owner-scoped — a watchId owned by another principal surfaces as notFound. Returns confirmation of deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| watchId | Yes | Watch ID returned by register_brand_audit_watch. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, which are confirmed by the description's 'permanently removes' and 'owner-scoped' statements. The description adds value by detailing the 'notFound' behavior for mismatched owners and that it returns confirmation, which annotations do not cover. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each adding unique value: what the tool does, ownership scope and error behavior, and return value. No waste, front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, clear destructive action, output schema present), the description covers the key aspects: what it does, scoping constraints, and confirmation of deletion. It could mention that the operation is idempotent (though annotations cover this), but overall it's sufficient for the agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter count is only 1 (watchId). The description adds meaning by stating the watchId is from register_brand_audit_watch, which connects the parameter to the registration step, but this is not essential since the schema already describes it adequately. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('removes') with a clear resource ('recurring brand-audit watch by watchId'). It distinguishes itself from sibling tools like 'list_brand_audit_watches' (listing) and 'register_brand_audit_watch' (creation) by explicitly stating it's for permanent deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the tool is owner-scoped and that a mismatch with the owner results in a 'notFound' response. It does not explicitly mention when NOT to use this tool or suggest alternatives, but the context from sibling names and the clear scope make usage straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_brand_domainsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Discovery depth. standard is default; deep expands candidate seeding and enrichment fanout. | |
| domain | Yes | The 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. | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| signals | No | Signal modules to invoke. Defaults to all 12 discovery/enrichment signals. | |
| planner_mode | No | Planner mode for staged discovery fanout. observe emits metrics; enforce applies candidate-backed signal caps. | |
| brand_aliases | No | Optional public brand aliases to seed, such as product or legal-entity labels. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. | |
| discovery_mode | Yes | Discovery 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_selectors | No | Optional DKIM selectors to probe. Defaults to a built-in common-selector list. | |
| min_confidence | No | Drop candidates whose combined confidence falls below this threshold (0-1, default 0.5). | |
| candidate_domains | No | Optional candidate domains supplied by the caller for corroboration. | |
| ownership_verified | No | Caller 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
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral context beyond annotations: it explains the signal aggregation method, the strict requirement for exact domain input, and the role of brand_aliases. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a clear purpose: what the tool does, when to use it, and a critical usage rule. It is front-loaded and contains no redundant or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 params, output schema exists, many signals), the description covers the essentials: purpose, usage trigger, and a key constraint. Details about parameters and output are left to the schema, which is appropriate per the rules. Minor omission: no mention of the two discovery_modes, but that is detailed in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all 12 parameters. The description adds minimal extra meaning (reinforcing the domain normalization rule) but does not substantially expand on parameter semantics beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'discover' and the resource 'domains that belong to a brand's portfolio,' and specifies the method by aggregating signals. It distinguishes from sibling tools like discover_subdomains or check_* by focusing on brand portfolio discovery and explicitly says when to use it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('when asked what domains are part of a brand portfolio') and gives a critical usage instruction: 'Pass the EXACT seed domain verbatim — do NOT normalize or substitute.' It also mentions using brand_aliases for related labels. It does not explicitly list alternatives or when not to use, but the context is 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_findingsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| operationId | Yes | Operation ID returned by discover_brand_domains_start. |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Discovery depth. standard is default; deep expands candidate seeding and enrichment fanout. | |
| domain | Yes | The 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. | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| signals | No | Signal modules to invoke. Defaults to all 12 discovery/enrichment signals. | |
| planner_mode | No | Planner mode for staged discovery fanout. observe emits metrics; enforce applies candidate-backed signal caps. | |
| brand_aliases | No | Optional public brand aliases to seed, such as product or legal-entity labels. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. | |
| discovery_mode | Yes | Discovery 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_selectors | No | Optional DKIM selectors to probe. Defaults to a built-in common-selector list. | |
| min_confidence | No | Drop candidates whose combined confidence falls below this threshold (0-1, default 0.5). | |
| candidate_domains | No | Optional candidate domains supplied by the caller for corroboration. | |
| ownership_verified | No | Caller 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. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| operationId | Yes | Operation ID returned by discover_brand_domains_start. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_subdomainsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_findingBRead-onlyIdempotentInspect
Explain a finding with impact and remediation.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output verbosity. Auto-detected if omitted. | |
| status | Yes | Finding severity or status. | |
| details | No | Additional detail from check result. | |
| checkType | Yes | Check type (e.g., 'SPF', 'DMARC'). |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
generateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| policy | No | dmarc_record: policy (default "reject"). | |
| artifact | Yes | Which artifact to generate (e.g., "dmarc_record", "fix_plan"). | |
| mx_hosts | No | mta_sts_policy: MX hosts. Omit to detect from DNS. | |
| provider | No | dkim_config: provider (e.g., "google"). Omit for generic. | |
| timeline | No | rollout_plan: rollout speed (default: standard). | |
| rua_email | No | dmarc_record: report email. Default: dmarc-reports@{domain}. | |
| force_refresh | No | fix_plan: bypass cache and run a fresh scan. | |
| target_policy | No | rollout_plan: target DMARC policy (default: reject). | |
| include_providers | No | spf_record: providers to include (e.g., ["google"]). |
Tool Definition Quality
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.
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.
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.
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.
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.
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_benchmarkARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output verbosity. Auto-detected if omitted. | |
| profile | No | Profile to benchmark (default "mail_enabled"). |
Tool Definition Quality
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.
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.
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.
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.
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.
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_domain_rankARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| score | Yes | Domain score (0–100) from scan_domain. Used to compute the cohort percentile. | |
| domain | Yes | Domain to rank against its cohort (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| sector | No | Sector label (e.g., "finance"). Forwarded to the cohort endpoint; sector filtering is planned for a future release. | |
| country | No | ISO 3166-1 alpha-2 country code to use the country cohort (e.g., "NZ"). Omit for global cohort. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_insightsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output verbosity. Auto-detected if omitted. | |
| profile | No | Profile (default "mail_enabled"). | |
| provider | Yes | Provider (e.g., "google workspace"). |
Tool Definition Quality
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.
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.
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.
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.
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.
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_watchesARead-onlyIdempotentInspect
Returns the caller's recurring brand-audit watches: watchId, domain, interval, webhook presence, last-run time, and active state. Owner-scoped. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds value by clarifying the owner-scoping constraint and listing the exact fields returned. It does not repeat the annotation flags, and it provides additional context (e.g., what data is visible) that the annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short, information-dense sentences. The first sentence states the purpose and the data returned. The second sentence adds scope and safety. No filler or redundant phrasing. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, a complete output schema (as indicated by context signals), and rich annotations, the description covers all necessary context: what the tool does, what data it returns, its scope, and its read-only nature. There are no missing pieces for an agent to correctly select and invoke this simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the input schema coverage is trivially 100%. Per the baseline rule, 0 parameters earns a 4. The description does not need to explain parameter meanings because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Returns') and specific resource ('recurring brand-audit watches') and enumerates the fields returned (watchId, domain, interval, webhook presence, last-run time, active state). It distinguishes itself from sibling tools like register_brand_audit_watch and delete_brand_audit_watch by specifically mentioning 'owner-scoped' and 'read-only'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Owner-scoped' and 'Read-only,' which implies usage context (viewing only your own watches, no mutations). It does not explicitly say when not to use it or name alternative tools, but the sibling set includes separate tools for registration and deletion, making the intended use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_complianceARead-onlyIdempotentInspect
Map scan findings to compliance frameworks: NIST 800-177, PCI DSS 4.0, SOC 2, CIS Controls. Shows pass/fail/partial status per control.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_chainARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations: it reveals the tool is asynchronous (returns ID immediately), requires operator deployment, and degrades to info when unprovisioned. Annotations already indicate readOnlyHint=false, openWorldHint=true, and no idempotency or destructiveness. The description enriches this with concrete runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: purpose, deployment constraint, and async workflow. No unnecessary words or repetition. The information is front-loaded, making it quick to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the async nature and result retrieval path, but it lacks details about the investigation scope (what checks are performed), expected timeframes, and the format of the returned investigationId. With no output schema, it should also describe the return value more precisely. It is functional but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single parameter 'query' with no description, and schema description coverage is 0%. The description mentions 'for a domain' implying the query is a domain name, but it does not specify format (e.g., bare domain, with protocol, or subdomain allowed). This minimal addition does not fully compensate for the lack of schema-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Start an async OSINT investigation for a domain.' This verb+resource combination is specific and distinguishes it from sibling tools like osint_investigate_email_start and osint_investigate_infrastructure_start, which target different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit usage context: 'Operator-deploy only; degrades to info when unprovisioned.' It also instructs the agent to poll with osint_investigation_status and retrieve results with osint_investigation_report. However, it does not explicitly state when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and openWorldHint=true. The description adds that the tool is async, returns an investigationId immediately, and requires polling. This explains the non-immediate behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose and scope, access restriction, and async pattern with follow-up instructions. No redundant information; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what the tool does, the async nature, the return of an investigationId, and the recommended polling/retrieval tools. Missing only minor details like error behavior for invalid emails, but overall sufficient given the context signals.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% parameter description coverage; the description clarifies that 'query' should be an email address and explains the semantic context (breach exposure, account correlation). This adds meaning beyond the raw schema constraints of min/max length.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it starts an async OSINT investigation for an email address, specifying breach exposure and account correlation. It distinguishes from sibling tools by identifying the input type (email) and the tier restriction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Owner/enterprise tier only — people-centric OSINT is restricted to prevent misuse.' Also tells the agent to poll with osint_investigation_status and retrieve results with osint_investigation_report, providing a clear follow-up workflow.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this tool is not read-only (readOnlyHint: false), not idempotent (idempotentHint: false), and not destructive (destructiveHint: false). The description adds behavioral context: it is async (returns immediately), operator-deploy only, and degrades to info when unprovisioned. No contradiction with annotations. The bar is slightly lowered due to annotation coverage, and the description adds useful behavioral traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 23 words across two sentences. The first sentence clearly states the purpose and input types. The second covers behavioral notes and follow-up. No unnecessary filler. It loses a point because the operator-deploy and unprovisioned behavior might be better presented as a separate note or structured annotation, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema (1 param, no output schema, no nested objects) and rich sibling context, the description adequately covers: what action is performed, what inputs are accepted, async behavior, deployment restrictions, and how to retrieve results. The only minor gap is not detailing what the returned investigationId looks like or what the status polling tool requires. Still, for a start tool with clear polling counterpart, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for the undocumented 'query' parameter. The description does state that query can be a 'domain, IP, or org', which adds semantic value beyond the raw schema (which only specifies maxLength and minLength). However, it does not specify the exact formats expected (e.g., full URL vs domain only, IPv4 vs IPv6, organization name vs identifier). Baseline 3 for zero coverage is partially compensated by the type description but could be more precise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts an async deep-infrastructure OSINT investigation for a domain, IP, or org. It specifies the verb 'Start' and the resource 'OSINT investigation', distinguishing it from sibling tools like osint_investigate_domain_start and osint_investigate_email_start which focus on different aspects. However, it does not explicitly differentiate itself from osint_investigate_supply_chain_start which also covers orgs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance: it is operator-deploy only, degrades to info when unprovisioned, and returns an investigationId immediately for polling with osint_investigation_status. This tells the agent when to use it (for async deep investigations) and how to follow up. However, it does not explicitly state when not to use it versus alternatives like osint_investigate_domain_start.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds significant behavioral context: it explains the async nature, immediate return of investigationId, polling process, and the degradation behavior when unprovisioned. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences that front-load the core purpose and immediately follow with critical constraints and follow-up instructions. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter, no output schema, and moderate complexity, the description covers the async pattern and deployment constraints. However, it lacks guidance on the query parameter's semantics and does not describe the investigation report contents or how to interpret the investigationId, which are gaps for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single parameter 'query'. The description only mentions 'for a query' without specifying what constitutes a valid query (e.g., domain, company name, etc.). This fails to add meaning beyond the parameter name, leaving the agent uncertain about input format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Start an async supply-chain OSINT investigation for a query,' which clearly defines the verb (start), resource (supply-chain OSINT investigation), and async behavior. It distinguishes from sibling tools like osint_investigate_domain_start by specifying the supply-chain scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies 'Operator-deploy only; degrades to info when unprovisioned,' providing clear context on when the tool is usable and its fallback behavior. It also mentions polling with osint_investigation_status. However, it does not explicitly compare to alternative investigation start tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations offer little behavioral detail (e.g., readOnlyHint: false, destructiveHint: false). The description adds significant context: it's asynchronous (returns immediately), requires owner/enterprise tier (authorization), and involves people-centric OSINT restrictions. It also outlines the downstream polling/report steps, which is not captured in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each with distinct value: purpose/scope, access restriction, and follow-up workflow. No filler or repetition; information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 with no output schema, the description covers the essential aspects: what it does, who can use it, immediate return value, and subsequent steps. It 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'query' with no description (0% coverage). The description compensates by clarifying the tool is 'for a username', so the query parameter's purpose is clear. However, it doesn't explicitly state the parameter name or format, leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Start an async OSINT investigation for a username' with specific scope ('cross-platform presence, breach correlation'). This distinguishes it from sibling tools like osint_investigate_email_start and osint_investigate_domain_start by explicitly targeting usernames.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when it can be used ('Owner/enterprise tier only') and the async workflow ('Returns an investigationId immediately — poll with osint_investigation_status and retrieve results with osint_investigation_report'). It does not explicitly mention alternatives or when-not-to-use scenarios, but the resource type (username) implicitly differentiates it from other OSINT start tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
osint_investigation_reportARead-onlyIdempotentInspect
Retrieve the final report of a completed OSINT investigation by investigationId. Operator-deploy only; degrades to info when unprovisioned or not yet complete.
| Name | Required | Description | Default |
|---|---|---|---|
| investigationId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable context: 'Operator-deploy only' suggests authentication requirements, and the degradation behavior clarifies how the tool behaves under non-ideal conditions. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that are front-loaded with the core purpose. The information is dense and necessary. One small improvement: splitting the two sentences or rephrasing for clarity could help, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, no output schema, no nested objects), the description covers the key behavioral aspects: what it does, preconditions (completed, provisioned), and deployment context. It does not mention error messages or what exactly 'degrades to info' means, but for this complexity level it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions), so the description must compensate. It does mention 'investigationId' as the parameter but only restates its name without adding format, origin, or validation details beyond the schema constraints (min/max length). Baseline 3 is appropriate given the single parameter and minimal added semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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, which is a specific verb-resource combination. It distinguishes itself from sibling tools like osint_investigation_status (status only) and osint_investigate_*_start (starts investigations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context: 'Operator-deploy only' and mentions degradation behavior ('degrades to info when unprovisioned or not yet complete'). It does not, however, name alternative tools for cases when the investigation is not complete or for listing investigations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
osint_investigation_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| investigationId | Yes |
Tool Definition Quality
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 beyond annotations by noting the deployment restriction and degradation behavior, and explicitly states the return fields (status and progress metadata). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The purpose is front-loaded, and every piece of information is relevant and earned. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status poll with 1 parameter and no output schema, the description covers purpose, deployment context, and return fields. However, it lacks detail on the format of progress metadata, possible error states, or how the 'degrades to info' behavior manifests. Given the simplicity, it is mostly adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the investigationId parameter, meaning no description in the schema. The tool description does not explain the parameter beyond its name and schema constraints (min/maxLength). It adds no meaning about what constitutes a valid investigationId or how to obtain it, failing to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool polls the status of an OSINT investigation by investigationId. It uses a specific verb ('Poll') and resource (status of investigation), effectively distinguishing it from sibling tools like osint_investigation_report (which returns full reports) and osint_investigate_*_start tools (which initiate investigations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context: 'Operator-deploy only; degrades to info when unprovisioned.' This guides usage under specific deployment conditions. However, it does not explicitly contrast this tool with alternatives like osint_investigation_report or other status tools, so it misses a clear when-to-use vs when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prioritize_csc_leadsARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Brand seed apex; discovers the portfolio, derives ownership buckets, then ranks the top candidates. | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| domains | No | Explicit domain set to rank (max 10). Ownership bucket = "unknown". | |
| force_refresh | No | Bypass cache and run fresh scans. |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
rdap_lookupARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly, idempotent, and openWorld hints. The description adds value by specifying the protocol (RDAP) and listing the exact data returned (registrar, registrant contact, dates, EPP codes, domain age). It does not contradict annotations and enriches the behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the first sentence covering purpose and outputs, and the second providing usage guidance and sibling differentiation. Every sentence adds value, and no unnecessary words are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description does not need to detail return structure. It effectively lists key return fields, explains when to use the tool, and contrasts with a sibling. Combined with annotations and schema, it provides a complete context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 elaborate on the parameters beyond what the schema already provides. It mentions the domain input implicitly but offers no additional meaning for format or force_refresh. Thus, no extra parameter semantics added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the resource 'domain registration data via RDAP', lists specific data fields returned, and explicitly distinguishes from the sibling tool 'check_ns' by contrasting its purpose. This provides a specific and differentiated purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use the tool ('when asked who registered the domain, who the registrar is, or when the registration expires') and distinguishes it from a sibling ('distinct from check_ns which identifies the DNS nameserver provider'). This provides clear usage guidance.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to watch. | |
| interval | Yes | Recurrence interval. | |
| webhook_url | No | Optional webhook URL — POSTed on classification drift. Re-validated for SSRF at both register and delivery time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| passed | Yes | |
| partial | No | |
| category | Yes | |
| findings | Yes | |
| checkStatus | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true. The description adds critical behavioral context: this tool triggers ongoing background work (each run enqueues brand_audit_batch_start), has a per-principal cap of 20 watches, and respects owner scoping. It does not mention whether the response includes the watchId directly (it says 'Returns the new watchId') which is useful but could be inferred from the output schema. The only minor gap is not stating failure modes (e.g., what happens if the cap is hit), but overall this adds substantial value 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and 250 characters, fitting all essential information without redundancy. The first sentence nails the core purpose. The second sentence explains the webhook diff and lifecycle, which is a key behavioral detail. The third sentence covers return value and limitations. It could be slightly more structured (e.g., bullet points for the three actions) but is already very clear. Loses a point for minor redundancy in 'each run enqueues a fresh brand_audit_batch_start'—'fresh' is implicit, and 'enqueues' could be more direct like 'triggers'—but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (3 params, output schema present, 20+ sibling tools), the description covers everything needed for correct invocation: what it creates, what parameters matter, the lifecycle (enqueues a run, returns watchId, optional webhook), and constraints (owner-scoped, cap of 20). The presence of an output schema (implied by 'Returns the new watchId' and likely JSON) means the description doesn't need to detail the return shape. No critical gaps remain—the agent can confidently decide when to call this tool vs. list/delete counterparts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (domain, interval, webhook_url) is already documented in the schema. The description adds context by mentioning that webhook POSTs happen only when configured and re-validated for SSRF at both registration and delivery time, which goes beyond the schema's description of just 'Optional webhook URL — POSTed on classification drift. Re-validated for SSRF at both register and delivery time.' It also implicitly groups the interval into daily/weekly/monthly, matching the enum. The description does not repeat the schema's details verbatim but integrates them into the workflow narrative, which is a good balance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a recurring brand-audit watch for a domain with configurable cadence (daily/weekly/monthly). It distinguishes itself from related tools like list_brand_audit_watches (listing) and delete_brand_audit_watch (deletion), and from brand_audit_batch_start (which is a component triggered by this watch, not the watch itself). The verb 'creates' plus the specific resource 'recurring brand-audit watch' leaves no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Owner-scoped; per-principal cap of 20 active watches,' informing the agent of authorization boundaries and a hard limit that may require checking list_brand_audit_watches first. It also notes that each run enqueues a brand_audit_batch_start (explaining the downstream effect) and optionally POSTs a webhook, helping the agent understand when to configure the webhook_url parameter. No alternatives are given because no other tool creates watches, so this is appropriately complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_spf_chainARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_findingsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scanId | Yes | ||
| target | No | ||
| providers | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it explains the read is owner-scoped via scanId, the tool degrades to info when unprovisioned, and that filters are optional. Annotations already indicate read-only, idempotent, and non-destructive behavior, so the description clarifies scoping and deployment behavior without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loading the main purpose in the first sentence. It covers deployment constraints, required parameter, and optional filters without extra fluff. Each sentence adds value, though it could be slightly more concise by merging the first two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters (1 required), no output schema, and no enum constraints, the description covers the critical aspects: purpose, required scoping, deployment behavior, and optional filters. It is sufficiently complete for selecting and invoking the tool correctly, though it could mention the return format or pagination behavior if applicable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, so the description must compensate. It explains the scanId parameter is required for owner-scoped reads, and that target and providers are optional filters. This adds meaningful semantics beyond the raw schema, which only provides type and length constraints. The description gives functional meaning to each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves findings from a completed cloud-bucket discovery scan using a scanId. The verb 'retrieve' and resource 'findings from a completed cloud-bucket discovery scan' are specific. However, it does not explicitly differentiate from siblings like 'scan_buckets_start' or 'scan_buckets_status', though the distinction is implicit from the context of retrieving results vs. starting or checking status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Operator-deploy only; degrades to info when unprovisioned', providing a deployment constraint. It states the scanId is required for owner-scoped reads, and target and provider filters are optional. However, it does not explicitly guide when to use this tool vs. alternatives like 'scan_buckets_status' or other finding-related tools, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| providers | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint=false) and has side effects (openWorldHint=true). The description adds context about deployment requirements and the async nature (returns scanId immediately). However, it lacks details on rate limits, authentication needs, or what 'degrades to info' means precisely, leaving some behavioral aspects unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: purpose, deployment nuance, and async workflow. Every sentence adds value, and the key action is front-loaded. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic workflow and deployment constraint, but given the absence of an output schema and the presence of sibling tools, it could be more complete. It does not specify the format of the returned scanId, mention cancellation or timeouts, or list valid providers. Overall, it provides a solid foundation but leaves moderate gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage. The description only clarifies that 'target' is a domain, but does not explain the 'providers' parameter (its purpose, allowed values, or format). Despite having only two parameters, the description fails to add semantic meaning to both, leaving the agent to guess about providers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Start an async cloud-bucket discovery scan for a target domain.' It uses a specific verb ('Start') and resource ('cloud-bucket discovery scan'), and differentiates itself from sibling tools like scan_buckets_status and scan_buckets_findings by being the initiation step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides deployment context ('Operator-deploy only; degrades to info when unprovisioned') and explains the async workflow (poll with scan_buckets_status, retrieve with scan_buckets_findings). This guides the agent on when to use this tool and how to follow up, though it does not explicitly contrast with other start tools among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_buckets_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scanId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the bar is lower. The description adds value by specifying the 'degrades to info when unprovisioned' behavior, which is a useful behavioral trait. This transparency goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a clear purpose: stating the tool's action and resource, specifying operational context, and listing return values. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no nested objects, no output schema), the description covers the essentials: action, resource, unique condition ('Operator-deploy only'), and return format. It could optionally mention potential error states or timeouts, but for a poll tool this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 does so by explaining that the parameter 'scanId' is the identifier for the scan whose status to poll. Although it does not give exact format or constraints beyond the schema, the context of polling makes the usage clear. Given only one parameter, this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Poll' and resource 'status of a cloud-bucket discovery scan', and distinguishes it from sibling tools like 'scan_buckets_start' (which starts a scan) and 'scan_buckets_findings' (which retrieves findings). It also specifies the return values: scan status and progress metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context: 'Operator-deploy only; degrades to info when unprovisioned.' This tells the agent when the tool is appropriate. However, it does not explicitly state when not to use it or name an alternative for scenarios where the scan is not yet started, though sibling tools like 'scan_buckets_start' imply this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_domainARead-onlyIdempotentInspect
Run a full DNS and email security audit for a single domain. Aggregates every scan-included check in parallel (SPF, DKIM, DMARC, DNSSEC, TLS/SSL, MTA-STS, CAA, BIMI, subdomain takeover, and more) and returns an overall security score, NIST-aligned letter grade (6-band A+/A/B/C/D/F), maturity stage, and prioritized findings. Use for a comprehensive single-domain audit, to get a domain's overall security grade, or to assess email security maturity. Version stamps: 'scoringModelVersion' is the scoring POLICY semver (changes only when weights/thresholds/severities change, so it advances slowly) and is INDEPENDENT of — never comparable to — 'dnsChecksPackageVersion', the @blackveil/dns-checks npm engine-package version, which moves every release; a lower model version is expected, not a version gap. When citing a score, record 'scoringConfigHash' — it identifies the exact scoring configuration that produced the result.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| profile | No | Scoring profile. Default "auto" detects. | |
| force_refresh | No | Bypass cache and run a fresh scan. Useful after DNS changes. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the safety profile is clear. The description adds valuable context about parallel execution of checks, the aggregated nature of results, and the version stamp semantics (scoringModelVersion vs dnsChecksPackageVersion), which is beyond annotations. It also mentions caching and force_refresh behavior. Slight deduction for not explaining what the output structure looks like beyond the score/grade, but that's not required given the output schema is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear lead sentence, followed by usage guidance, then version stamp notes. It is not overly long, though the version stamp explanation is detailed and might be slightly verbose. Every sentence earns its place, but the version stamp paragraph could be compressed. Minor deduction for length, but it remains focused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (aggregates many checks) and the absence of an output schema, the description provides a good overview of what it returns (score, grade, maturity, findings). It also explains the version stamps, which is critical for interpreting results. However, it does not detail the structure of 'findings' or the 'maturity stage', but that is acceptable for a high-level tool. The annotations cover safety, so completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented. The description adds extra meaning for the profile parameter by explaining default 'auto' detects, and for force_refresh it clarifies the cache bypass. It also gives an example domain in the parameter description. The description goes beyond the schema by explaining the version stamps, which are not parameters but influence interpretation. Baseline is 3, and this scores 4 due to the additional context on parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a comprehensive DNS and email security audit for a single domain, listing the checks included and the outputs (score, grade, maturity, findings). It distinguishes itself from the many individual check tools (check_spf, check_dkim, etc.) by aggregating all checks in parallel, making it the go-to for a holistic audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use for a comprehensive single-domain audit, to get a domain's overall security grade, or to assess email security maturity.' It implies when not to use it—for individual checks, the sibling tools are available. It also gives guidance on interpreting version stamps, which is unique and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_attack_pathsARead-onlyIdempotentInspect
Analyze current DNS posture and enumerate specific attack paths an adversary could exploit, with severity, feasibility, steps, and mitigations.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check (e.g., example.com) | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| force_refresh | No | Bypass cache and run a fresh check. Useful after DNS changes. |
Tool Definition Quality
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.
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.
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.
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.
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.
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_fixARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| check | Yes | Check name to re-run (e.g., "dmarc", "spf") | |
| domain | Yes | Domain to validate the fix for | |
| format | No | Output verbosity. Auto-detected if omitted. | |
| expected | No | Expected DNS record value to verify against |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables DNS and email security analysis through passive and active scanning capabilities. Provides comprehensive domain security checks including SPF, DMARC, DNSSEC validation, MX record analysis, and SMTP connectivity testing.MIT
- AlicenseAqualityBmaintenanceAn 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.1MIT
- AlicenseAqualityBmaintenanceProvides comprehensive tools for real-time DNS queries across 53 record types, global propagation checks, and SSL certificate analysis. It also enables domain security scans for SPF/DKIM/DMARC configurations and HTTP uptime monitoring.810221Apache 2.0
- AlicenseAqualityAmaintenanceMCP 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.45252MIT
Your Connectors
Sign in to create a connector for this server.