Server definition
- Hash
- sha256:a2c9443800726736405d59fd2de51e89bff058ff737461364325c2c6d5776e24
- What it is
- What a remote MCP server returned when asked what it offers: 21 tools
The blob, as servednamed by its sha256
{
"instructions": "DechoNet domain-reconnaissance tools (free, no API key). Recommended workflow: 1) security_scan for the overall verdict, then the specific tool for each flagged area (dns_lookup, ssl_check, http_security, email_auth, subdomain_discovery, lookalike_domains, owasp_check, impersonation_exposure). 2) When the user cares about this domain going forward, call watch_domain once — DechoNet then re-checks it daily and records every change. 3) On a later session about the same domain, start with domain_changes: it reports what changed since the last lookup or watch check (grade drops, new issues, cert renewals, DNS drift) — something a fresh one-off lookup cannot tell you. Every result is interpreted (status, key numbers, issues with severity and confidence, concrete actions) and ends with a link to the full interactive report you can hand to the user. All tools except watch_domain are read-only. Setup guide for humans: https://dechonet.com/mcp",
"tools": [
{
"description": "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.",
"inputSchema": {
"properties": {
"query": {
"description": "An IP address (e.g., '1.1.1.1') or an AS number in 'AS####' form (e.g., 'AS13335').",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "asn_lookup",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"domain": {
"description": "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.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dns_lookup",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"domain": {
"description": "Domain whose record to compare across resolvers (e.g., 'example.com'), without scheme or path.",
"type": "string"
},
"type": {
"default": "A",
"description": "DNS record type to compare across resolvers. Defaults to A (IPv4 address), the most common propagation check.",
"enum": [
"A",
"AAAA",
"MX",
"CNAME",
"TXT",
"NS"
],
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dns_propagation",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "Report what has changed for a domain over time — the security regressions and drift that DechoNet's daily monitoring has recorded across every watch on the domain (SSL grade, headers, DNS, OWASP posture, impersonation exposure, etc.). Use this to answer \"what changed on my domain since yesterday/last week?\" — a question that requires persistent snapshots and therefore cannot be reconstructed from a single live lookup. When a domain you have looked at before comes up again, start with this tool. Two sources: (a) the daily watch timeline if the domain is watched (start one with watch_domain), and (b) even without a watch, the difference between the last two stored lookups of each tool — so a second lookup already yields a comparison. The point-in-time tools (security_scan, owasp_check, ssl_check) give the current state instead. Read-only; requires no API key; rate-limited. Returns the monitored tools, a newest-first change timeline, lookup-to-lookup changes, and a link to manage monitoring.",
"inputSchema": {
"properties": {
"domain": {
"description": "Domain whose recorded change history to fetch (e.g., 'example.com'). Scheme and path are stripped.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "domain_changes",
"outputSchema": {
"properties": {
"changeCount": {
"description": "Number of changes recorded",
"type": "number"
},
"changes": {
"description": "Recorded changes, newest first",
"items": {
"properties": {
"changedAt": {
"type": "string"
},
"endpoint": {
"type": "string"
},
"kind": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"kind",
"summary"
],
"type": "object"
},
"type": "array"
},
"domain": {
"type": "string"
},
"historyChangeCount": {
"description": "Changes found between the last two stored lookups per tool (no watch needed)",
"type": "number"
},
"historyChanges": {
"description": "Lookup-to-lookup changes, newest first",
"items": {
"properties": {
"changedAt": {
"type": "string"
},
"endpoint": {
"type": "string"
},
"kind": {
"type": "string"
},
"since": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"kind",
"summary"
],
"type": "object"
},
"type": "array"
},
"reportUrl": {
"description": "Where a human can start or manage monitoring",
"type": "string"
},
"watched": {
"description": "Whether the domain is under an active daily watch",
"type": "boolean"
}
},
"required": [
"domain",
"watched",
"reportUrl"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"domain": {
"description": "Email domain to assess — the part after '@' (e.g., 'example.com'). An IP address is also accepted for reverse/PTR-based checks.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "email_auth",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"headers": {
"description": "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.",
"type": "string"
}
},
"required": [
"headers"
],
"type": "object"
},
"name": "email_header_analysis",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "Check whether a domain is ready to launch or migrate — a go/no-go verdict over five essentials: DNS resolves to an IP, has propagated consistently across global resolvers, SSL/TLS is ready, the site is reachable over HTTPS, and the domain registration is not about to expire. Use this right before flipping DNS to a new server, or to confirm a migration has landed. It answers \"can I switch over yet?\"; use security_scan for a security posture grade or the individual tools for depth. Any failing essential yields not_ready; only cautions yields caution; all clear yields ready. Read-only (a passive multi-probe, though it does resolve and fetch the domain); requires no API key; rate-limited. Returns the verdict, per-check statuses, and a shareable report link.",
"inputSchema": {
"properties": {
"domain": {
"description": "Domain to check for launch/migration readiness (e.g., 'example.com'). Scheme and path are stripped.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "golive_check",
"outputSchema": {
"properties": {
"checks": {
"items": {
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"id",
"status"
],
"type": "object"
},
"type": "array"
},
"failCount": {
"type": "number"
},
"passCount": {
"type": "number"
},
"reportUrl": {
"description": "Human-facing interactive report on dechonet.com",
"type": "string"
},
"verdict": {
"description": "'ready' | 'caution' | 'not_ready'",
"type": "string"
},
"warnCount": {
"type": "number"
}
},
"required": [
"verdict",
"reportUrl"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"url": {
"description": "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.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "http_security",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "Assess how exposed a domain is to brand impersonation and phishing, PASSIVELY: live typosquat/lookalike domains (homoglyph, omission, transposition, TLD swap) that actually resolve, operational subdomains (dev/staging/admin) exposed in CT logs, and whether a wildcard certificate exists — returning an A+ (low exposure) to F (high exposure) grade. Framing: a registered lookalike domain is not proof of impersonation — it may be a legitimate third party or the owner's own — so report it as exposure to verify, not as an accusation against that domain. Fully passive: public DNS delegation checks plus public CT-log queries, sending nothing to the target or the lookalike domains, so it is safe and lawful to run. Use lookalike_domains or subdomain_discovery for the raw per-tool detail. Read-only; requires no API key; rate-limited. Returns a text report: grade, counts, per-category findings, and a shareable report link.",
"inputSchema": {
"properties": {
"domain": {
"description": "Registrable domain to assess for impersonation exposure (e.g., 'example.com'). Scheme and path are stripped.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "impersonation_exposure",
"outputSchema": {
"properties": {
"grade": {
"description": "Exposure grade A+ (low exposure) to F (high exposure)",
"type": "string"
},
"reportUrl": {
"description": "Human-facing interactive report on dechonet.com",
"type": "string"
},
"riskySubdomainCount": {
"description": "Exposed operational subdomains found",
"type": "number"
},
"score": {
"description": "0-100, higher = less exposed",
"type": "number"
},
"typosquatCount": {
"description": "Live third-party lookalike/typosquat domains (variants on the domain's own nameservers/IP are excluded)",
"type": "number"
},
"wildcard": {
"description": "Whether a wildcard certificate exists",
"type": "boolean"
}
},
"required": [
"grade",
"score",
"typosquatCount",
"riskySubdomainCount",
"reportUrl"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "ip_info",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"domain": {
"description": "Domain to protect (e.g., 'example.com'), without scheme or path. Variants of its label and TLD are generated and checked.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "lookalike_domains",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "Assess a domain's OWASP posture from EXTERNAL OBSERVATION only: the OWASP Secure Headers Project plus the externally observable Top 10 subset — A02 Cryptographic Failures (TLS/cert), A05 Security Misconfiguration (header/info leaks), and A06 Vulnerable & Outdated Components (version disclosure) — returning an A+ to F grade. Scope: A01 (Access Control), A03 (Injection), A04, A07 (Authentication), A08, A09 and A10 (SSRF) are not checked — they need authenticated access or active/injection testing, so the result lists them as out-of-scope rather than \"pass\". Present the result as an external-posture check, not a full OWASP Top 10 assessment. Unlike security_scan this is fully PASSIVE (a normal HTTP GET plus a public CT-log lookup, no port scan), so it is safe and lawful to run on domains you do not own. Use http_security or ssl_check for depth on one layer. Read-only; requires no API key; rate-limited. Returns a text report: grade, per-category findings, the out-of-scope list, and a shareable report link.",
"inputSchema": {
"properties": {
"host": {
"description": "Hostname to assess, without scheme (e.g., 'example.com'). The host portion of a pasted URL is also accepted.",
"type": "string"
}
},
"required": [
"host"
],
"type": "object"
},
"name": "owasp_check",
"outputSchema": {
"properties": {
"checks": {
"description": "Per observable category: Secure Headers, A02, A05, A06",
"items": {
"properties": {
"code": {
"type": "string"
},
"findingCount": {
"type": "number"
},
"status": {
"description": "'pass' | 'warn' | 'fail'",
"type": "string"
}
},
"required": [
"code",
"status"
],
"type": "object"
},
"type": "array"
},
"grade": {
"description": "OWASP posture grade A+ to F, over the observable categories only",
"type": "string"
},
"notObservable": {
"description": "Top 10 categories NOT checked (need authenticated/active testing)",
"items": {
"type": "string"
},
"type": "array"
},
"reportUrl": {
"description": "Human-facing interactive report on dechonet.com",
"type": "string"
},
"score": {
"description": "0-100 across the categories that could be evaluated",
"type": "number"
}
},
"required": [
"grade",
"score",
"checks",
"reportUrl"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"host": {
"description": "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.",
"type": "string"
}
},
"required": [
"host"
],
"type": "object"
},
"name": "port_scan",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "Check whether a website's public TLS endpoint is ready for post-quantum cryptography: does it complete a TLS 1.3 handshake that offers only the hybrid X25519MLKEM768 key exchange (ML-KEM), and does the organisation's own server provide it or a CDN edge in front of it. Also reports what the certificate chain is signed with (tracked, not scored: public CAs do not issue post-quantum certificates yet). Verdicts: ready (the origin server supports it), partial (a CDN edge provides it; the CDN-to-origin leg is invisible), not_ready (the hybrid-only handshake was refused), unknown (inconclusive; do not report it as \"no\"). Scope: only the public endpoint on port 443. Internal systems, VPNs, code, and Korean PQC algorithms (no standard TLS codepoints yet) are not observable, so present the result as an external indicator of migration progress, not a full PQC audit. Read-only; requires no API key; rate-limited. Returns the verdict, a 0-100 readiness score and grade, per-check statuses, and a shareable report link.",
"inputSchema": {
"properties": {
"domain": {
"description": "Domain whose HTTPS endpoint to check (e.g., 'example.com'). Scheme and path are stripped.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "pqc_readiness",
"outputSchema": {
"properties": {
"checks": {
"items": {
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"id",
"status"
],
"type": "object"
},
"type": "array"
},
"grade": {
"type": [
"string",
"null"
]
},
"keyExchange": {
"description": "Hybrid group accepted (e.g. X25519MLKEM768), null if none",
"type": [
"string",
"null"
]
},
"reportUrl": {
"description": "Human-facing interactive report on dechonet.com",
"type": "string"
},
"score": {
"description": "0-100 post-quantum readiness; null when inconclusive",
"type": [
"number",
"null"
]
},
"terminatedBy": {
"description": "'origin' or the CDN name whose edge answered",
"type": [
"string",
"null"
]
},
"tlsVersion": {
"type": [
"string",
"null"
]
},
"verdict": {
"description": "'ready' | 'partial' | 'not_ready' | 'unknown'",
"type": "string"
}
},
"required": [
"verdict",
"reportUrl"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"ip": {
"description": "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.",
"type": "string"
}
},
"required": [
"ip"
],
"type": "object"
},
"name": "reverse_dns",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"domain": {
"description": "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.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "security_scan",
"outputSchema": {
"properties": {
"actions": {
"description": "Top recommended actions",
"items": {
"type": "string"
},
"type": "array"
},
"areas": {
"description": "Per-area verdicts (dns, ssl, http, email, port, propagation, rdap, reverseDns, asn)",
"items": {
"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"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"host": {
"description": "Hostname to inspect, without scheme (e.g., 'example.com'). The host portion of a pasted URL is also accepted.",
"type": "string"
},
"port": {
"default": 443,
"description": "TCP port for the TLS handshake. Defaults to 443 (standard HTTPS); set this only for a non-standard HTTPS port such as 8443.",
"type": "number"
}
},
"required": [
"host"
],
"type": "object"
},
"name": "ssl_check",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"domain": {
"description": "Registrable domain to enumerate (e.g., 'example.com'), without scheme or path. Subdomains found in CT logs for this domain are returned.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "subdomain_discovery",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"cidr": {
"description": "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.",
"type": "string"
}
},
"required": [
"cidr"
],
"type": "object"
},
"name": "subnet_calc",
"outputSchema": {
"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",
"subnetMask",
"totalHosts",
"prefix",
"reportUrl"
],
"type": "object"
}
},
{
"description": "Start (or reuse) a daily DechoNet watch on a domain so that changes are recorded over time — SSL grade/issuer/expiry, DNS records, HTTP security headers, domain registration, and optionally OWASP posture and impersonation exposure. Use this once when the user cares about a domain beyond a one-off check (their own domain, a client, a vendor, a target under investigation). After this, domain_changes answers \"what changed since last time?\" from real daily snapshots. Not read-only (it creates a watch record) but idempotent: watching an already-watched domain returns the existing watch. No account, no email, no PII — a watch is keyed by domain+tool and its history page is a public unguessable URL you can share with the user. Rate-limited (a few watches per minute).",
"inputSchema": {
"properties": {
"domain": {
"description": "Registered domain to watch (e.g., 'example.com'). Scheme and path are stripped.",
"type": "string"
},
"tools": {
"description": "Which checks to re-run daily. Default ['ssl','dns','http','rdap'] (certificate, DNS, security headers, registration). Add 'owasp' and/or 'impersonation' for posture and brand-exposure tracking, 'pqc' to record the day post-quantum key exchange is turned on.",
"items": {
"enum": [
"ssl",
"dns",
"http",
"rdap",
"owasp",
"impersonation",
"pqc"
],
"type": "string"
},
"type": "array"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "watch_domain",
"outputSchema": {
"properties": {
"domain": {
"type": "string"
},
"failed": {
"description": "Tools that could not be watched (rate limit or error)",
"items": {
"type": "string"
},
"type": "array"
},
"reportUrl": {
"type": "string"
},
"watches": {
"description": "One entry per tool now under a daily watch",
"items": {
"properties": {
"endpoint": {
"type": "string"
},
"tool": {
"type": "string"
},
"url": {
"description": "Public change-history page for this watch",
"type": "string"
}
},
"required": [
"tool",
"url"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"domain",
"watches",
"reportUrl"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"domain": {
"description": "Registered domain name to look up (e.g., 'example.com'). A subdomain is normalized to its registrable domain.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "whois_lookup",
"outputSchema": {
"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": {
"properties": {
"key": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"severity",
"key"
],
"type": "object"
},
"type": "array"
},
"kpis": {
"description": "Key metrics as label/value pairs",
"items": {
"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"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:a2c9443800726736405d59fd2de51e89bff058ff737461364325c2c6d5776e24 | sha256sum