Dechonet MCP
A domain security reconnaissance MCP server providing 13 tools for analyzing DNS, SSL, email authentication, network infrastructure, and overall security posture of domains and IPs.
Comprehensive Security Scan (
security_scan): Run 9 parallel checks on a domain, receiving a 0–100 Health Score with an A–F grade and prioritized remediation actions.DNS Lookup (
dns_lookup): Query DNS records (A, AAAA, MX, TXT, NS, SOA, CAA), validate DNSSEC, SPF/DMARC syntax, and identify misconfigurations with severity-rated diagnostics.SSL/TLS Check (
ssl_check): Verify certificate expiry, issuer, SANs, chain integrity, and TLS version, graded A+ to F.HTTP Security Audit (
http_security): Trace HTTP redirects and audit 10 security headers (CSP, HSTS, X-Frame-Options, COOP, CORP, COEP, Permissions-Policy, etc.), graded A+ to F.Email Authentication (
email_auth): Check MX, SPF, DMARC, DKIM (15 selectors), BIMI, MTA-STS, TLS-RPT, DANE, and blacklists, returning a 0–100 deliverability score.Port Scan (
port_scan): Identify open TCP ports and services (HTTP, HTTPS, SSH, FTP, SMTP, DNS, databases) on a host.DNS Propagation (
dns_propagation): Monitor propagation across 8+ global resolvers (Google, Cloudflare, Quad9, OpenDNS) to detect stale caches.Reverse DNS (
reverse_dns): Perform PTR lookups for IPv4/IPv6 addresses and verify forward-confirmed rDNS (FCrDNS).ASN/BGP Lookup (
asn_lookup): Identify network operator, prefixes, abuse contact, and network type (cloud/CDN/ISP/hosting) for an IP or ASN.WHOIS/RDAP Lookup (
whois_lookup): Retrieve domain registration data including registrar, dates, nameservers, and status flags.IP Info (
ip_info): Get public IP details including ISP, ASN, geolocation, and proxy/VPN detection.Email Header Analysis (
email_header_analysis): Trace email delivery routes, extract SPF/DKIM/DMARC results, and detect delays or unencrypted hops from raw headers.Subnet Calculator (
subnet_calc): Calculate subnet details (network/broadcast address, host range, usable hosts, wildcard mask) from CIDR notation — works offline.
DechoNet MCP Server
Domain security reconnaissance tools for AI agents via Model Context Protocol.
15 security tools — DNS, SSL, HTTP headers, email auth, port scan, propagation, reverse DNS, ASN/BGP, RDAP/WHOIS, subnet calc, and comprehensive security scan — callable from Claude Desktop and any MCP-compatible AI agent.
Part of DechoNet. Every tool here is also a free web tool at dechonet.com — no sign-up, no API key — backed by error-fix guides. This package brings the same checks to AI agents.
Quick Start (Claude Desktop)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"dechonet": {
"command": "npx",
"args": ["-y", "dechonet-mcp"]
}
}
}Or if installed locally:
{
"mcpServers": {
"dechonet": {
"command": "node",
"args": ["/path/to/dechonet/mcp/build/index.js"]
}
}
}Config file location:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Restart Claude Desktop. You'll see the DechoNet tools icon in the input area.
Related MCP server: domain-security-mcp-server
Install
# Via npx (no install needed)
npx dechonet-mcp
# Or install globally
npm install -g dechonet-mcpAvailable Tools
Tool | Description |
| Comprehensive scan — 9 checks in parallel, 0-100 Health Score, A-F grade |
| DNS records + DNSSEC + SPF/DMARC validation |
| SSL/TLS certificate, chain, TLS version, A-F grade |
| HTTP redirect trace + 10 security headers audit, A-F grade |
| SPF, DMARC, DKIM, BIMI, MTA-STS, DANE + blacklist check |
| Open TCP ports with service identification |
| DNS propagation across 8+ global resolvers |
| PTR record + FCrDNS verification |
| ASN/BGP network identification + abuse contact |
| RDAP/WHOIS domain registration data |
| Public IP, ISP, ASN, proxy detection |
| Email delivery route tracing + auth results |
| CIDR subnet calculator (offline) |
Example Prompts
Once connected, try asking Claude:
"Check the security posture of example.com"
"Is the SSL certificate for mysite.com about to expire?"
"What DNS records does example.com have?"
"Scan the open ports on my-server.com"
"Analyze these email headers: [paste headers]"
"What's the ASN for 8.8.8.8?"
"Calculate the subnet for 10.0.0.0/16"
SSE Transport (Remote)
For remote/HTTP-based MCP connections:
cd mcp
npm run start:sse
# Server runs on http://localhost:3100
# SSE endpoint: http://localhost:3100/sseDevelopment
cd mcp
npm install
npm run build # TypeScript → build/
npm run dev # Run with tsx (stdio)
npm run start:sse # Run SSE serverHow 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 performance indicators 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, RDAP). No active exploitation.
Environment Variables
Variable | Default | Description |
|
| API base URL |
|
| Response language ( |
|
| 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.
🌐 Web tools (free, no sign-up): https://dechonet.com
📘 Guides (fix common DNS/SSL/HTTP/email errors): https://dechonet.com/guides
MIT licensed. Issues and PRs welcome.
Available Tools
15 toolsasn_lookupASN / BGP LookupARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | An IP address (e.g., '1.1.1.1') or an AS number in 'AS####' form (e.g., 'AS13335'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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 LookupARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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 CheckARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | DNS record type to compare across resolvers. Defaults to A (IPv4 address), the most common propagation check. | A |
| domain | Yes | Domain whose record to compare across resolvers (e.g., 'example.com'), without scheme or path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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.
email_authEmail Authentication CheckARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Email domain to assess — the part after '@' (e.g., 'example.com'). An IP address is also accepted for reverse/PTR-based checks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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 AnalysisARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| headers | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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.
http_securityHTTP Security Headers AuditARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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.
ip_infoMy IP InfoARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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 CheckARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to protect (e.g., 'example.com'), without scheme or path. Variants of its label and TLD are generated and checked. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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.
port_scanOpen Port ScanARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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) LookupARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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 ScanARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| areas | Yes | Per-area verdicts |
| grade | Yes | Letter grade A+ to F |
| score | Yes | Health Score 0-100 |
| actions | No | Top recommended actions |
| reportUrl | Yes | Human-facing interactive report on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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 CheckARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Hostname to inspect, without scheme (e.g., 'example.com'). The host portion of a pasted URL is also accepted. | |
| port | No | TCP port for the TLS handshake. Defaults to 443 (standard HTTPS); set this only for a non-standard HTTPS port such as 8443. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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 DiscoveryARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Registrable domain to enumerate (e.g., 'example.com'), without scheme or path. Subdomains found in CT logs for this domain are returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cidr | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| prefix | Yes | CIDR prefix length |
| network | Yes | Network address |
| lastHost | Yes | Last usable host |
| broadcast | Yes | Broadcast address |
| firstHost | Yes | First usable host |
| reportUrl | Yes | Human-facing interactive report on dechonet.com |
| subnetMask | Yes | Dotted-decimal subnet mask |
| totalHosts | Yes | Usable host count |
| wildcardMask | Yes | Wildcard (inverse) mask |
TDQS
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.
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.
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.
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.
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.
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.
whois_lookupWHOIS / RDAP Domain LookupARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Registered domain name to look up (e.g., 'example.com'). A subdomain is normalized to its registrable domain. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kpis | No | Key metrics as label/value pairs |
| grade | No | Letter grade (A+ to F) when the tool grades the target |
| score | No | 0-100 score when the tool scores the target |
| issues | No | Detected problems, severity-rated |
| status | Yes | Overall verdict, e.g. 'good' | 'warning' | 'bad' | 'info' | 'unknown' |
| actions | No | Recommended next actions, most important first |
| summary | No | One-paragraph interpretation of the result |
| reportUrl | Yes | Human-facing interactive report for this exact lookup on dechonet.com |
TDQS
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.
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.
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.
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.
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.
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.
15 tool updates
v1.1.0- Changed
asn_lookup1 field changed- changed
Output 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" +}
- Changed
dns_lookup1 field changed- changed
Output 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" +}
- Changed
dns_propagation1 field changed- changed
Output 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" +}
- Changed
email_auth1 field changed- changed
Output 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" +}
- Changed
email_header_analysis1 field changed- changed
Output 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" +}
- Changed
http_security1 field changed- changed
Output 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" +}
- Changed
ip_info1 field changed- changed
Output 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" +}
- Added
lookalike_domains - Changed
port_scan1 field changed- changed
Output 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" +}
- Changed
reverse_dns1 field changed- changed
Output 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" +}
- Changed
security_scan1 field changed- changed
Output 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" +}
- Changed
ssl_check1 field changed- changed
Output 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" +}
- Added
subdomain_discovery - Changed
subnet_calc1 field changed- changed
Output 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" +}
- Changed
whois_lookup1 field changed- changed
Output 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" +}
12 tool updates
v1.0.3- Changed
asn_lookup1 field changed- changed
Input schema / properties / query / descriptionPrevious 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')."
- Changed
dns_lookup1 field changed- changed
Input schema / properties / domain / descriptionPrevious 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."
- Changed
dns_propagation2 fields changed- changed
Input schema / properties / domain / descriptionPrevious value: -"Domain to check"New value: +"Domain whose record to compare across resolvers (e.g., 'example.com'), without scheme or path." - changed
Input schema / properties / type / descriptionPrevious value: -"Record type"New value: +"DNS record type to compare across resolvers. Defaults to A (IPv4 address), the most common propagation check."
- Changed
email_auth1 field changed- changed
Input schema / properties / domain / descriptionPrevious 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."
- Changed
email_header_analysis1 field changed- changed
Input schema / properties / headers / descriptionPrevious 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."
- Changed
http_security1 field changed- changed
Input schema / properties / url / descriptionPrevious 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."
- Changed
port_scan1 field changed- changed
Input schema / properties / host / descriptionPrevious 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."
- Changed
reverse_dns1 field changed- changed
Input schema / properties / ip / descriptionPrevious 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."
- Changed
security_scan1 field changed- changed
Input schema / properties / domain / descriptionPrevious 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."
- Changed
ssl_check2 fields changed- changed
Input schema / properties / host / descriptionPrevious 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." - changed
Input schema / properties / port / descriptionPrevious 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."
- Changed
subnet_calc1 field changed- changed
Input schema / properties / cidr / descriptionPrevious 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."
- Changed
whois_lookup1 field changed- changed
Input schema / properties / domain / descriptionPrevious 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."
13 tool updates
v0.1.0- First observed
asn_lookup - First observed
dns_lookup - First observed
dns_propagation - First observed
email_auth - First observed
email_header_analysis - First observed
http_security - First observed
ip_info - First observed
port_scan - First observed
reverse_dns - First observed
security_scan - First observed
ssl_check - First observed
subnet_calc - First observed
whois_lookup
TDQS
Scored across 15 tools
Each of the 15 tools has a distinct, clearly defined purpose with no functional overlap. DNS, SSL, HTTP, email, subdomain, and IP tools are all mutually exclusive and easy to differentiate.
All tool names follow a consistent snake_case verb_noun pattern (e.g., dns_lookup, ssl_check, subdomain_discovery). No mixed styles or ambiguous abbreviations.
15 tools is at the upper end of the typical range but appropriate for a comprehensive domain security analysis suite, covering multiple distinct aspects without feeling bloated or redundant.
The toolkit covers the full lifecycle of domain security assessment: DNS, SSL, HTTP, email, port scanning, subdomains, lookalikes, IP/ASN, and a one-shot comprehensive scan. No major gaps are apparent for the stated domain.
Maintenance
Related MCP Connectors
Domain intel for AI agents: RDAP registration, DNS, email deliverability, tech stack.
Domain intel for AI agents: RDAP registration, DNS, email deliverability, tech stack.
29 pay-per-call DNS, SEO, SSL, security, and dev tools for AI agents. x402, no API key.
URL intelligence for AI agents and developers. 16 tools, 25 signal weights, 20 free checks.
Related MCP Servers
- AlicenseAqualityAmaintenanceSecurity 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.5533MIT
- AlicenseAqualityDmaintenanceEnables AI agents to audit email and domain security (SPF, DKIM, DMARC, etc.) for any domain without requiring API keys.19MIT
- AlicenseAqualityBmaintenanceComprehensive 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.1001257MIT
- AlicenseNot gradedqualityBmaintenanceProvides 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