how.is domain & IP intelligence

Pay-per-call DNS, WHOIS, domain age, TLS, email auth, blocklists, IP intel. Free samples.

Should I use this

Quality & Safety

B
Description quality
100%
Schema completeness
95%
Naming quality
80%
Poisoning risk
20%
Permission match
100%
Protocol compliance
100%

Findings (5)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin site_status
  • MEDIUMTool description contains URL to non-standard domainin site_screenshot
  • MEDIUMTool description contains URL to non-standard domainin page_watch
  • MEDIUMTool description contains URL to non-standard domainin bot_observatory

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,527Tokens (tool definitions)
~525 BTypical response size
Moderate attention impact (1.97% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "domain-intel": {
      "url": "https://how.is/mcp"
    }
  }
}

Remote endpoints

https://how.is/mcpstreamable-http

What it can do

Tool inventory

Tools (16)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢domain_profile(domain)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢domain_trust(domain)

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[].

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢domain_dns(domain)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢domain_whois(domain)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢domain_age(domain)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢domain_available(domain)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢domain_tls(domain)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢domain_dnssec(domain)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢domain_email_auth(domain)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢domain_security_score(domain)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢domain_blacklist(domain)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253,
      "description": "A bare domain name, e.g. example.com"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢ip_lookup(ip)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "ip": {
      "type": "string",
      "description": "An IPv4 or IPv6 address"
    }
  },
  "required": [
    "ip"
  ],
  "additionalProperties": false
}
🟢site_status(sites)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "sites": {
      "type": "array",
      "maxItems": 10,
      "items": {
        "type": "string",
        "format": "uri"
      },
      "description": "Up to 10 http(s):// URLs"
    }
  },
  "additionalProperties": false
}
🟢site_screenshot(url, full_page)

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.

Input Schema

{
  "type": "object",
  "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"
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}
🟡page_watch(url)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "An http(s):// URL on the public internet"
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}
🟢bot_observatory

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).

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded16 tools