Agentic-first DNS lookup and resolution service. The agent IS the interface.
Query DNS records (A, AAAA, MX, NS, TXT, CNAME, SOA, PTR, SRV, CAA, DNSKEY) over plain HTTP. Reverse DNS lookups. Resolve domains to IP addresses. Plain text by default, JSON on demand. MCP endpoint for chat client integrations.
# Build and run
make build
./dnskit -no-auth
# Or with Go directly
go run ./cmd/dnskit -no-authcurl http://localhost:8080/lookup/A/example.com
# type=A name=example.com value=93.184.216.34 ttl=300curl http://localhost:8080/mx/example.com
# type=MX name=example.com value=mail.example.com pref=10 ttl=300curl http://localhost:8080/reverse/8.8.8.8
# type=PTR name=8.8.8.8 value=dns.google ttl=300curl http://localhost:8080/all/example.comcurl -H "Accept: application/json" http://localhost:8080/lookup/A/example.com
# {"domain":"example.com","type":"A","records":[{"type":"A","name":"example.com","value":"93.184.216.34","ttl":300}]}curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"lookup","arguments":{"domain":"example.com","type":"A"}},"id":2}'| Method | Path | Description |
|---|---|---|
| GET | /help |
Self-documenting help (also /.well-known/agent.md) |
| GET | /types |
List supported DNS record types |
| GET | /lookup/{type}/{domain} |
Look up DNS records by type |
| GET | /resolve/{domain} |
Resolve domain to A + AAAA records |
| GET | /reverse/{ip} |
Reverse DNS lookup (PTR) |
| GET | /all/{domain} |
Look up all record types |
| GET | /mx/{domain} |
Shortcut: MX records |
| GET | /ns/{domain} |
Shortcut: NS records |
| GET | /txt/{domain} |
Shortcut: TXT records |
| GET | /cname/{domain} |
Shortcut: CNAME record |
| GET | /soa/{domain} |
Shortcut: SOA record |
| GET | /srv/{domain} |
Shortcut: SRV records |
| GET | /caa/{domain} |
Shortcut: CAA records |
| GET | /dnskey/{domain} |
Shortcut: DNSKEY records |
| POST | /mcp |
MCP JSON-RPC 2.0 endpoint |
A, AAAA, MX, NS, TXT, CNAME, SOA, PTR, SRV, CAA, DNSKEY
| Flag | Env | Default | Description |
|---|---|---|---|
-addr |
DNSKIT_ADDR |
:8080 |
Listen address |
-no-auth |
DNSKIT_NO_AUTH |
false |
Disable auth (dev mode) |
-resolver |
DNSKIT_RESOLVER |
8.8.8.8:53 |
Custom DNS resolver |
-timeout |
DNSKIT_TIMEOUT |
10 |
DNS query timeout (seconds) |
- The agent IS the interface — No UI, no SDK. The API is the product.
- Plain text by default — One labeled, grepable line per record. Token-cheap.
- JSON on demand —
Accept: application/jsonor?format=json. - Instructive errors — Every 4xx includes a hint for agent self-correction.
- Self-documenting —
GET /helpreturns a one-page operating manual. - Single static binary — Go + CGO_ENABLED=0, zero external runtime dependencies.
- No database needed — Pure stateless DNS resolution.
MIT