--- name: dnsrobot description: "Run DNS, email security, SSL, WHOIS, and network tools via dnsrobot.net API — no API key required" version: 1.0.0 metadata.openclaw.requires.bins: [curl] emoji: 🌐 homepage: https://dnsrobot.net --- # DNS Robot — DNS & Network Tools [DNS Robot](https://dnsrobot.net) provides 53 free online DNS, domain, email security, and network tools. This skill gives you access to 19 API endpoints — no API key, no rate limits, no signup. **Base URL**: `https://dnsrobot.net` All endpoints accept and return JSON. Domains are auto-cleaned (strips `http://`, `https://`, `www.`, trailing paths). --- ## DNS Tools ### dns_lookup Look up DNS records for any domain using a specific DNS server. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name (e.g. `example.com`) | | `recordType` | string | yes | `A`, `AAAA`, `CNAME`, `MX`, `NS`, `TXT`, `SOA`, `PTR`, `SRV`, `CAA`, `DNSKEY`, or `DS` | | `dnsServer` | string | yes | DNS server IPv4 (e.g. `8.8.8.8`) | | `timeout` | number | no | Timeout in ms (1000–10000, default 5000) | ```bash curl -s -X POST https://dnsrobot.net/api/dns-query \ -H "Content-Type: application/json" \ -d '{"domain":"example.com","recordType":"A","dnsServer":"8.8.8.8"}' ``` Response: ```json { "status": "success", "domain": "example.com", "recordType": "A", "dnsServer": "8.8.8.8", "responseTime": 42, "resolvedIPs": ["93.184.216.34"] } ``` **When to use**: Check how a domain resolves from a specific DNS server. Useful for DNS propagation debugging, verifying records, or comparing responses across providers. --- ### ns_lookup Find all authoritative nameservers for a domain, including their IPs and providers. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | | `dnsServer` | string | no | DNS server ID | ```bash curl -s -X POST https://dnsrobot.net/api/ns-lookup \ -H "Content-Type: application/json" \ -d '{"domain":"github.com"}' ``` Response: ```json { "success": true, "domain": "github.com", "summary": { "totalNameservers": 8, "primaryProvider": "DNS Made Easy", "allProviders": ["DNS Made Easy"], "averageResponseTime": 15 }, "nameservers": [ { "nameserver": "dns1.p08.nsone.net", "ipAddresses": ["198.51.44.8"], "responseTime": 12, "provider": "DNS Made Easy" } ] } ``` **When to use**: Identify who hosts a domain's DNS, check nameserver redundancy, or debug delegation issues. --- ### mx_lookup Find mail exchange (MX) records and identify the email provider. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | | `dnsServer` | string | no | DNS server ID | ```bash curl -s -X POST https://dnsrobot.net/api/mx-lookup \ -H "Content-Type: application/json" \ -d '{"domain":"google.com"}' ``` Response: ```json { "success": true, "domain": "google.com", "summary": { "totalRecords": 5, "primaryProvider": "Gmail", "allProviders": ["Gmail"], "lowestPriority": 10 }, "mxRecords": [ { "exchange": "smtp.google.com", "priority": 10, "ipAddresses": ["142.250.152.26"], "provider": "Gmail" } ] } ``` **When to use**: Find which email provider a domain uses, verify MX record configuration, or troubleshoot email delivery. --- ### cname_lookup Trace the full CNAME chain for a domain, detecting circular references. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | | `dnsServer` | string | no | DNS server ID | ```bash curl -s -X POST https://dnsrobot.net/api/cname-lookup \ -H "Content-Type: application/json" \ -d '{"domain":"www.github.com"}' ``` Response: ```json { "success": true, "domain": "www.github.com", "hasCNAME": true, "summary": { "chainLength": 1, "hasCircularReference": false, "finalHostname": "github.github.io", "message": "CNAME chain resolved successfully" }, "chain": [ { "hostname": "www.github.com", "target": "github.github.io", "isCircular": false, "depth": 1 } ], "finalDestination": { "hostname": "github.github.io", "ipv4": ["185.199.108.153"], "ipv6": [] } } ``` **When to use**: Debug CDN or load balancer configurations, find the actual server behind a CNAME, or detect circular references. --- ### reverse_dns Perform a reverse DNS (PTR) lookup on an IP address. | Param | Type | Required | Description | |-------|------|----------|-------------| | `ip` | string | yes | IPv4 or IPv6 address | | `dnsServer` | string | no | DNS server ID | ```bash curl -s -X POST https://dnsrobot.net/api/reverse-dns \ -H "Content-Type: application/json" \ -d '{"ip":"8.8.8.8"}' ``` Response: ```json { "success": true, "ip": "8.8.8.8", "ipVersion": "IPv4", "hostnames": ["dns.google"], "ptrRecord": "dns.google", "responseTime": 28, "hostnameCount": 1 } ``` **When to use**: Identify the hostname associated with an IP, verify PTR records for email deliverability, or investigate unknown IPs. --- ### domain_to_ip Resolve a domain to all its IP addresses with CDN detection and geolocation. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | | `dnsServer` | string | no | DNS server ID | ```bash curl -s -X POST https://dnsrobot.net/api/domain-ip \ -H "Content-Type: application/json" \ -d '{"domain":"cloudflare.com"}' ``` Response: ```json { "success": true, "domain": "cloudflare.com", "summary": { "totalIPs": 4, "ipv4Count": 2, "ipv6Count": 2, "hasCDN": true, "cdnProviders": ["Cloudflare"], "hasIPv6": true }, "ipAddresses": [ { "ip": "104.16.132.229", "cdnProvider": "Cloudflare", "country": "US", "asn": "AS13335" } ] } ``` **When to use**: Find all IPs behind a domain, check CDN usage, verify IPv6 support, or identify hosting provider. --- ## Domain Tools ### whois_lookup Get WHOIS/RDAP registration data for a domain — registrar, dates, contacts, nameservers. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | ```bash curl -s -X POST https://dnsrobot.net/api/whois \ -H "Content-Type: application/json" \ -d '{"domain":"github.com"}' ``` Response: ```json { "success": true, "domain": "github.com", "registeredOn": "2007-10-09T18:20:50Z", "expiresOn": "2026-10-09T18:20:50Z", "registrar": { "name": "MarkMonitor Inc.", "url": "http://www.markmonitor.com" }, "nameServers": ["dns1.p08.nsone.net", "dns2.p08.nsone.net"], "status": ["clientDeleteProhibited", "clientTransferProhibited"], "age": "18 years", "source": "RDAP" } ``` **When to use**: Check domain ownership, expiration dates, registrar info, or investigate a domain's history. --- ### domain_health Run a comprehensive health check on a domain — DNS, SSL, email security, HTTP, and performance. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | ```bash curl -s -X POST https://dnsrobot.net/api/domain-health \ -H "Content-Type: application/json" \ -d '{"domain":"example.com"}' ``` Response: ```json { "success": true, "domain": "example.com", "overallScore": 78, "checks": [ { "name": "SSL Certificate", "category": "Security", "status": "pass", "score": 15, "maxScore": 15, "details": "Valid SSL certificate, expires in 245 days" } ], "categoryScores": [ { "category": "DNS", "score": 20, "maxScore": 20, "percentage": 100, "grade": "A" }, { "category": "Security", "score": 25, "maxScore": 30, "percentage": 83, "grade": "B" } ] } ``` **When to use**: Get a quick overall assessment of a domain's configuration, security posture, and email authentication setup. This is the best starting point for a full domain audit. --- ### subdomain_finder Discover subdomains using Certificate Transparency logs. Returns results as an NDJSON stream. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | ```bash curl -s -X POST https://dnsrobot.net/api/subdomain-finder \ -H "Content-Type: application/json" \ -d '{"domain":"example.com"}' ``` Response (NDJSON — one JSON object per line): ``` {"type":"subdomains","names":["www.example.com","mail.example.com"]} {"type":"dns","results":[{"subdomain":"www.example.com","ip":"93.184.216.34","isActive":true}]} {"type":"enrichment","data":{"93.184.216.34":{"provider":"Edgecast","country":"US"}}} {"type":"complete","domain":"example.com","total":15,"activeCount":12,"inactiveCount":3} ``` **When to use**: Discover all known subdomains for security audits, attack surface mapping, or infrastructure analysis. > **Note**: This is a streaming endpoint. Each line is a separate JSON object. Parse line by line. --- ## Email Security Tools ### spf_check Validate SPF (Sender Policy Framework) records with full include tree resolution. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | ```bash curl -s -X POST https://dnsrobot.net/api/spf-checker \ -H "Content-Type: application/json" \ -d '{"domain":"google.com"}' ``` Response: ```json { "success": true, "domain": "google.com", "found": true, "rawRecord": "v=spf1 include:_spf.google.com ~all", "mechanisms": [ { "type": "include", "qualifier": "pass", "value": "_spf.google.com", "description": "Include SPF record from _spf.google.com" } ], "lookupCount": 4, "score": 85, "grade": "B+", "isValid": true, "warnings": ["Using ~all (softfail) instead of -all (hardfail)"] } ``` **When to use**: Validate SPF configuration, check DNS lookup count (max 10 per RFC 7208), or debug email authentication failures. --- ### dkim_check Validate DKIM (DomainKeys Identified Mail) records. Auto-detects the selector if not provided. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | | `selector` | string | no | DKIM selector (auto-tries 65+ common selectors if omitted) | ```bash curl -s -X POST https://dnsrobot.net/api/dkim-checker \ -H "Content-Type: application/json" \ -d '{"domain":"google.com"}' ``` Response: ```json { "success": true, "domain": "google.com", "selector": "20230601", "found": true, "rawRecord": "v=DKIM1; k=rsa; p=MIIBIjAN...", "tags": [ { "tag": "v", "value": "DKIM1", "description": "DKIM version" }, { "tag": "k", "value": "rsa", "description": "Key type" } ], "score": 90, "grade": "A", "keyType": "rsa", "keySize": 2048, "isValid": true } ``` **When to use**: Verify DKIM is configured, check key size and type, or find the active DKIM selector for a domain. --- ### dmarc_check Validate DMARC (Domain-based Message Authentication) records and policy strength. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | ```bash curl -s -X POST https://dnsrobot.net/api/dmarc-checker \ -H "Content-Type: application/json" \ -d '{"domain":"google.com"}' ``` Response: ```json { "success": true, "domain": "google.com", "found": true, "rawRecord": "v=DMARC1; p=reject; rua=mailto:mailauth-reports@google.com", "policy": "reject", "subdomainPolicy": "reject", "tags": [ { "tag": "p", "value": "reject", "description": "Policy for domain" } ], "score": 95, "grade": "A", "isValid": true } ``` **When to use**: Check if a domain has DMARC protection, verify policy strength (none/quarantine/reject), or find reporting addresses. --- ### bimi_check Check BIMI (Brand Indicators for Message Identification) records for logo display in email. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | ```bash curl -s -X POST https://dnsrobot.net/api/bimi-checker \ -H "Content-Type: application/json" \ -d '{"domain":"cnn.com"}' ``` Response: ```json { "success": true, "domain": "cnn.com", "found": true, "rawRecord": "v=BIMI1; l=https://amplify.valimail.com/bimi/...; a=https://amplify.valimail.com/bimi/.../a.pem", "logoUrl": "https://amplify.valimail.com/bimi/.../logo.svg", "authorityUrl": "https://amplify.valimail.com/bimi/.../a.pem", "isValid": true } ``` **When to use**: Check if a domain has BIMI configured for brand logo display in email clients like Gmail. --- ### smtp_test Test SMTP connectivity, STARTTLS support, and server capabilities. | Param | Type | Required | Description | |-------|------|----------|-------------| | `hostname` | string | yes | Mail server hostname or IP | | `port` | number | no | SMTP port (default 25; use 465 for implicit TLS, 587 for submission) | ```bash curl -s -X POST https://dnsrobot.net/api/smtp-test \ -H "Content-Type: application/json" \ -d '{"hostname":"smtp.google.com","port":587}' ``` Response: ```json { "hostname": "smtp.google.com", "port": 587, "connected": true, "banner": "220 smtp.google.com ESMTP", "bannerCode": 220, "ehloCapabilities": { "starttls": true, "authMechanisms": ["LOGIN", "PLAIN", "XOAUTH2"], "sizeLimit": 35882577, "pipelining": true, "eightBitMime": true }, "starttlsSupported": true, "tlsConnected": true, "tlsProtocol": "TLSv1.3", "responseTime": 234 } ``` **When to use**: Test if a mail server is reachable, check TLS support, or verify SMTP capabilities before configuring email sending. --- ## Network & Security Tools ### ssl_check Inspect SSL/TLS certificates, cipher suites, and trust chain for any domain. | Param | Type | Required | Description | |-------|------|----------|-------------| | `domain` | string | yes | Domain name | ```bash curl -s -X POST https://dnsrobot.net/api/ssl-certificate \ -H "Content-Type: application/json" \ -d '{"domain":"github.com"}' ``` Response: ```json { "success": true, "domain": "github.com", "resolvedIP": "140.82.121.3", "serverType": "GitHub.com", "tlsInfo": { "protocol": "TLSv1.3", "cipherName": "TLS_AES_128_GCM_SHA256" }, "leafCertificate": { "issuer": "Sectigo ECC Domain Validation Secure Server CA", "notBefore": "2024-03-07", "notAfter": "2025-03-07", "daysToExpire": 120, "isValid": true, "keySize": 256, "alternativeNames": ["github.com", "www.github.com"] }, "certificateChain": [ { "commonName": "github.com", "daysToExpire": 120 }, { "commonName": "Sectigo ECC Domain Validation Secure Server CA" } ], "trustStatus": { "isTrusted": true, "hasValidChain": true, "browserCompatible": true } } ``` **When to use**: Check certificate expiration, verify TLS version and cipher strength, inspect the certificate chain, or debug SSL errors. --- ### ip_lookup Get geolocation, ISP, and ASN information for an IP address. | Param | Type | Required | Description | |-------|------|----------|-------------| | `ip` | string | yes | IPv4 or IPv6 address | ```bash curl -s -X POST https://dnsrobot.net/api/ip-info \ -H "Content-Type: application/json" \ -d '{"ip":"1.1.1.1"}' ``` Response: ```json { "query": "1.1.1.1", "hostname": "one.one.one.one", "city": "Los Angeles", "region": "California", "country": "US", "timezone": "America/Los_Angeles", "isp": "Cloudflare, Inc.", "org": "APNIC and Cloudflare DNS Resolver project", "as": "AS13335 Cloudflare, Inc.", "lat": 34.0522, "lon": -118.2437, "anycast": true } ``` **When to use**: Geolocate an IP address, identify the hosting provider or ISP, or look up ASN information. --- ### http_headers Fetch HTTP response headers and analyze security header configuration. | Param | Type | Required | Description | |-------|------|----------|-------------| | `url` | string | yes | Full URL including protocol (e.g. `https://example.com`) | ```bash curl -s -X POST https://dnsrobot.net/api/http-headers \ -H "Content-Type: application/json" \ -d '{"url":"https://github.com"}' ``` Response: ```json { "success": true, "url": "https://github.com", "statusCode": 200, "statusText": "OK", "responseTime": 185, "headers": { "content-type": "text/html; charset=utf-8", "strict-transport-security": "max-age=31536000", "x-frame-options": "deny", "content-security-policy": "default-src 'none'; ..." }, "headerCount": 24, "security": { "grade": "A", "score": 90, "checks": [ { "name": "HSTS", "present": true, "value": "max-age=31536000", "severity": "high" } ] } } ``` **When to use**: Audit security headers, check HSTS/CSP/X-Frame-Options configuration, or debug HTTP response issues. > **Important**: The `url` parameter must include the protocol (`https://` or `http://`). --- ### port_check Check if a TCP port is open on a host. Single port uses GET, multiple ports use POST (NDJSON stream). **Single port (GET):** | Param | Type | Required | Description | |-------|------|----------|-------------| | `host` | query string | yes | Hostname or IP | | `port` | query string | yes | Port number (1–65535) | ```bash curl -s "https://dnsrobot.net/api/port-check?host=github.com&port=443" ``` Response: ```json { "host": "github.com", "port": 443, "status": "open", "service": "HTTPS", "ms": 42 } ``` **Multiple ports (POST) — NDJSON stream:** | Param | Type | Required | Description | |-------|------|----------|-------------| | `host` | string | yes | Hostname or IP | | `ports` | number[] | yes | Array of ports (max 30) | ```bash curl -s -X POST https://dnsrobot.net/api/port-check \ -H "Content-Type: application/json" \ -d '{"host":"github.com","ports":[22,80,443]}' ``` Response (NDJSON): ``` {"type":"start","host":"github.com","total":3} {"type":"port","port":22,"service":"SSH","status":"open","ms":45} {"type":"port","port":80,"service":"HTTP","status":"open","ms":42} {"type":"port","port":443,"service":"HTTPS","status":"open","ms":41} {"type":"done","host":"github.com","total":3,"open":3,"closed":0} ``` **When to use**: Check if specific services are reachable, verify firewall rules, or scan common ports on a server. --- ### ip_blacklist Check if an IP is listed on any DNS blacklists (DNSBL). Returns results as an NDJSON stream. | Param | Type | Required | Description | |-------|------|----------|-------------| | `ip` | query string | yes | IPv4 address | ```bash curl -s "https://dnsrobot.net/api/ip-blacklist?ip=1.2.3.4" ``` Response (NDJSON — one JSON object per line): ``` {"type":"init","ip":"1.2.3.4","engines":[{"name":"Spamhaus ZEN","category":"spam"},{"name":"Barracuda","category":"spam"}]} {"type":"engine","result":{"engine":"Spamhaus ZEN","detected":false,"category":"spam","responseTimeMs":45}} {"type":"engine","result":{"engine":"Barracuda","detected":false,"category":"spam","responseTimeMs":52}} {"type":"abuseipdb","data":{"abuse_confidence":0,"total_reports":0,"country":"US","isp":"Example ISP"}} {"type":"complete","summary":{"detections":0,"engines_count":47,"detection_rate":"0%","reputation_score":100,"risk_level":"low"}} ``` **When to use**: Check if an IP is blacklisted for spam or abuse, assess IP reputation before sending email, or investigate suspicious IPs. > **Note**: This is a streaming endpoint (NDJSON). Parse line by line. Checks ~47 DNSBL engines in parallel. --- ## Decision Tree: Which Tool Should I Use? Use this to pick the right endpoint: - **"Look up DNS records"** → `dns_lookup` (specify record type + DNS server) - **"What are the nameservers?"** → `ns_lookup` - **"What email provider does this domain use?"** → `mx_lookup` - **"Where does this CNAME point?"** → `cname_lookup` - **"What hostname is this IP?"** → `reverse_dns` - **"What IPs does this domain resolve to?"** → `domain_to_ip` - **"Who owns this domain?"** → `whois_lookup` - **"Is this domain configured correctly?"** → `domain_health` (runs 11 checks in one call) - **"Find subdomains"** → `subdomain_finder` (streaming) - **"Check SPF/DKIM/DMARC/BIMI"** → use the specific checker - **"Is the mail server working?"** → `smtp_test` - **"Check SSL certificate"** → `ssl_check` - **"Where is this IP located?"** → `ip_lookup` - **"Check security headers"** → `http_headers` (URL must include `https://`) - **"Is this port open?"** → `port_check` - **"Is this IP blacklisted?"** → `ip_blacklist` (streaming, IPv4 only) - **"Full domain audit"** → start with `domain_health`, then drill into specific tools ## Important Notes 1. **No API key required.** All endpoints are free and public. 2. **Streaming endpoints** (`subdomain_finder`, `ip_blacklist`, `port_check` POST) return NDJSON — one JSON object per line. Parse line by line, not as a single JSON document. 3. **Error format**: All endpoints return `{"error": "message"}` with appropriate HTTP status codes (400 for validation errors, 500 for server errors). 4. **Domain auto-cleaning**: Endpoints that accept `domain` automatically strip `http://`, `https://`, `www.`, and trailing paths. You can pass `https://www.example.com/path` and it will query `example.com`. 5. **DNS server for dns_lookup**: This parameter is required. Common choices: `8.8.8.8` (Google), `1.1.1.1` (Cloudflare), `9.9.9.9` (Quad9). 6. **http_headers URL**: Must include the protocol (`https://example.com`, not just `example.com`). 7. **ip_blacklist**: IPv4 only. Does not support IPv6. 8. **port_check**: Single port = GET with query params. Multiple ports = POST with JSON body (NDJSON stream response, max 30 ports).