Skip to main content
Glama

BlackVeil DNS & Email Security Scanner

brand_audit_single

Run a full brand audit on one target (optional standard/deep depth, brand aliases, candidate domains). Discovers brand-related domains, looks up registrar and registrant, and classifies each as consolidated, shadowIt, authorized vendor, indeterminate or impersonation. Gated by monthly BRAND_AUDIT_QUOTAS (free/agent=0, developer=50, partner=200, enterprise=500, owner=unlimited).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "domain": "<domain>"
    },
    "name": "brand_audit_single"
  }
}

Input Schema

NameRequiredDescriptionDefault
viewNoOutput view: 'standard' (default) or 'registrar_complement' (enterprise tier only).
depthNoDiscovery depth. standard is default; deep expands candidate seeding and enrichment fanout.
domainYesTarget domain to audit (e.g., apple.com).
formatNoInline output mode. Defaults to "both".
planner_modeNoDiscovery planner: observe emits metrics; enforce applies candidate-backed signal caps.
brand_aliasesNoOptional public brand aliases to seed, such as product or legal-entity labels.
force_refreshNoBypass the cache.
discovery_modeNoDiscovery pipeline: classic = legacy sweep; tiered = tenant/graph/evidence lookups first.
min_confidenceNoDrop candidates whose combined confidence falls below this threshold (0-1, default 0.5).
candidate_domainsNoOptional candidate domains supplied by the caller for corroboration.
ownership_verifiedNoAttest you own or may scan the target. Required for "tiered" unless enterprise/owner/partner.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / discovery_mode / description
      Previous value: -"Brand-discovery pipeline mode. classic = legacy sweep; tiered = tenant/graph/evidence wrappers first (BlackVeil-internal)."New value: +"Discovery pipeline: classic = legacy sweep; tiered = tenant/graph/evidence lookups first."
    • changedInput schema / properties / force_refresh / description
      Previous value: -"Bypass cache and run a fresh check. Useful after DNS changes."New value: +"Bypass the cache."
    • changedInput schema / properties / ownership_verified / description
      Previous value: -"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."New value: +"Attest you own or may scan the target. Required for \"tiered\" unless enterprise/owner/partner."
    • changedInput schema / properties / planner_mode / description
      Previous value: -"Planner mode for staged discovery fanout. observe emits metrics; enforce applies candidate-backed signal caps."New value: +"Discovery planner: observe emits metrics; enforce applies candidate-backed signal caps."
    • changedInput schema / properties / view / description
      Previous value: -"Output view mode. 'registrar_complement' produces a registrar-complement payload; requires enterprise tier. Default 'standard'."New value: +"Output view: 'standard' (default) or 'registrar_complement' (enterprise tier only)."
  2. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": {},
      -  "properties": {
      -    "category": {
      -      "type": "string"
      -    },
      -    "checkStatus": {
      -      "type": "string"
      -    },
      -    "findings": {
      -      "items": {
      -        "additionalProperties": {},
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "partial": {
      -      "type": "boolean"
      -    },
      -    "passed": {
      -      "type": "boolean"
      -    },
      -    "score": {
      -      "type": "number"
      -    },
      -    "verdictWithheld": {
      -      "type": "boolean"
      -    }
      -  },
      -  "required": [
      -    "category",
      -    "score",
      -    "passed",
      -    "findings"
      -  ],
      -  "type": "object"
      -}New value: +null
  4. Changed1 schema field changed
    • addedOutput schema / properties / verdictWithheld
      Added value: +{
      +  "type": "boolean"
      +}
  5. Changed2 schema fields changed
    • changedInput schema / properties / view / description
      Previous value: -"Output view mode. 'csc_complement' produces a CSC-tuned payload; requires enterprise tier. Default 'standard'."New value: +"Output view mode. 'registrar_complement' produces a registrar-complement payload; requires enterprise tier. Default 'standard'."
    • changedInput schema / properties / view / enum
      Previous value: -[
      -  "standard",
      -  "csc_complement"
      -]New value: +[
      +  "standard",
      +  "registrar_complement"
      +]
  6. Changed2 schema fields changed
    • addedOutput schema / properties / checkStatus
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / partial
      Added value: +{
      +  "type": "boolean"
      +}
  7. Changed1 schema field changed
    • addedInput schema / properties / force_refresh
      Added value: +{
      +  "description": "Bypass cache and run a fresh check. Useful after DNS changes.",
      +  "type": "boolean"
      +}
  8. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": {},
      +  "properties": {
      +    "category": {
      +      "type": "string"
      +    },
      +    "findings": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "passed": {
      +      "type": "boolean"
      +    },
      +    "score": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "category",
      +    "score",
      +    "passed",
      +    "findings"
      +  ],
      +  "type": "object"
      +}
  9. Changed2 schema fields changed
    • addedInput schema / properties / discovery_mode
      Added value: +{
      +  "description": "Brand-discovery pipeline mode. classic = legacy sweep; tiered = tenant/graph/evidence wrappers first (BlackVeil-internal).",
      +  "enum": [
      +    "classic",
      +    "tiered"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / ownership_verified
      Added value: +{
      +  "description": "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.",
      +  "type": "boolean"
      +}
  10. Changed1 schema field changed
    • removedInput schema / properties / discovery_mode
      Removed value: -{
      -  "description": "Brand-discovery pipeline mode. classic = legacy sweep; tiered = tenant/graph/evidence wrappers first (BlackVeil-internal).",
      -  "enum": [
      -    "classic",
      -    "tiered"
      -  ],
      -  "type": "string"
      -}
  11. Changed1 schema field changed
    • addedInput schema / properties / discovery_mode
      Added value: +{
      +  "description": "Brand-discovery pipeline mode. classic = legacy sweep; tiered = tenant/graph/evidence wrappers first (BlackVeil-internal).",
      +  "enum": [
      +    "classic",
      +    "tiered"
      +  ],
      +  "type": "string"
      +}
  12. Changed1 schema field changed
    • addedInput schema / properties / view
      Added value: +{
      +  "description": "Output view mode. 'csc_complement' produces a CSC-tuned payload; requires enterprise tier. Default 'standard'.",
      +  "enum": [
      +    "standard",
      +    "csc_complement"
      +  ],
      +  "type": "string"
      +}
  13. Changed1 schema field changed
    • addedInput schema / properties / planner_mode
      Added value: +{
      +  "description": "Planner mode for staged discovery fanout. observe emits metrics; enforce applies candidate-backed signal caps.",
      +  "enum": [
      +    "off",
      +    "observe",
      +    "enforce"
      +  ],
      +  "type": "string"
      +}
  14. Changed3 schema fields changed
    • addedInput schema / properties / brand_aliases
      Added value: +{
      +  "description": "Optional public brand aliases to seed, such as product or legal-entity labels.",
      +  "items": {
      +    "maxLength": 64,
      +    "minLength": 2,
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedInput schema / properties / candidate_domains
      Added value: +{
      +  "description": "Optional candidate domains supplied by the caller for corroboration.",
      +  "items": {
      +    "maxLength": 253,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 250,
      +  "type": "array"
      +}
    • addedInput schema / properties / depth
      Added value: +{
      +  "description": "Discovery depth. standard is default; deep expands candidate seeding and enrichment fanout.",
      +  "enum": [
      +    "standard",
      +    "deep"
      +  ],
      +  "type": "string"
      +}
  15. Added

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare non-read-only, open-world, non-idempotent, non-destructive behavior; the description adds real value beyond that by disclosing quota gating with concrete per-tier limits (free/agent=0 up to owner=unlimited) and defining the five classification outcomes. It does not say whether the audit runs asynchronously or returns inline, which is the main behavioral gap.

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

Conciseness4/5

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

Two dense sentences with the core action front-loaded, followed by quota constraints. The category list is efficiently packed into a single clause and nothing reads as filler, though the quota parenthetical is heavy relative to the rest.

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

Completeness3/5

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

For an 11-parameter, no-output-schema audit tool, the description covers purpose, classification output, and quota limits well. It omits return shape (inline vs. stored), whether the call blocks, and how results are later fetched, which matters given the sibling set contains status and report tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 11 parameters including enums and constraints. The description merely echoes a subset ('optional standard/deep depth, brand aliases, candidate domains') and adds no syntax, defaults, or interaction rules beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Run a full brand audit on one target') and enumerates the concrete actions: discovers brand-related domains, looks up registrar and registrant, classifies each candidate. The 'on one target' phrasing implicitly separates it from brand_audit_batch_start, but the description never names a sibling, so differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

Usage context is implied by 'on one target' and by the mention of optional depth, aliases, and candidate domains, which tells the agent what inputs matter. However, there is no explicit when-to-use/when-not guidance and no pointer to brand_audit_get_report or brand_audit_status for retrieving or polling results, leaving the multi-tool workflow to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.