Skip to main content
Glama

DechoNet MCP Server

Domain security reconnaissance for AI agents via the Model Context Protocol.

20 tools, free, no API key. DNS, SSL/TLS, HTTP security headers, email authentication, port scan, DNS propagation, reverse DNS, ASN/BGP, RDAP/WHOIS, subdomain discovery (CT logs), lookalike/typosquat detection, OWASP-mapped observable checks, brand-impersonation exposure, go-live readiness, domain change history — what changed since the last check — and a daily watch you can set from the agent.

Every result comes back interpreted, not just as raw JSON: a status, the key numbers, each issue with severity and confidence, and the concrete action to take. That is what an agent needs to tell a human what to do next.

Part of DechoNet. Every tool here is also a free web tool at dechonet.com — no sign-up — backed by error-fix guides. This package brings the same checks to AI agents.

Zero-install: remote endpoint

No npx, no install, no key. Point any MCP client that speaks Streamable HTTP at:

https://dechonet.com/mcp

Claude Desktop / Claude Code (claude mcp add --transport http dechonet https://dechonet.com/mcp), Cursor, and other HTTP-capable clients connect directly. The remote endpoint also serves 3 curated prompts (audit_domain, monitor_setup, investigate_changes) and 2 reference resources.

Related MCP server: domain-security-mcp-server

Quick Start (stdio, Claude Desktop)

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "dechonet": {
      "command": "npx",
      "args": ["-y", "dechonet-mcp"]
    }
  }
}

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Restart Claude Desktop. You'll see the DechoNet tools icon in the input area.

Install

# Via npx (no install needed)
npx dechonet-mcp

# Or install globally
npm install -g dechonet-mcp

Available Tools

Tool

Description

security_scan

Comprehensive scan — 9 checks in parallel, 0-100 Health Score, A-F grade

dns_lookup

DNS records + DNSSEC + SPF/DMARC validation

ssl_check

SSL/TLS certificate, chain, expiry, HSTS, CT history, A-F grade

http_security

HTTP redirect trace + 10 security headers audit, A-F grade

email_auth

SPF, DMARC, DKIM, BIMI, MTA-STS, DANE + blacklist check

port_scan

Open TCP ports with service identification

dns_propagation

DNS propagation across 8+ global resolvers

reverse_dns

PTR record + FCrDNS verification

asn_lookup

ASN/BGP network identification + abuse contact

whois_lookup

RDAP/WHOIS domain registration data

subdomain_discovery

Passive subdomain enumeration from CT logs, operational-name flags (dev/staging/admin), wildcard detection

lookalike_domains

Typosquat variants that are actually registered — homoglyph, affix (brand-login), TLD swap, keyboard slips — with the domain's own defensive registrations separated out

owasp_check

OWASP-mapped checks that can be observed passively (headers, TLS, exposed files), honest about what is out of scope

impersonation_exposure

Brand impersonation exposure grade: third-party lookalikes + exposed operational subdomains + wildcard certs

golive_check

Go-live readiness — DNS, propagation, SSL, HTTP, registration in one READY / CAUTION / NOT READY verdict

domain_changes

What changed since the last check — status, grade, issuer, DNS, issues. Works from lookup history even without a watch

watch_domain

Register a domain for daily re-checks (SSL, DNS, HTTP, RDAP) so domain_changes accumulates a timeline. The only tool that writes; idempotent

ip_info

Public IP, ISP, ASN, proxy detection

email_header_analysis

Email delivery route tracing + auth results

subnet_calc

CIDR subnet calculator (offline)

Every tool response ends with a link to the full interactive report on dechonet.com for the human behind the agent.

Example Prompts

Once connected, try asking Claude:

  • "Audit the security posture of example.com"

  • "Is the SSL certificate for mysite.com about to expire?"

  • "Which subdomains of example.com are exposed in CT logs?"

  • "Are there registered lookalike domains of mybrand.com?"

  • "How exposed is mybrand.com to impersonation?"

  • "Is example.com ready to go live?"

  • "What changed on example.com since the last check?"

  • "Analyze these email headers: [paste headers]"

  • "What's the ASN for 8.8.8.8?"

Local SSE Transport

For a self-hosted HTTP/SSE bridge (the hosted remote endpoint above is usually simpler):

npm run start:sse
# Server runs on http://localhost:3100
# SSE endpoint: http://localhost:3100/sse

Development

npm install
npm run build    # TypeScript → build/
npm run dev      # Run with tsx (stdio)
npm run start:sse # Run SSE server

How It Works

The MCP server calls DechoNet's public API (https://dechonet.com/api/util/*) — the same backend as the dechonet.com web tools — and returns structured results with:

  • Status (ok/warn/bad)

  • KPIs (key numbers per tool)

  • Issues with severity (critical/warning/info) and confidence levels

  • Actionable remediation steps

  • Raw data (full JSON)

All data comes from public sources (DNS, HTTP headers, SSL certificates, CT logs, RDAP). Passive by design: no active exploitation, and a registered lookalike is reported as a fact to verify, never as an accusation.

Environment Variables

Variable

Default

Description

DECHONET_URL

https://dechonet.com

API base URL

DECHONET_LOCALE

en

Response language (en or ko)

PORT

3100

SSE server port

About DechoNet

DechoNet is a domain security reconnaissance platform — distributed observation, cross-verification. The same diagnostics ship three ways: free web tools, error-fix guides, and this MCP server.

MIT licensed. Issues and PRs welcome.

Available Tools

20 tools
asn_lookupASN / BGP LookupA
Read-onlyIdempotent
Inspect

Look up Autonomous System (ASN) / BGP information for an IP address or AS number: the network operator, announced prefixes, abuse contact, and a classification (cloud, CDN, ISP, hosting, or enterprise). Use this to identify who runs a network or whether an IP is cloud/CDN-hosted. Use reverse_dns instead for the host-level PTR name of a single IP. Read-only; requires no API key; rate-limited. Returns operator, prefixes, classification, and abuse contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesAn IP address (e.g., '1.1.1.1') or an AS number in 'AS####' form (e.g., 'AS13335').

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses rate-limiting and no-API-key requirement, which are not present in the annotations. It also reiterates read-only behavior consistent with the readOnlyHint. This goes beyond the annotations to inform the agent of operational constraints.

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

Conciseness4/5

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

The description is front-loaded with the action and key information, but it repeats the return fields (operator, prefixes, classification, abuse contact) twice. It is not overly verbose, but could be slightly more concise by removing the duplication.

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

Completeness5/5

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

For a simple tool with one parameter and a clear output schema, the description provides all necessary context: what it returns, when to use it, and how it differs from related tools. It is complete without needing to explain nested objects or complex error cases.

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

Parameters3/5

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

The parameter 'query' is already well described in the schema with examples for IP and ASN formats. The description does not add additional semantic details about the parameter beyond what is already in the schema, so it meets the baseline for full schema coverage.

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

Purpose5/5

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

The description clearly states the tool's function: looking up ASN/BGP information for an IP or AS number, including operator, prefixes, abuse contact, and classification. It explicitly distinguishes itself from reverse_dns, making its purpose unambiguous among siblings.

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

Usage Guidelines5/5

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 this to identify who runs a network or whether an IP is cloud/CDN-hosted' and contrasts with reverse_dns for PTR lookups. It also mentions read-only nature and rate-limiting, which helps set expectations for usage.

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

dns_lookupDNS LookupA
Read-onlyIdempotent
Inspect

Query DNS records (A, AAAA, MX, TXT, NS, SOA, CAA) for a domain and validate email-related records, including DNSSEC presence and SPF/DMARC syntax, returning severity-rated diagnostics. Use this for a single authoritative answer about one domain. Use dns_propagation instead when you need to compare answers across multiple global resolvers (e.g., right after a change), or email_auth for a full SPF/DKIM/DMARC deliverability assessment. Read-only; requires no API key or authentication; subject to rate limiting. Returns a text report: status, KPI summary, detected issues, and recommended actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesRegistrable domain or hostname to query, without scheme or path (e.g., 'example.com' or 'mail.example.com'). Do not include 'http://' or a trailing slash.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A5/5.0
Behavior5/5

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

The description notes the tool is read-only, requires no API key, is subject to rate limiting, and returns a text report with status, KPI summary, detected issues, and recommended actions. This aligns with the readOnlyHint and idempotentHint annotations and fully discloses the tool's behavior.

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

Conciseness5/5

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

The description is concise yet information-dense, covering purpose, usage guidance, behavior, and output format in a few sentences. No redundant phrases or filler; each sentence contributes necessary details.

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

Completeness5/5

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

Given the output schema exists and the description already summarizes the return format (text report with status/KPI/issues/actions), the context is complete. The description adequately covers what an agent needs to decide when to invoke and what to expect.

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

Parameters5/5

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

The single parameter 'domain' is described with format constraints (no scheme or trailing slash) and examples. Schema coverage is 100%, and the description adds practical guidance beyond the schema's basic type definition.

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

Purpose5/5

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

The description clearly states the tool queries DNS records and validates email-related records, including DNSSEC and SPF/DMARC syntax, with severity-rated diagnostics. It explicitly distinguishes itself from dns_propagation and email_auth, making its purpose unambiguous.

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

Usage Guidelines5/5

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

It explicitly says to use this tool for a single authoritative answer about one domain and directs users to dns_propagation for cross-resolver comparisons and email_auth for full SPF/DKIM/DMARC deliverability. This gives clear when-to-use and when-not-to-use guidance.

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

dns_propagationDNS Propagation CheckA
Read-onlyIdempotent
Inspect

Query one DNS record across 8+ global public resolvers (Google, Cloudflare, Quad9, OpenDNS, and more) simultaneously and report which resolvers return stale versus updated values. Use this after changing a record to confirm worldwide propagation. Use dns_lookup instead for a single authoritative answer with SPF/DMARC validation. Read-only; requires no API key; rate-limited. Returns per-resolver values and a consistency verdict.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDNS record type to compare across resolvers. Defaults to A (IPv4 address), the most common propagation check.A
domainYesDomain whose record to compare across resolvers (e.g., 'example.com'), without scheme or path.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A4.7/5.0
Behavior4/5

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

Beyond the readOnly/idempotent hints in annotations, the description discloses operational traits such as requiring no API key and being rate-limited, and states what it returns ('per-resolver values and a consistency verdict'). It does not mention edge cases like resolver timeouts, but the added behavioral context is useful.

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

Conciseness5/5

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

The description is compact and front-loaded with the core behavior, followed by usage guidance and a sibling-tool contrast. No redundant or filler wording is present.

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

Completeness4/5

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

For a network diagnostic tool, the description covers the main purpose, usage, and return shape at a high level. The output schema is noted as present, and the description clarifies the key verdict concept. It could mention resolver count specifics or failure behavior, but it is sufficiently complete for an agent to select and call it.

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

Parameters5/5

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

Both parameters are well described. 'domain' includes an example and format guidance; 'type' lists an enum, has a default, and explains why A is the default. Schema coverage is 100%, and the descriptions add meaningful detail beyond the raw schema.

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

Purpose5/5

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

States a specific action ('Query one DNS record across 8+ global public resolvers...') and resource ('DNS propagation check'). It clearly distinguishes itself from the sibling dns_lookup tool by noting the difference between multi-resolver propagation checks and single authoritative lookups.

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

Usage Guidelines5/5

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

Explicitly says when to use this tool ('Use this after changing a record to confirm worldwide propagation') and when to choose an alternative ('Use dns_lookup instead for a single authoritative answer...'). No ambiguity is left about the intended use case.

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

domain_changesDomain Change HistoryA
Read-onlyIdempotent
Inspect

Report what has changed for a domain over time — the security regressions and drift that DechoNet's daily monitoring has recorded across every watch on the domain (SSL grade, headers, DNS, OWASP posture, impersonation exposure, etc.). Use this to answer "what changed on my domain since yesterday/last week?" — a question that requires persistent snapshots and therefore cannot be reconstructed from a single live lookup. When a domain you have looked at before comes up again, start with this tool. Two sources: (a) the daily watch timeline if the domain is watched (start one with watch_domain), and (b) even without a watch, the difference between the last two stored lookups of each tool — so a second lookup already yields a comparison. The point-in-time tools (security_scan, owasp_check, ssl_check) give the current state instead. Read-only; requires no API key; rate-limited. Returns the monitored tools, a newest-first change timeline, lookup-to-lookup changes, and a link to manage monitoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain whose recorded change history to fetch (e.g., 'example.com'). Scheme and path are stripped.

Output Schema

ParametersJSON Schema
NameRequiredDescription
domainYes
changesNoRecorded changes, newest first
watchedYesWhether the domain is under an active daily watch
reportUrlYesWhere a human can start or manage monitoring
changeCountNoNumber of changes recorded
historyChangesNoLookup-to-lookup changes, newest first
historyChangeCountNoChanges found between the last two stored lookups per tool (no watch needed)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, but the description adds substantial context beyond them: no API key required, rate-limited, and the two-source data model (watch timeline vs. last-two-lookup diff). The note that a second lookup alone yields a comparison is behavioral detail an agent could not infer from the schema or annotations.

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

Conciseness4/5

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

The core purpose and the 'start here for repeat domains' guidance are front-loaded, and each sentence contributes distinct value (sources, alternatives, constraints, return shape). It is dense and runs long for a single-parameter tool, but there is no filler.

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

Completeness5/5

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

Complete for the tool's complexity: it covers purpose, data provenance, alternatives, prerequisites (watch_domain), access constraints, and even summarizes the return payload despite an output schema already existing. Nothing an agent needs to select or call it correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100% for the single domain parameter (including the scheme/path stripping rule), so the schema carries the syntax burden. The description only marginally reframes it by tying the domain to previously-recorded history ('a domain you have looked at before'), adding slight meaning over the schema. Baseline is 3; the extra framing lifts it marginally.

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 ('Report what has changed for a domain over time') and enumerates the exact signal classes monitored (SSL grade, headers, DNS, OWASP posture, impersonation). It explicitly distinguishes itself from the point-in-time siblings (security_scan, owasp_check, ssl_check), so an agent can differentiate without opening another schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use framing ('what changed on my domain since yesterday/last week?', 'When a domain you have looked at before comes up again, start with this tool') and names the alternatives that should be used instead for current state. It also points to watch_domain for starting a watch, covering the prerequisite path.

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

email_authEmail Authentication CheckA
Read-onlyIdempotent
Inspect

Assess a domain's email authentication and deliverability posture: MX records, SPF, DMARC, DKIM (probes 15 common selectors), BIMI, MTA-STS, TLS-RPT, and DANE, plus a blacklist check across all MX hosts, returning a 0-100 deliverability score. Use this for a full sending/receiving readiness review of a domain. Use dns_lookup instead if you only need raw TXT/MX records, or email_header_analysis to diagnose a specific message that was already sent. Read-only; requires no API key; rate-limited. Returns a text report: score, per-mechanism KPIs, issues, and actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesEmail domain to assess — the part after '@' (e.g., 'example.com'). An IP address is also accepted for reverse/PTR-based checks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A4.9/5.0
Behavior5/5

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

The description goes beyond the readOnlyHint and idempotentHint annotations by explaining that the tool performs DNS probes, blacklist checks, and returns a 0-100 score plus a text report. It also discloses the rate limit and the fact that no API key is required, giving an agent a clear picture of behavior and constraints.

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

Conciseness5/5

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

The description is well-organized: it first states what the tool does and what it returns, then gives the primary use case, then explicitly names alternative tools, and finally lists operational constraints. No sentences are wasted and the structure makes it easy for an agent to scan.

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

Completeness5/5

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

For a tool with many checks (MX, SPF, DMARC, DKIM, BIMI, MTA-STS, TLS-RPT, DANE, blacklists), the description gives enough detail to set expectations without overwhelming. It specifies the output format (score, per-mechanism KPIs, issues, actions) and provides enough context for an agent to decide whether this tool is appropriate.

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

Parameters4/5

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

The schema covers the single required domain parameter, and the description adds meaningful clarification: it defines the expected input as the part after '@', provides an example, and notes that an IP address is accepted for reverse/PTR checks. This is more helpful than the schema alone, though it does not cover edge cases like punycode or trailing dots.

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

Purpose5/5

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

The description opens with the specific verb 'Assess' and identifies the exact resource: a domain's email authentication and deliverability posture. It clearly distinguishes this tool from dns_lookup and email_header_analysis by naming those alternatives and their narrower use cases.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool ('for a full sending/receiving readiness review of a domain') and when not to, directing users to dns_lookup for raw records and email_header_analysis for a specific message. It also provides operational constraints: read-only, no API key required, and rate-limited.

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

email_header_analysisEmail Header AnalysisA
Read-onlyIdempotent
Inspect

Parse raw email headers to reconstruct the delivery path (each Received hop in order), extract SPF/DKIM/DMARC authentication results, measure per-hop delays, and flag unencrypted (non-TLS) hops. Use this to diagnose a specific message that was already delivered — spoofing, delays, or where mail was lost. Use email_auth instead to assess a domain's sending configuration before sending. Read-only; requires no API key; rate-limited. INPUT is the full raw header block. OUTPUT is a text report containing: the ordered hop route, per-mechanism auth results (pass/fail), detected inter-hop delays, and the encryption status of each hop.

ParametersJSON Schema
NameRequiredDescriptionDefault
headersYesThe complete raw email header block, copied verbatim — every line from the first 'Received:'/'From:' down to the blank line before the body. Paste as-is, including folded continuation lines; do not include the message body.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A5/5.0
Behavior5/5

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

The description discloses additional behavioral details beyond the annotations, including that the tool is read-only, requires no API key, and is rate-limited. It also outlines the output format (text report) and input instructions, giving a transparent picture of what happens when invoked.

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

Conciseness5/5

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

The description is thorough but well-structured, front-loading the primary purpose and then providing usage context, alternative, and expected output. No redundant or irrelevant content; every sentence adds value.

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

Completeness5/5

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

With only one parameter, the description covers all necessary context: function, input format, output details, usage scenario, alternative, and operational constraints (rate limit). It is complete for an agent to decide when and how to invoke the tool correctly.

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

Parameters5/5

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

The schema description provides extensive detail about the single parameter 'headers', including exactly what to include (first 'Received:'/'From:' line down to blank line), how to paste (verbatim, with folded continuation lines), and what to exclude (message body). The tool description also reiterates 'INPUT is the full raw header block', reinforcing the meaning.

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

Purpose5/5

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

The description clearly states the tool's function: parsing raw email headers to reconstruct delivery path, extract SPF/DKIM/DMARC results, measure per-hop delays, and flag non-TLS hops. It also distinguishes the use case from the sibling email_auth tool, making its purpose unambiguous.

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

Usage Guidelines5/5

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

The description explicitly specifies when to use this tool ('diagnose a specific message that was already delivered') and when to use the alternative email_auth ('assess a domain's sending configuration before sending'). This provides clear guidance on selection.

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

golive_checkGo-Live Readiness ChecklistA
Read-onlyIdempotent
Inspect

Check whether a domain is ready to launch or migrate — a go/no-go verdict over five essentials: DNS resolves to an IP, has propagated consistently across global resolvers, SSL/TLS is ready, the site is reachable over HTTPS, and the domain registration is not about to expire. Use this right before flipping DNS to a new server, or to confirm a migration has landed. It answers "can I switch over yet?"; use security_scan for a security posture grade or the individual tools for depth. Any failing essential yields not_ready; only cautions yields caution; all clear yields ready. Read-only (a passive multi-probe, though it does resolve and fetch the domain); requires no API key; rate-limited. Returns the verdict, per-check statuses, and a shareable report link.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to check for launch/migration readiness (e.g., 'example.com'). Scheme and path are stripped.

Output Schema

ParametersJSON Schema
NameRequiredDescription
checksNo
verdictYes'ready' | 'caution' | 'not_ready'
failCountNo
passCountNo
reportUrlYesHuman-facing interactive report on dechonet.com
warnCountNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/idempotent/non-destructive, and the description adds valuable behavior beyond those: it is a passive multi-probe that still resolves and fetches, requires no API key, is rate-limited, and maps outcomes to verdicts ('Any failing essential yields not_ready; only cautions yields caution; all clear yields ready'). 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.

Conciseness4/5

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

The description is front-loaded with purpose and usage, then verdict logic, then operational constraints. It is denser than necessary in places—the five-essential list and the verdict mapping both earn their place, but the prose could be tightened slightly without losing meaning.

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

Completeness5/5

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

For a one-parameter, read-only tool with an output schema and rich annotations, the description covers what, when, how verdicts are computed, operational constraints, and the return summary. Nothing needed to select or invoke the tool correctly is missing.

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

Parameters3/5

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

Schema description coverage for the single required parameter is 100%, so the baseline of 3 applies. The description connects 'domain' to the launch-readiness checks, but it does not add parameter-level details beyond what the schema already documents, such as scheme/path stripping.

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

Purpose5/5

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

The description states a specific action ('Check whether a domain is ready to launch or migrate') and a concrete deliverable ('a go/no-go verdict') over five enumerated essentials. It also distinguishes itself from siblings by naming security_scan and the individual tools, so an agent can identify it without opening schemas.

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

Usage Guidelines5/5

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

It gives explicit when-to-use guidance ('right before flipping DNS to a new server, or to confirm a migration has landed'), frames the exact question it answers ('can I switch over yet?'), and routes to alternatives ('use security_scan for a security posture grade or the individual tools for depth'). This is model usage guidance.

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

http_securityHTTP Security Headers AuditA
Read-onlyIdempotent
Inspect

Follow a URL's HTTP redirect chain and audit response security headers (CSP, HSTS, X-Frame-Options, COOP, CORP, COEP, Permissions-Policy), grading A+ to F and flagging information leaks such as server-version disclosure. Use this for HTTP-layer/header posture. Use ssl_check instead for certificate or TLS-handshake issues, or security_scan for a full domain report. Read-only (an HTTP GET-style probe that sends no payload); requires no API key; rate-limited. Returns a text report: grade, header findings, redirect trace, issues, and actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL including scheme (e.g., 'https://example.com/path'). If the scheme is omitted, https:// is assumed. Redirects are followed starting from this URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description reinforces and extends this by stating 'Read-only (an HTTP GET-style probe that sends no payload)', adding detail beyond the annotations. No contradictions exist.

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

Conciseness5/5

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

The description is compact and information-dense, covering functionality, alternatives, safety, and output in a few sentences without redundancy. It is well-structured and easy to parse.

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

Completeness5/5

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

Given the output format is described ('text report: grade, header findings, redirect trace, issues, and actions'), the alternative tools are named, and the safety profile is clear, the description gives an agent all needed context to select and invoke the tool correctly.

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

Parameters5/5

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

The single 'url' parameter has a schema description that is 100% covered. The description adds meaningful behavior context: scheme defaulting to https and that redirects are followed, which goes beyond the schema and clarifies expected input handling.

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

Purpose5/5

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

The description clearly states the tool audits HTTP security headers, follows redirect chains, grades A-F, and flags info leaks. It also explicitly distinguishes from sibling tools ssl_check and security_scan by explaining when each should be used.

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

Usage Guidelines5/5

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

The description provides explicit guidance: 'Use this for HTTP-layer/header posture' and names alternatives (ssl_check for TLS, security_scan for full domain). It also notes read-only, no API key, and rate-limiting, giving clear practical usage constraints.

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

impersonation_exposureBrand Impersonation ExposureA
Read-onlyIdempotent
Inspect

Assess how exposed a domain is to brand impersonation and phishing, PASSIVELY: live typosquat/lookalike domains (homoglyph, omission, transposition, TLD swap) that actually resolve, operational subdomains (dev/staging/admin) exposed in CT logs, and whether a wildcard certificate exists — returning an A+ (low exposure) to F (high exposure) grade. Framing: a registered lookalike domain is not proof of impersonation — it may be a legitimate third party or the owner's own — so report it as exposure to verify, not as an accusation against that domain. Fully passive: public DNS delegation checks plus public CT-log queries, sending nothing to the target or the lookalike domains, so it is safe and lawful to run. Use lookalike_domains or subdomain_discovery for the raw per-tool detail. Read-only; requires no API key; rate-limited. Returns a text report: grade, counts, per-category findings, and a shareable report link.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesRegistrable domain to assess for impersonation exposure (e.g., 'example.com'). Scheme and path are stripped.

Output Schema

ParametersJSON Schema
NameRequiredDescription
gradeYesExposure grade A+ (low exposure) to F (high exposure)
scoreYes0-100, higher = less exposed
wildcardNoWhether a wildcard certificate exists
reportUrlYesHuman-facing interactive report on dechonet.com
typosquatCountYesLive third-party lookalike/typosquat domains (variants on the domain's own nameservers/IP are excluded)
riskySubdomainCountYesExposed operational subdomains found

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already carry readOnlyHint/idempotentHint/destructiveHint, yet the description adds substantial context beyond them: the fully-passive methodology (DNS delegation + CT-log queries, nothing sent to target or lookalikes), rate-limiting, no API key needed, and a critical interpretive caveat that a registered lookalike is exposure to verify, not an accusation. That framing guidance is behavioral value the annotations cannot express.

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

Conciseness4/5

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

Purpose, scope, methodology, caveat, alternatives and behavior are front-loaded and each sentence carries distinct information. It is dense and fairly long, but almost nothing is redundant given the dual audience of safety and interpretation.

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

Completeness5/5

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

For a one-parameter, read-only, output-schema-bearing tool, the description covers purpose, method, safety, interpretation caveats and alternative routing. With an output schema present it needn't detail return values, and its brief summary of the report is sufficient.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, so the schema already documents that the tool takes a registrable domain and strips scheme/path. The description adds no syntax or format detail beyond this, 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 ('assess how exposed a domain is to brand impersonation and phishing') and enumerates the exact signal classes checked (homoglyph/omission/transposition/TLD-swap lookalikes, operational subdomains in CT logs, wildcard certs) plus the output form (A+ to F grade). It explicitly distinguishes itself from siblings by routing raw per-tool detail to lookalike_domains and subdomain_discovery, so an agent can tell it apart without opening a schema.

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

Usage Guidelines5/5

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

Names the alternatives (lookalike_domains, subdomain_discovery) and the condition that selects them ('for the raw per-tool detail'), implying this tool is the aggregate/scored assessment. It also specifies the passive-verification posture, making the intended use unambiguous.

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

ip_infoMy IP InfoA
Read-onlyIdempotent
Inspect

Report information about the caller's own public IP as seen by the server: IPv4/IPv6 address, ISP, ASN, approximate geolocation, and proxy/VPN heuristics. Takes no input — it reflects the egress IP of THIS MCP server's network, which is usually NOT the end user's IP. Use this to discover the server's outbound IP or test connectivity. To inspect a specific, known IP instead, use asn_lookup or reverse_dns. Read-only; requires no API key; rate-limited.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A5/5.0
Behavior5/5

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

Description aligns with annotations (readOnlyHint, idempotentHint, destructiveHint false) and adds useful behavioral context: takes no input, reflects egress IP, read-only, no API key required, rate-limited. No contradictions with annotations.

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

Conciseness5/5

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

Description is compact, front-loaded with the primary purpose, and contains no redundant or filler wording. All sentences add value.

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

Completeness5/5

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

Despite having no parameters, the description fully covers what the tool does, what data it returns, and its constraints. The listed return fields give enough context for an agent to decide whether this tool fits the task.

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

Parameters5/5

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

Tool has zero parameters and the schema reflects this. Description explicitly reinforces 'Takes no input', leaving no ambiguity about invocation requirements.

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

Purpose5/5

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

Description clearly identifies the resource (caller's own public IP as seen by server) and the action (report), and enumerates the data returned (IPv4/IPv6, ISP, ASN, geolocation, proxy/VPN heuristics). It also distinguishes itself from related sibling tools by noting asn_lookup/reverse_dns are for specific IPs.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool (discover server outbound IP or test connectivity) and when to use alternatives (specific known IP -> asn_lookup or reverse_dns). This is clear usage guidance.

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

lookalike_domainsLookalike Domain CheckA
Read-onlyIdempotent
Inspect

Generate the typosquat/lookalike variants of a domain that phishers actually register — homoglyph swaps (l→1, o→0, rn→m), TLD swaps (.com→.co), character omissions, transpositions, repetitions, hyphenations — and check which of them are currently registered (live NS delegation via DoH). Use this to assess brand-impersonation and phishing exposure for a domain the user is responsible for. A registered variant is NOT proof of abuse (it may be an unrelated legitimate site) — follow up with whois_lookup on each hit for its owner and registration date. Read-only; requires no API key; rate-limited. Returns generated/checked counts and the registered variants with the technique that produced each.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to protect (e.g., 'example.com'), without scheme or path. Variants of its label and TLD are generated and checked.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A5/5.0
Behavior5/5

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

The description clearly states behavioral characteristics: it is read-only, returns counts and registered variants with the technique, and warns that a registered variant is not proof of abuse. This aligns with the annotations (readOnlyHint: true, destructiveHint: false) and provides additional clarification about limitations.

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?

While the description is relatively long, every sentence contributes essential information, including purpose, techniques, output, and constraints. It is well-structured in a single paragraph without redundancy, making it appropriately concise for the tool's complexity.

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

Completeness5/5

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

The description covers all necessary context: what the tool does, its output (counts and registered variants with technique), operational details (read-only, no API key, rate-limited), and follow-up actions (whois_lookup for ownership and registration date). It also explicitly addresses a common misconception about registered variants, making it highly complete.

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

Parameters5/5

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

The single parameter 'domain' is thoroughly described in the schema: it specifies the format (without scheme or path) and explains that variants of its label and TLD are generated. Schema coverage is 100%, and the description adds meaningful context about how the parameter is used.

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

Purpose5/5

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

The description states a clear purpose: generate typosquat/lookalike variants and check which are registered. It explicitly names the resource (domain), the scope (variants of label and TLD), and the use case (assessing brand-impersonation and phishing exposure).

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

Usage Guidelines5/5

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

It provides explicit usage guidance: 'Use this to assess brand-impersonation and phishing exposure for a domain the user is responsible for.' It also notes the tool is read-only, requires no API key, is rate-limited, and recommends follow-up with whois_lookup, giving clear context for when and how to use it.

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

owasp_checkOWASP Security CheckupA
Read-onlyIdempotent
Inspect

Assess a domain's OWASP posture from EXTERNAL OBSERVATION only: the OWASP Secure Headers Project plus the externally observable Top 10 subset — A02 Cryptographic Failures (TLS/cert), A05 Security Misconfiguration (header/info leaks), and A06 Vulnerable & Outdated Components (version disclosure) — returning an A+ to F grade. Scope: A01 (Access Control), A03 (Injection), A04, A07 (Authentication), A08, A09 and A10 (SSRF) are not checked — they need authenticated access or active/injection testing, so the result lists them as out-of-scope rather than "pass". Present the result as an external-posture check, not a full OWASP Top 10 assessment. Unlike security_scan this is fully PASSIVE (a normal HTTP GET plus a public CT-log lookup, no port scan), so it is safe and lawful to run on domains you do not own. Use http_security or ssl_check for depth on one layer. Read-only; requires no API key; rate-limited. Returns a text report: grade, per-category findings, the out-of-scope list, and a shareable report link.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname to assess, without scheme (e.g., 'example.com'). The host portion of a pasted URL is also accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
gradeYesOWASP posture grade A+ to F, over the observable categories only
scoreYes0-100 across the categories that could be evaluated
checksYesPer observable category: Secure Headers, A02, A05, A06
reportUrlYesHuman-facing interactive report on dechonet.com
notObservableNoTop 10 categories NOT checked (need authenticated/active testing)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/destructive/idempotent/openWorld, but the description adds substantial context beyond them: the exact passive mechanism (normal HTTP GET plus public CT-log lookup, no port scan), lawful-to-run-on-any-domain assurance, no API key requirement, rate-limiting, and the report contents. This exceeds the annotation bar considerably.

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

Conciseness4/5

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

Front-loaded with the core purpose and scope, and most sentences carry distinct information (scope, exclusions, sibling contrast, safety, alternatives, return format). It is dense and slightly long, with mild redundancy between the out-of-scope enumeration and the 'present as external-posture check' sentence, but no filler.

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

Completeness5/5

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

An output schema exists so return values need not be fully explained, yet the description confirms the text report shape (grade, per-category findings, out-of-scope list, shareable link). Combined with the scope, safety, and alternative guidance, nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% with a single well-documented 'host' parameter, so the schema already carries the semantics. The description implies host/domain input but adds no syntax or format detail beyond what the schema states, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('Assess a domain's OWASP posture from EXTERNAL OBSERVATION only') and enumerates exactly which OWASP categories are covered (A02, A05, A06) versus excluded. It also explicitly contrasts itself with siblings security_scan, http_security, and ssl_check, so an agent can route correctly without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use (external/posture-only), when-not (A01/A03/A04/A07/A08/A09/A10 need authenticated or active testing), and names alternatives with their conditions ('Use http_security or ssl_check for depth on one layer'). The passive-vs-active distinction against security_scan is spelled out clearly.

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

port_scanOpen Port ScanA
Read-onlyIdempotent
Inspect

Probe a host for a fixed set of common TCP ports (HTTP, HTTPS, SSH, FTP, SMTP, DNS, and common databases) and report which are open, the service name, and the response time. BEHAVIOR: this makes an ACTIVE TCP connection to the target. It is non-intrusive — a connect probe only; it does not authenticate, send exploits, or transfer data — and changes nothing on the target (read-only), but the connection is visible in the target's logs, so only scan hosts you own or are explicitly authorized to test. Use this to confirm which services are exposed. Use ssl_check or http_security instead to assess a specific service's configuration. Requires no API key; rate-limited. Returns a per-port open/closed list with service names.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname or IP to probe (e.g., 'example.com' or '203.0.113.10'). A 'host:port' form is accepted to hint a specific port. Only supply targets you own or are authorized to test.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A4.9/5.0
Behavior5/5

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

The description openly discloses that the tool makes an ACTIVE TCP connection, is non-intrusive, and that the connection is visible in target logs. This aligns with and expands on the annotations (readOnlyHint, idempotentHint, destructiveHint false) 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.

Conciseness4/5

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

The description is clear and well-structured but repeats the 'connect probe only' and authorization guidance multiple times. Slight redundancy, though it does not harm usability.

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

Completeness5/5

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

Given the presence of an input schema, sibling tools, and usage notes, the description provides all necessary information for an agent to decide to invoke the tool and understand its effects. The output is described sufficiently for a list of open ports.

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

Parameters5/5

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

The host parameter is fully described with examples, an accepted 'host:port' variant, and an authorization warning. Schema coverage is 100%, and the description adds practical usage context beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Probe a host for a fixed set of common TCP ports'), the scope ('fixed set'), and the output ('report which are open, the service name, and the response time'). It also distinguishes itself by naming sibling tools for specific service configuration checks, making its purpose unique.

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

Usage Guidelines5/5

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

Explicitly tells when to use the tool ('Use this to confirm which services are exposed') and when not to use it ('Use ssl_check or http_security instead to assess a specific service's configuration'). This gives clear selection criteria.

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

reverse_dnsReverse DNS (PTR) LookupA
Read-onlyIdempotent
Inspect

Resolve the PTR (reverse DNS) record for an IPv4 or IPv6 address and verify forward-confirmed reverse DNS (FCrDNS) by checking that the PTR hostname resolves back to the same IP. Infers the hosting provider from PTR naming patterns. Use this to validate mail-server rDNS or identify a single IP's host. Use asn_lookup instead for network/BGP ownership of the IP. Read-only; requires no API key; rate-limited. Returns the PTR hostname, FCrDNS pass/fail, and a provider guess.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYesIP address to reverse-resolve, IPv4 or IPv6 (e.g., '8.8.8.8' or '2001:4860:4860::8888'). Must be an IP, not a hostname.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A4.7/5.0
Behavior5/5

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

Discloses behavior beyond annotations: FCrDNS verification, provider inference, return values, and rate limit. Matches readOnlyHint and idempotentHint.

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

Conciseness5/5

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

Concise, front-loaded with main action, then usage guidance and alternative. No fluff.

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

Completeness5/5

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

Complete for single-param tool: covers input, output, use cases, alternatives, and constraints. Nothing missing.

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

Parameters3/5

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

Schema already documents ip with full description (IPv4/IPv6, examples, must be IP not hostname). Tool description adds no new parameter details beyond restating it is an IP address.

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

Purpose5/5

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

Clearly states it resolves PTR records, verifies FCrDNS, and infers hosting provider, and distinguishes from asn_lookup.

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

Usage Guidelines5/5

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

Explicitly tells when to use (validate mail-server rDNS, identify single IP's host) and when to use alternative (asn_lookup for network/BGP ownership), plus notes read-only, no API key, rate-limited.

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

security_scanFull Domain Security ScanA
Read-onlyIdempotent
Inspect

One-shot comprehensive audit of a domain: runs DNS, SSL, HTTP headers, email auth, port scan, DNS propagation, reverse DNS, and ASN/RDAP checks in parallel, then computes a 0-100 Health Score with an A-F grade and a prioritized action list. Use this as the default starting point for "is this domain healthy/secure?" questions. Call the individual tools (e.g., ssl_check, email_auth) instead when you need depth on one area. BEHAVIOR: this includes an ACTIVE port_scan of the domain's host, so only run it on domains you own or are authorized to test. Read-only otherwise; requires no API key; rate-limited (it makes multiple backend calls). Returns the score, per-area breakdown, top actions, and per-area summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to audit end-to-end (e.g., 'example.com'). Scheme and path are stripped. NOTE: the host is also port-scanned, so use only targets you are authorized to test.

Output Schema

ParametersJSON Schema
NameRequiredDescription
areasYesPer-area verdicts
gradeYesLetter grade A+ to F
scoreYesHealth Score 0-100
actionsNoTop recommended actions
reportUrlYesHuman-facing interactive report on dechonet.com

TDQS

A5/5.0
Behavior5/5

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

The description explicitly discloses the active port scan behavior, the authorization requirement, the read-only nature of the rest of the checks, and the rate-limiting. This goes well beyond the annotations and gives users a clear understanding of what the tool does and any risks involved.

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

Conciseness5/5

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

The description is dense but well-structured, using a colon-separated summary, a usage sentence, and a behavior warning. Every sentence adds necessary information with no fluff or redundancy, making it long but appropriately scannable.

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

Completeness5/5

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

Given the output schema is present and the description names the key return components (score, per-area breakdown, top actions, summaries), there is enough context for an agent to call the tool correctly. The warning about authorization and the distinction from single-purpose tools round out the context.

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

Parameters5/5

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

The single 'domain' parameter is fully described with an example, clarification that schemes and paths are stripped, and a note that the host is also port-scanned. Schema description coverage is 100%, and the description adds important operational context not present in the schema.

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

Purpose5/5

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

The description clearly states the tool performs a one-shot comprehensive security audit of a domain, listing all checks (DNS, SSL, HTTP headers, email auth, port scan, etc.) and the outputs (Health Score, grade, action list). It also explicitly positions it as the default tool for domain health/security questions.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool versus sibling tools, stating it is the default starting point and directing users to individual tools like ssl_check and email_auth when depth in one area is needed. It also includes an authorization warning for the active port scan.

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

ssl_checkSSL Certificate CheckA
Read-onlyIdempotent
Inspect

Inspect a host's served TLS/SSL certificate and connection: expiry date, issuer, SAN list, chain integrity, TLS version, and HSTS, returning an A+ to F grade weighted by certificate validity (40%), TLS version (25%), chain trust (15%), and HSTS (20%). Use this to diagnose certificate or HTTPS-handshake problems for one host. Use http_security instead to audit response security headers, or security_scan for an all-in-one domain report. Read-only: it completes a TLS handshake but sends no application data; requires no API key; rate-limited. Returns a text report: grade, expiry/issuer KPIs, issues, and actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname to inspect, without scheme (e.g., 'example.com'). The host portion of a pasted URL is also accepted.
portNoTCP port for the TLS handshake. Defaults to 443 (standard HTTPS); set this only for a non-standard HTTPS port such as 8443.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A4.7/5.0
Behavior5/5

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

The description goes beyond the annotations by detailing that it 'completes a TLS handshake but sends no application data,' requires no API key, and is rate-limited. This aligns with the readOnlyHint and destructiveHint, with no contradictions.

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

Conciseness5/5

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

The description is dense but every clause earns its place: purpose, output details, usage guidance, alternatives, and behavioral notes are all included without redundancy. It is well-structured and easy to parse.

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

Completeness5/5

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

Given the tool's moderate complexity, the description covers input, output format, usage context, alternatives, and operational constraints. An agent has enough context to invoke the tool correctly without needing external details.

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

Parameters3/5

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

The tool description itself does not add parameter-specific guidance beyond what the input schema already provides. The schema descriptions for host and port are thorough, so the baseline of 3 applies because the description adds no extra parameter semantics.

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

Purpose5/5

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

The description opens with a specific action—'Inspect a host's served TLS/SSL certificate and connection'—and enumerates the exact outputs (expiry, issuer, SAN, chain, TLS version, HSTS, and grade). It clearly differentiates from sibling tools by naming http_security and security_scan as alternatives.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool: 'diagnose certificate or HTTPS-handshake problems for one host.' It also gives direct alternative tools for other needs, making the selection criteria unambiguous.

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

subdomain_discoverySubdomain DiscoveryA
Read-onlyIdempotent
Inspect

Enumerate the subdomains of a domain from Certificate Transparency logs — fully passive (no packets are sent to the target; CT logs are public records of every TLS certificate ever issued). Flags operational-looking names (dev, staging, admin, vpn, legacy) and wildcard certificates, because forgotten subdomains are a common takeover path. Use this as the first recon step to map a domain's attack surface. Use dns_lookup to check whether a discovered name still resolves, or lookalike_domains for typosquat variants of the domain name itself. Read-only; requires no API key; rate-limited. Returns the subdomain count, risky-name count, wildcard flag, and the hostname list.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesRegistrable domain to enumerate (e.g., 'example.com'), without scheme or path. Subdomains found in CT logs for this domain are returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A5/5.0
Behavior5/5

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

The description goes beyond the annotations by disclosing that it is 'fully passive (no packets are sent to the target)' and that CT logs are public records. It also explains the flagging behavior for operational-looking names and wildcard certificates, plus mentions rate-limiting and read-only nature. This richly informs the agent of the tool's 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.

Conciseness5/5

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

The description is moderately long but every sentence serves a purpose: it states the core action, explains the passive method, describes output flags, gives usage context, points to alternatives, and lists return values. It is well-structured and front-loaded with the primary purpose, so it remains concise despite the detail.

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

Completeness5/5

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

For a recon tool with one parameter, the description is complete: it covers input format, method, output contents, relationship to sibling tools, safety characteristics, and rate-limiting. There is no missing context that an agent would need to decide to call or interpret the results of this tool.

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

Parameters5/5

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

The schema description covers 100% of the parameters, and the description adds extra semantic detail: the domain must be a 'registrable domain' without scheme or path, with an example ('example.com'). It also clarifies that subdomains found in CT logs for that domain are returned, so the parameter meaning is fully clear.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Enumerate the subdomains of a domain from Certificate Transparency logs.' It also distinguishes itself from sibling tools by mentioning the passive CT-log method and by referencing dns_lookup and lookalike_domains as complementary next steps.

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

Usage Guidelines5/5

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

Explicit guidance is provided: 'Use this as the first recon step to map a domain's attack surface' and when to use alternatives: 'Use dns_lookup to check whether a discovered name still resolves, or lookalike_domains for typosquat variants.' This leaves no ambiguity about when to choose this tool.

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

subnet_calcIPv4 Subnet CalculatorA
Read-onlyIdempotent
Inspect

Compute IPv4 subnet details from CIDR notation entirely locally — no network call: network and broadcast addresses, usable host range, total usable hosts, subnet mask, and wildcard mask. /31 and /32 are handled per RFC 3021 (point-to-point / single host). Use this for IPv4 address planning. It does not query DNS or contact any host, so it is purely computational. Requires no API key and is NOT rate-limited (computed in-process). Returns the calculated fields as text.

ParametersJSON Schema
NameRequiredDescriptionDefault
cidrYesIPv4 address with a CIDR prefix length 0-32 (e.g., '192.168.1.0/24'). IPv4 only; host bits may be any address inside the block.

Output Schema

ParametersJSON Schema
NameRequiredDescription
prefixYesCIDR prefix length
networkYesNetwork address
lastHostYesLast usable host
broadcastYesBroadcast address
firstHostYesFirst usable host
reportUrlYesHuman-facing interactive report on dechonet.com
subnetMaskYesDotted-decimal subnet mask
totalHostsYesUsable host count
wildcardMaskYesWildcard (inverse) mask

TDQS

A5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses important behavioral traits: no network call, no DNS query, no API key, no rate limiting, and special handling of /31 and /32 per RFC 3021. This goes well beyond the annotation metadata.

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

Conciseness5/5

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

The description is compact and well-structured, with no fluff. Every sentence adds value: purpose, output, use case, computational nature, and edge-case handling. It fits within a few lines and is easily scannable.

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

Completeness5/5

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

Given the simple input schema and the presence of an output schema (as indicated), the description fully covers what an agent needs: it enumerates the returned fields (network, broadcast, usable range, total hosts, subnet mask, wildcard mask) and notes the RFC 3021 exception. No additional context is necessary.

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

Parameters5/5

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

The schema description covers 100% of the single parameter, and the description adds critical semantics: 'IPv4 only' and 'host bits may be any address inside the block.' This clarifies the expected input format beyond the schema alone.

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

Purpose5/5

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

The description uses a specific verb ('Compute') and identifies the resource ('IPv4 subnet details'), clearly distinguishing it from sibling network diagnostic tools like port_scan or dns_lookup. It also states the output fields, making the purpose unambiguous.

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

Usage Guidelines5/5

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

It explicitly says 'Use this for IPv4 address planning' and highlights that it is purely computational with no network calls, no API key, and no rate limits. This gives clear when-to-use guidance and indirectly contrasts with the network-bound siblings.

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

watch_domainWatch a Domain (daily re-check)A
Idempotent
Inspect

Start (or reuse) a daily DechoNet watch on a domain so that changes are recorded over time — SSL grade/issuer/expiry, DNS records, HTTP security headers, domain registration, and optionally OWASP posture and impersonation exposure. Use this once when the user cares about a domain beyond a one-off check (their own domain, a client, a vendor, a target under investigation). After this, domain_changes answers "what changed since last time?" from real daily snapshots. Not read-only (it creates a watch record) but idempotent: watching an already-watched domain returns the existing watch. No account, no email, no PII — a watch is keyed by domain+tool and its history page is a public unguessable URL you can share with the user. Rate-limited (a few watches per minute).

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsNoWhich checks to re-run daily. Default ['ssl','dns','http','rdap'] (certificate, DNS, security headers, registration). Add 'owasp' and/or 'impersonation' for posture and brand-exposure tracking.
domainYesRegistered domain to watch (e.g., 'example.com'). Scheme and path are stripped.

Output Schema

ParametersJSON Schema
NameRequiredDescription
domainYes
failedNoTools that could not be watched (rate limit or error)
watchesYesOne entry per tool now under a daily watch
reportUrlYes

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond annotations by explaining that the tool is not read-only, is idempotent and returns the existing watch, requires no account/email/PII, produces a public unguessable URL, and is rate-limited. These behavioral details are not present in the annotations and materially help an agent set expectations.

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

Conciseness5/5

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

The description is moderately sized but every sentence earns its place: purpose, usage trigger, downstream relationship, idempotence, privacy, and rate limits. It is front-loaded with the core purpose and does not include fluff or redundant schema restatement.

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

Completeness5/5

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

Given the simple schema (2 params, 1 required), the rich annotations, and the presence of an output schema, the description covers all selection and invocation-relevant details: when to use, behavioral side effects, idempotence, rate limiting, and privacy. Nothing critical for correct invocation is missing.

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

Parameters3/5

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

The input schema already provides 100% description coverage for both parameters, including the tools enum, defaults, and domain normalization. The description merely restates the optional OWASP and impersonation checks at a high level, adding no new parameter meaning beyond what the schema already conveys. Baseline 3 applies.

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

Purpose5/5

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

The description explicitly states the tool's function with a specific verb and resource: 'Start (or reuse) a daily DechoNet watch on a domain so that changes are recorded over time.' It enumerates the tracked data (SSL grade/issuer/expiry, DNS records, headers, registration), and distinguishes itself from the sibling domain_changes by explaining that this tool creates the watch while domain_changes reports changes.

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

Usage Guidelines5/5

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

It gives an explicit trigger: 'Use this once when the user cares about a domain beyond a one-off check' and lists example scenarios. It also positions the tool relative to domain_changes (what to use after watching) and clarifies reuse via idempotence. The 'beyond a one-off check' phrase implicitly excludes one-off scan alternatives.

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

whois_lookupWHOIS / RDAP Domain LookupA
Read-onlyIdempotent
Inspect

Retrieve domain registration data via RDAP (with WHOIS fallback): registrar, creation/expiry/update dates, nameservers, and EPP status flags, highlighting risk states such as clientHold and pendingDelete. Use this for ownership, lifecycle, and expiry questions about a registered domain. Use dns_lookup instead for live DNS records, or reverse_dns/asn_lookup for IP-level ownership. Read-only; requires no API key; rate-limited. Returns registrar, key dates, nameservers, and status flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesRegistered domain name to look up (e.g., 'example.com'). A subdomain is normalized to its registrable domain.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kpisNoKey metrics as label/value pairs
gradeNoLetter grade (A+ to F) when the tool grades the target
scoreNo0-100 score when the tool scores the target
issuesNoDetected problems, severity-rated
statusYesOverall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'
actionsNoRecommended next actions, most important first
summaryNoOne-paragraph interpretation of the result
reportUrlYesHuman-facing interactive report for this exact lookup on dechonet.com

TDQS

A4.8/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint, idempotentHint), the description discloses extra behavioral traits: RDAP with WHOIS fallback, read-only nature, no API key required, and rate-limiting. This enriches the agent's understanding of what to expect.

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

Conciseness5/5

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

The description is compact and information-dense, with no redundant phrases. Each sentence serves a distinct purpose: what it returns, when to use it, and additional constraints.

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

Completeness5/5

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

Given the output schema exists, the description appropriately refrains from detailing return structure but still mentions the key output categories (registrar, key dates, nameservers, status flags). It covers all necessary context for correct invocation.

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

Parameters5/5

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

The single parameter 'domain' is fully described with an example and the normalization behavior ('A subdomain is normalized to its registrable domain'). Schema coverage is 100%, and the description adds valuable detail beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Retrieve') and a precise resource ('domain registration data'), and explicitly distinguishes from sibling tools like dns_lookup and reverse_dns/asn_lookup. This makes the tool's purpose unmistakable.

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

Usage Guidelines5/5

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

It provides explicit when-to-use guidance ('Use this for ownership, lifecycle, and expiry questions') and when-not-to ('Use dns_lookup instead for live DNS records'). This removes any ambiguity about selection.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.2.2
    • Addeddomain_changes
    • Addedgolive_check
    • Addedimpersonation_exposure
    • Addedowasp_check
    • Addedwatch_domain
  2. 15 tool updatesv1.1.0
    • Changedasn_lookup1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Changeddns_lookup1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Changeddns_propagation1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedemail_auth1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedemail_header_analysis1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedhttp_security1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedip_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Addedlookalike_domains
    • Changedport_scan1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedreverse_dns1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedsecurity_scan1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Top recommended actions",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "areas": {
        +      "description": "Per-area verdicts",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "area": {
        +            "type": "string"
        +          },
        +          "verdict": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "area",
        +          "verdict"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade A+ to F",
        +      "type": "string"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "Health Score 0-100",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "score",
        +    "grade",
        +    "areas",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedssl_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Addedsubdomain_discovery
    • Changedsubnet_calc1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "broadcast": {
        +      "description": "Broadcast address",
        +      "type": "string"
        +    },
        +    "firstHost": {
        +      "description": "First usable host",
        +      "type": "string"
        +    },
        +    "lastHost": {
        +      "description": "Last usable host",
        +      "type": "string"
        +    },
        +    "network": {
        +      "description": "Network address",
        +      "type": "string"
        +    },
        +    "prefix": {
        +      "description": "CIDR prefix length",
        +      "type": "number"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report on dechonet.com",
        +      "type": "string"
        +    },
        +    "subnetMask": {
        +      "description": "Dotted-decimal subnet mask",
        +      "type": "string"
        +    },
        +    "totalHosts": {
        +      "description": "Usable host count",
        +      "type": "number"
        +    },
        +    "wildcardMask": {
        +      "description": "Wildcard (inverse) mask",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "network",
        +    "broadcast",
        +    "firstHost",
        +    "lastHost",
        +    "subnetMask",
        +    "wildcardMask",
        +    "totalHosts",
        +    "prefix",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedwhois_lookup1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "actions": {
        +      "description": "Recommended next actions, most important first",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "grade": {
        +      "description": "Letter grade (A+ to F) when the tool grades the target",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "description": "Detected problems, severity-rated",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "key"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kpis": {
        +      "description": "Key metrics as label/value pairs",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reportUrl": {
        +      "description": "Human-facing interactive report for this exact lookup on dechonet.com",
        +      "type": "string"
        +    },
        +    "score": {
        +      "description": "0-100 score when the tool scores the target",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown'",
        +      "type": "string"
        +    },
        +    "summary": {
        +      "description": "One-paragraph interpretation of the result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "reportUrl"
        +  ],
        +  "type": "object"
        +}
  3. 12 tool updatesv1.0.3
    • Changedasn_lookup1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"ASN (e.g., AS13335) or IP address"New value: +"An IP address (e.g., '1.1.1.1') or an AS number in 'AS####' form (e.g., 'AS13335')."
    • Changeddns_lookup1 field changed
      • changedInput schema / properties / domain / description
        Previous value: -"Domain name to query (e.g., example.com)"New value: +"Registrable domain or hostname to query, without scheme or path (e.g., 'example.com' or 'mail.example.com'). Do not include 'http://' or a trailing slash."
    • Changeddns_propagation2 fields changed
      • changedInput schema / properties / domain / description
        Previous value: -"Domain to check"New value: +"Domain whose record to compare across resolvers (e.g., 'example.com'), without scheme or path."
      • changedInput schema / properties / type / description
        Previous value: -"Record type"New value: +"DNS record type to compare across resolvers. Defaults to A (IPv4 address), the most common propagation check."
    • Changedemail_auth1 field changed
      • changedInput schema / properties / domain / description
        Previous value: -"Domain or IP to check (e.g., example.com or 1.2.3.4)"New value: +"Email domain to assess — the part after '@' (e.g., 'example.com'). An IP address is also accepted for reverse/PTR-based checks."
    • Changedemail_header_analysis1 field changed
      • changedInput schema / properties / headers / description
        Previous value: -"Raw email headers to analyze (paste the full header text)"New value: +"The complete raw email header block, copied verbatim — every line from the first 'Received:'/'From:' down to the blank line before the body. Paste as-is, including folded continuation lines; do not include the message body."
    • Changedhttp_security1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"URL to check (e.g., https://example.com)"New value: +"Full URL including scheme (e.g., 'https://example.com/path'). If the scheme is omitted, https:// is assumed. Redirects are followed starting from this URL."
    • Changedport_scan1 field changed
      • changedInput schema / properties / host / description
        Previous value: -"Hostname or IP to scan (e.g., example.com or example.com:443)"New value: +"Hostname or IP to probe (e.g., 'example.com' or '203.0.113.10'). A 'host:port' form is accepted to hint a specific port. Only supply targets you own or are authorized to test."
    • Changedreverse_dns1 field changed
      • changedInput schema / properties / ip / description
        Previous value: -"IP address to look up (IPv4 or IPv6)"New value: +"IP address to reverse-resolve, IPv4 or IPv6 (e.g., '8.8.8.8' or '2001:4860:4860::8888'). Must be an IP, not a hostname."
    • Changedsecurity_scan1 field changed
      • changedInput schema / properties / domain / description
        Previous value: -"Domain to scan comprehensively (e.g., example.com)"New value: +"Domain to audit end-to-end (e.g., 'example.com'). Scheme and path are stripped. NOTE: the host is also port-scanned, so use only targets you are authorized to test."
    • Changedssl_check2 fields changed
      • changedInput schema / properties / host / description
        Previous value: -"Hostname to check (e.g., example.com)"New value: +"Hostname to inspect, without scheme (e.g., 'example.com'). The host portion of a pasted URL is also accepted."
      • changedInput schema / properties / port / description
        Previous value: -"Port number (default: 443)"New value: +"TCP port for the TLS handshake. Defaults to 443 (standard HTTPS); set this only for a non-standard HTTPS port such as 8443."
    • Changedsubnet_calc1 field changed
      • changedInput schema / properties / cidr / description
        Previous value: -"IP with CIDR prefix (e.g., 192.168.1.0/24)"New value: +"IPv4 address with a CIDR prefix length 0-32 (e.g., '192.168.1.0/24'). IPv4 only; host bits may be any address inside the block."
    • Changedwhois_lookup1 field changed
      • changedInput schema / properties / domain / description
        Previous value: -"Domain name to look up"New value: +"Registered domain name to look up (e.g., 'example.com'). A subdomain is normalized to its registrable domain."
  4. 13 tool updatesv0.1.0
    • First observedasn_lookup
    • First observeddns_lookup
    • First observeddns_propagation
    • First observedemail_auth
    • First observedemail_header_analysis
    • First observedhttp_security
    • First observedip_info
    • First observedport_scan
    • First observedreverse_dns
    • First observedsecurity_scan
    • First observedssl_check
    • First observedsubnet_calc
    • First observedwhois_lookup

TDQS

A4.6/5.0

Scored across 20 tools

Disambiguation4/5

Each tool has a distinct target layer (DNS, TLS, HTTP headers, email, IP/ASN, WHOIS, monitoring), and descriptions explicitly cross-reference alternatives to steer selection. However, several tools converge on graded postures (security_scan, owasp_check, impersonation_exposure, http_security/ssl_check all return A–F grades), so a few boundaries require reading the descriptions closely rather than being self-evident from the name.

Naming Consistency5/5

Every tool uses lowercase snake_case with a consistent noun-oriented, descriptive convention (dns_lookup, ssl_check, http_security, whois_lookup, subnet_calc). No camelCase, no mixed verb styles, and the pattern is predictable throughout.

Tool Count4/5

20 tools is on the heavier side, but the surface spans genuinely distinct domains (DNS, TLS, email auth, IP/BGP, WHOIS, subnet math, monitoring, aggregation), so most tools earn their place. The aggregate tools (security_scan, golive_check) plus their constituent single-purpose tools create some redundancy that pushes the count slightly above ideal.

Completeness4/5

Covers external reconnaissance comprehensively: subdomain discovery, DNS, propagation, TLS, headers, email auth and header analysis, ports, reverse DNS, ASN, WHOIS, plus monitoring and go-live checks. Minor gaps remain (no delete/stop-watch counterpart to watch_domain, limited tech-fingerprinting/CVE depth), but the core lifecycle for security recon is well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Security intelligence API for AI models. CVE lookup with EPSS/KEV, domain recon (DNS, WHOIS, SSL, subdomains, WAF), and code security checks (secrets, injection, headers). 16 tools, no API key required.
    55
    33
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Comprehensive DNS security toolkit for AI agents: 103 tools across 13 categories including DNSSEC validation, subdomain takeover detection, email security audit, and more, all running locally with no external API calls required.
    100
    112 npm
    8
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides AI agents with zero-cost, zero-dependency trust evaluation for domains, URLs, wallets, APIs, and IPs, returning a 0-100 score with SSL, DNS, WHOIS, security header, and content sub-scores, plus batch comparison to rank multiple targets.
    MIT