Bounded, read-only Technitium DNS MCP server
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and error guidance. server_health has no input parameters (empty schema), dns_lookup has a well-structured schema with type and description for all three parameters. Both descriptions are present but brief (under 100 chars). No error handling guidance, no output schema documentation, no tool annotations. Naming follows verb_noun convention (good), but descriptions lack context on when to use each tool or what to expect in responses.
Perform a DNS lookup query against a configured Technitium DNS server
Check health/reachability of configured Technitium DNS servers on specified ports
No output schema documentation. LLMs cannot predict response structure (e.g., server_health returns dict with 'host' and 'checks' fields, dns_lookup returns 'exit_code', 'stdout', 'stderr'). Without documented output, agents cannot chain tools or extract required fields reliably.
server_health has empty input schema ({}). While technically valid for a no-argument tool, the description does not explain what it checks, which servers it targets, or what 'reachable' means. Agents cannot determine when to call this vs dns_lookup.
dns_lookup description lacks context on error cases. What happens if the DNS query times out? If the server is unreachable? If the name is invalid? Agents need recovery guidance (e.g., 'If lookup fails, try server_health first').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
record_type parameter description lists allowed values as prose ('A, AAAA, CNAME, ...') instead of an enum constraint. LLMs may hallucinate invalid types like 'AXFR' or 'TLSA'. Should use JSON Schema enum: ['A', 'AAAA', 'CNAME', 'MX', 'NS', 'SOA', 'TXT', 'SRV', 'PTR', 'CAA'].
No error classification or actionable error messages. If dns_lookup returns exit_code != 0, the agent sees raw dig output (stdout/stderr) with no guidance on whether to retry, ask the user, or try a different server.