MCP server exposing read-only DNS, TLS, HTTP and RDAP diagnostics for a target host
Four well-named, read-only diagnostic tools with clear descriptions (avg 156 chars) and complete input schemas. All parameters are typed and described. Tool annotations correctly declare readOnlyHint=true. Output schemas are not explicitly documented in the source, which is the primary gap. Error handling returns structured dicts with 'error' fields but lacks recovery guidance. No security issues detected (no credentials exposed, SSRF guards present). Naming follows verb_noun pattern (dns_lookup, tls_certificate, http_probe, ip_rdap). Parameter constraints are well-specified (enums for record_type, port range 1-65535, domain/IP validation). Composition is sound, each tool does one thing and returns relevant data for chaining.
Resolve a DNS record for a domain over DNS-over-HTTPS. Returns the records with TTLs; NXDOMAIN is reported as an empty result, not an error.
Follow a URL's redirect chain and report each hop, the final status, response timing, and which common security headers are present or missing.
Look up an IP address in the regional registry via RDAP: allocation handle, network range, country, and responsible organisations.
Inspect the TLS certificate a host serves: issuer, subject, SANs, validity window, days until expiry, and negotiated protocol. A failed chain verification is returned as valid=false with the reason.
Output schemas not documented. LLMs cannot predict response structure or plan downstream tool calls. Each tool returns dict[str, Any] with no schema specification.
Error responses lack recovery guidance. Errors return {'error': ...} but do not suggest next steps (e.g., 'Try validate_domain() first' or 'Check if the IP is public').
http_probe parameter 'url' lacks format constraints. Description says 'URL or bare hostname; https:// is assumed if omitted' but no regex pattern or format field in schema to enforce valid URLs.
No pagination support. If dns_lookup returns many records or ip_rdap returns large result sets, no limit or offset parameters exist to cap response size.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
tls_certificate and http_probe do not document timeout behavior. TIMEOUT=8.0 is hardcoded but not mentioned in descriptions, so LLMs cannot reason about retry timing.