Pay-per-call DNS, WHOIS, domain age, TLS, email auth, blocklists, IP intel. Free samples.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional prepaid key from https://how.is ('Bearer <key>'). Without it every tool still answers its free sample and returns price terms.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Partner tier of the dns.pizza bot observatory: every network (ASN), named crawler, TLS (JA4) fingerprint and firewall rule seen in the last 7 days, refreshed hourly. The public tier is free at https://dns.pizza/bots. Price $0.050 per call. Returns: data.data: generated_at, networks, bots, fingerprints (the free tier at dns.pizza/bots shows the same shape without fingerprints).
This tool takes no arguments.
Partner tier of the dns.pizza bot observatory: every network (ASN), named crawler, TLS (JA4) fingerprint and firewall rule seen in the last 7 days, refreshed hourly. The public tier is free at https://dns.pizza/bots. Price $0.050 per call. Returns: data.data: generated_at, networks, bots, fingerprints (the free tier at dns.pizza/bots shows the same shape without fingerprints).
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}How old a domain is: registration date, age in days and years, and whether it was registered in the last 30 days (a common phishing signal). Price $0.005 per call. Free sample: {"domain": "example.com"}. Returns: data: created, age_days, age_years, newly_registered, expires, registrar, source.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}Is this domain name registered? Asked of the registry over RDAP, with the standard first-year and renewal price when it is free to register. Price $0.005 per call. Free sample: {"domain": "example.com"}. Returns: data: available (true/false; null when only DNS could be checked, then likely_available), registered_on, suffix, source (rdap/dns), confidence, price{registration_usd, renewal_usd, registrar, note}, caveat.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}Whether the addresses behind a domain appear on spam and abuse blocklists. Price $0.005 per call. Free sample: {"domain": "example.com"}. Returns: data.data.ipResults[]: target, isListed, listingCount, totalChecked.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}A, AAAA, MX, NS, TXT and other records for a domain, with resolve timing. Price $0.005 per call. Free sample: {"domain": "example.com"}. Returns: data.data.records keyed by record type (A, AAAA, MX, NS, TXT, ...); data.data.responseTime.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}Whether DNSSEC is signed and validates for a domain. Price $0.005 per call. Free sample: {"domain": "example.com"}. Returns: data.data: isSigned, isValid, validationStatus, chainOfTrust, dsRecords, dnskeyRecords, errors, warnings, recommendations.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}SPF, DKIM and DMARC records and posture for a domain. Price $0.005 per call. Free sample: {"domain": "example.com"}. Returns: data.data: spf, dkim, dmarc, mx, overallScore, overallStatus, recommendations.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}Everything about a domain in one call: DNS, WHOIS, TLS, DNSSEC, email auth, security score, blacklist status, plus IP intelligence for its A record. Price $0.025 per call. Free sample: {"domain": "example.com"}. Returns: data.sections.{dns,whois,tls,dnssec,email-auth,security-score,blacklist,ip}; data.errors names any section that failed; data.billing says what was delivered.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}A letter grade and point score for a domain security posture, with the scored items behind it. Price $0.005 per call. Free sample: {"domain": "example.com"}. Returns: data.data: grade, overallScore, maxPossibleScore, categories[] of scored items.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}Certificate validity, issuer, protocol and days until expiry for a domain. Price $0.005 per call. Free sample: {"domain": "example.com"}. Returns: data.data: valid, issuer, subject, subjectAltNames, validFrom, validTo, daysUntilExpiry, protocol, cipher, selfSigned.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}Should an agent click, sign in to, or pay this domain? A risk score and verdict (likely_safe / caution / high_risk, or inconclusive when a check could not run) with plain-English reasons, from domain age, spam/abuse blocklists and the HTTPS certificate. Price $0.020 per call. Free sample: {"domain": "example.com"}. Returns: data: verdict, risk_score (0-100), reasons[{risk, why}], age_days, blocklist_listings, blocklists_unanswered[], https_valid, not_checked[].
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}Registrar, creation and expiry dates, nameservers and status codes for a domain. Price $0.005 per call. Free sample: {"domain": "example.com"}. Returns: data.data.data: the parsed WHOIS/RDAP record (registrar, dates, nameservers, status).
| Argument | Type | Description |
|---|---|---|
| domain* | string | A bare domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
}Network owner (ASN), company, geolocation, privacy flags and abuse contact for an IP address. Price $0.005 per call. Free sample: {"ip": "1.1.1.1"}. Returns: data.data: ip, hostname, city, region, country, asn, company, privacy, carrier, abuse.
| Argument | Type | Description |
|---|---|---|
| ip* | string | An IPv4 or IPv6 address |
{
"type": "object",
"required": [
"ip"
],
"properties": {
"ip": {
"type": "string",
"description": "An IPv4 or IPv6 address"
}
},
"additionalProperties": false
}Has this page changed since your last call, and how much? The first call stores a baseline; later calls return a text diff (2% threshold). Price $0.005 per call. Free sample: {"url": "https://example.com"}. Returns: data with baseline, changed, change_pct, added, removed, last_change_ts.
| Argument | Type | Description |
|---|---|---|
| url* | string | An http(s):// URL on the public internet |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "An http(s):// URL on the public internet"
}
},
"additionalProperties": false
}See a web page: a 1280-wide JPEG of any public URL, viewport or full page (capped at 6000 px), with its final URL, HTTP status and title. Price $0.020 per call. Free sample: {"url": "https://example.com"}. Returns: data: image_base64 (JPEG), mime, width, height, final_url, http_status, title, note.
| Argument | Type | Description |
|---|---|---|
| url* | string | A public http(s) URL |
| full_page | boolean | Capture the whole page, not just the first screen |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "A public http(s) URL"
},
"full_page": {
"type": "boolean",
"description": "Capture the whole page, not just the first screen"
}
},
"additionalProperties": false
}Live check of one or more URLs: HTTP status, latency, DNS resolve time, resolved IP, TTL, nameservers, TLS days remaining. Price $0.005 per call. Free sample: {"sites": ["https://example.com"]}. Returns: data keyed by URL; each entry has ok, code, ms, dns_ms, ip, ttl, ns, cert_days, server, ts.
| Argument | Type | Description |
|---|---|---|
| sites | array | Up to 10 http(s):// URLs |
{
"type": "object",
"properties": {
"sites": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"maxItems": 10,
"description": "Up to 10 http(s):// URLs"
}
},
"additionalProperties": false
}