Skip to main content
Glama

BlackVeil DNS & Email Security Scanner

analyze_drift

Read-onlyIdempotent

Measure whether a domain's DNS security posture improved or regressed versus a prior scan snapshot; returns a drift classification (improving/stable/regressing/mixed), score delta, and lists of improvements and regressions. Use for "did our score improve or regress since last time?"; not compare_baseline, which checks compliance with a fixed policy.

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>",
      "baseline": "<baseline>"
    },
    "name": "analyze_drift"
  }
}

Input Schema

NameRequiredDescriptionDefault
domainYesDomain to analyze drift for
formatNoOutput verbosity.
baselineYesPrior ScanScore JSON string, or "cached" (default) for the last cached scan. Not a policy object.cached
force_refreshNoBypass the cache.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / baseline / description
      Previous value: -"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."New value: +"Prior ScanScore JSON string, or \"cached\" (default) for the last cached scan. Not a policy object."
    • 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 / format / description
      Previous value: -"Output verbosity. Auto-detected if omitted."New value: +"Output verbosity."
  2. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  3. Changed2 schema fields changed
    • addedInput schema / properties / baseline / default
      Added value: +"cached"
    • changedInput schema / properties / baseline / description
      Previous value: -"Prior scan reference for drift-over-time analysis: a previous ScanScore JSON STRING, or the literal \"cached\" to reuse the last cached scan. NOT a policy/requirements object — for compliance enforcement against required controls, use compare_baseline instead."New value: +"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."
  4. Changed2 schema fields changed
    • changedInput schema / properties / baseline / description
      Previous value: -"Previous ScanScore JSON or \"cached\" to use last cached scan"New value: +"Prior scan reference for drift-over-time analysis: a previous ScanScore JSON STRING, or the literal \"cached\" to reuse the last cached scan. NOT a policy/requirements object — for compliance enforcement against required controls, use compare_baseline instead."
    • addedInput schema / properties / force_refresh
      Added value: +{
      +  "description": "Bypass cache and run a fresh check. Useful after DNS changes.",
      +  "type": "boolean"
      +}
  5. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds real value beyond that by disclosing the shape of the result (classification enum values, score delta, lists of improvements/regressions). It does not mention what happens when no cached snapshot exists or any rate/permission constraints, which keeps it below a 5.

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

Conciseness5/5

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

Two sentences with zero filler: the first front-loads what it does and what it returns, the second handles routing and exclusion. Every clause earns its place.

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

Completeness4/5

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

With no output schema, the description correctly compensates by naming the return fields. Combined with full schema coverage and annotations, an agent has enough to call it correctly. Minor gap: no mention of behavior when no cached scan is available or when baseline JSON is invalid.

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

Parameters3/5

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

Schema description coverage is 100%, so domain, format, baseline and force_refresh are all documented in the schema, including the important note that baseline is 'Not a policy object.' The description reinforces the snapshot-vs-snapshot framing but adds no syntax or format detail beyond what the schema already supplies, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Measure whether a domain's DNS security posture improved or regressed versus a prior scan snapshot') and even enumerates the return payload (drift classification, score delta, improvement/regression lists). It explicitly names the sibling it is not, so an agent can distinguish it from compare_baseline without opening either schema.

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

Usage Guidelines5/5

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

Gives a concrete selection heuristic in the user's own words ('did our score improve or regress since last time?') and an explicit exclusion: 'not compare_baseline, which checks compliance with a fixed policy.' Both when-to-use and when-not-to-use are covered.

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.