how.is
payment-ready until 2026-11-05
Check a URL, domain or IP before an agent trusts it: URL pre-flight safety verdict, read-a-page with verdict, company card, WHOIS, DNS, TLS, email auth, zone-file change history, brand look-alike domains, real-crawler verification, screenshots.
Compare: all web scraping APIs · all screenshot APIs · all WHOIS and domain APIs
Call it x402 v2
x402 v2
- Base URL
- https://how.is
- Payment
- x402 v2, header channel
$ curl -i 'https://how.is/v1/bot/verify' An unpaid request returns HTTP 402 with the payment terms. Sign a payment authorization, then retry with the PAYMENT-SIGNATURE header.
Endpoints 23 paid routes on how.is
15 more in Example 402 response
Prices as captured in the 402 response: median $0.005 across the 23 endpoints, unchanged since first capture.
Example 402 response
Endpoints and prices
| Method | Path | Description | Price | Network | Asset | 402 channel | Captured |
|---|---|---|---|---|---|---|---|
| GET | / | Verify a crawler's identity: is this IP + user-agent really Googlebot, Bingbot, GPTBot or ClaudeBot, an impostor using the name, another bot, or a person? | $0.005 | Base | USDC | header | since 10-29 |
| POST | / | Verify many crawler visitors (IP + user-agent) in one call: real Googlebot, GPTBot, ClaudeBot or impostor, billed per item. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Get the last 7 days of crawler and bot traffic intelligence: every network, named crawler, JA4 TLS fingerprint and firewall rule seen, refreshed hourly. | $0.05 | Base | USDC | header | since 10-29 |
| GET | / | Find newly registered look-alikes of a brand: typos, look-alike characters, the same name on another TLD, or the brand beside a lure word, new in the zone files in the last 14 days, each with a risk tier and reasons. | $0.02 | Base | USDC | header | since 10-29 |
| GET | / | Check whether websites are up right now: HTTP status, latency, DNS time, resolved IP and TLS days left, for up to 10 URLs. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Look up the company behind a domain: name, description, category, location, socials, mail/DNS/hosting providers and registration, each with source and confidence. | $0.01 | Base | USDC | header | since 10-29 |
| GET | / | Find out how old a domain is: registration date, age in days and whether it was registered in the last 30 days, a common phishing signal. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Check whether a domain name is available to register, asked of the registry over RDAP, with first-year and renewal price. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Check whether a domain's mail and web addresses are listed on spam and abuse blocklists. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Check when a domain appeared in the registry zone file, left it, came back or changed nameservers, from daily gTLD and .com/.net zone files. A sudden nameserver move signals a hijack or sale; a brand-new name signals phishing. | $0.01 | Base | USDC | header | since 10-29 |
| GET | / | Look up a domain's DNS records (A, AAAA, MX, NS, TXT and more) with resolve timing. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Check whether a domain is DNSSEC-signed and validates, with the chain of trust. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Check a domain's email authentication: SPF, DKIM and DMARC records, a score and what to fix. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Look up everything about a domain in one call: DNS, WHOIS, TLS, DNSSEC, SPF/DKIM/DMARC, security grade, blocklist status and IP owner. | $0.025 | Base | USDC | header | since 10-29 |
| GET | / | Grade a domain's security posture: a letter grade and point score with every scored item behind it. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Check a domain's TLS/SSL certificate: valid or not, issuer, protocol and days until it expires. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Check whether a domain is safe to click, sign in to or pay: a risk score and verdict with plain-English reasons from domain age, blocklists and HTTPS. | $0.02 | Base | USDC | header | since 10-29 |
| GET | / | Look up a domain's WHOIS/RDAP record: registrar, creation and expiry dates, nameservers and status codes. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Look up an IP address: network owner (ASN), company, location, VPN/proxy flags and abuse contact. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Read a web page as clean markdown, with a safety verdict attached: robots.txt honored for your agent, risky sites flagged as untrusted, optional screenshot. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Take a screenshot of any public web page: a 1280-wide JPEG, viewport or full page, with its final URL, HTTP status and title. | $0.02 | Base | USDC | header | since 10-29 |
| GET | / | Check whether a URL is safe to fetch, read, sign in to or pay before you do: domain age, look-alike, blocklists, HTTPS, robots.txt for your agent and the site's own x402 price. | $0.005 | Base | USDC | header | since 10-29 |
| GET | / | Detect whether a web page changed since your last call, with a text diff and how much of the page moved. | $0.005 | Base | USDC | header | since 10-29 |
Payment evidence
402 payload captured at . Check evidence JSON · Measurement methodology.
First of 23 payloads captured by the monitor.
135 lines, scroll inside
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/url/preflight",
"tags": [
"url-safety",
"fetch",
"robots-txt",
"phishing",
"security"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Check whether a URL is safe to fetch, read, sign in to or pay before you do: domain age, look-alike, blocklists, HTTPS, robots.txt for your agent and the site's own x402 price.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"url": "https://github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data: verdict (likely_safe/caution/high_risk/inconclusive), risk_score, safe_to{fetch,read,sign_in,pay} each yes/caution/no/unknown, actions{...: {answer, why}}, reasons[{risk, why}], domain_age_days, newborn, lookalike, https_valid, robots{allowed, token, status}, http{status, content_type, redirects}, x402{offers[{price_usd, network, pay_to}]}, bot_policy, not_checked[]."
},
"result": "URL pre-flight for the requested subject",
"receipt": {
"rail": "x402",
"tool": "preflight",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"url"
],
"properties": {
"ua": {
"type": "string",
"maxLength": 512,
"description": "The user agent you will fetch with; robots.txt and our bot policy are judged for it. Defaults to the User-Agent of this request."
},
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "The http(s) URL you are about to fetch"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
} Other captured 402 responses (22)
Captured payload 2 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/read",
"tags": [
"markdown",
"web-scraping",
"fetch",
"url-safety",
"content-extraction"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Read a web page as clean markdown, with a safety verdict attached: robots.txt honored for your agent, risky sites flagged as untrusted, optional screenshot.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"url": "https://github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data: markdown, title, description, lang, canonical, final_url, http_status, content_type, words, truncated, untrusted_content, preflight{verdict, safe_to, reasons, ...}, screenshot{image_base64, ...} when asked."
},
"result": "Read a page (with verdict) for the requested subject",
"receipt": {
"rail": "x402",
"tool": "read",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"url"
],
"properties": {
"ua": {
"type": "string",
"maxLength": 512,
"description": "The user agent you will fetch with; robots.txt and our bot policy are judged for it. Defaults to the User-Agent of this request."
},
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "The http(s) page to read"
},
"screenshot": {
"type": "boolean",
"description": "Also return a 1280x800 JPEG of the page"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 3 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "25000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/profile",
"tags": [
"domain",
"dns",
"whois",
"security",
"enrichment"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Look up everything about a domain in one call: DNS, WHOIS, TLS, DNSSEC, SPF/DKIM/DMARC, security grade, blocklist status and IP owner.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "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."
},
"result": "Domain profile (bundle) for the requested subject",
"receipt": {
"rail": "x402",
"tool": "profile",
"charge_usd": 0.025,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 4 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "20000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/trust",
"tags": [
"url-safety",
"phishing",
"domain",
"security",
"trust"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Check whether a domain is safe to click, sign in to or pay: a risk score and verdict with plain-English reasons from domain age, blocklists and HTTPS.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data: verdict, risk_score (0-100), reasons[{risk, why}], age_days, blocklist_listings, blocklists_unanswered[], https_valid, not_checked[]."
},
"result": "Trust check for the requested subject",
"receipt": {
"rail": "x402",
"tool": "trust",
"charge_usd": 0.02,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 5 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "10000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/company",
"tags": [
"company",
"enrichment",
"firmographics",
"domain",
"kyb"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Look up the company behind a domain: name, description, category, location, socials, mail/DNS/hosting providers and registration, each with source and confidence.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data: name, legal_name, description, categories, kind, audience, business_model, location{locality,region,country}, social{x,linkedin,...}, providers{dns,mail,hosting}, registration{registrar,created,expires,age_years,registrant_org}, ownership, confidence{overall,fields}, sources, not_checked[]."
},
"result": "Company card for the requested subject",
"receipt": {
"rail": "x402",
"tool": "company",
"charge_usd": 0.01,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 6 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/dns",
"tags": [
"dns",
"domain",
"records",
"network",
"lookup"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Look up a domain's DNS records (A, AAAA, MX, NS, TXT and more) with resolve timing.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data.data.records keyed by record type (A, AAAA, MX, NS, TXT, ...); data.data.responseTime."
},
"result": "DNS records for the requested subject",
"receipt": {
"rail": "x402",
"tool": "dns",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 7 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/whois",
"tags": [
"whois",
"rdap",
"domain",
"registrar",
"lookup"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Look up a domain's WHOIS/RDAP record: registrar, creation and expiry dates, nameservers and status codes.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data.data.data: the parsed WHOIS/RDAP record (registrar, dates, nameservers, status)."
},
"result": "WHOIS / RDAP for the requested subject",
"receipt": {
"rail": "x402",
"tool": "whois",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 8 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/age",
"tags": [
"domain-age",
"phishing",
"whois",
"domain",
"security"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Find out how old a domain is: registration date, age in days and whether it was registered in the last 30 days, a common phishing signal.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data: created, age_days, age_years, newly_registered, expires, registrar, source."
},
"result": "Domain age for the requested subject",
"receipt": {
"rail": "x402",
"tool": "age",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 9 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/available",
"tags": [
"domain",
"availability",
"registration",
"rdap",
"pricing"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Check whether a domain name is available to register, asked of the registry over RDAP, with first-year and renewal price.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "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."
},
"result": "Domain availability for the requested subject",
"receipt": {
"rail": "x402",
"tool": "available",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 10 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "10000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/changes",
"tags": [
"domain-history",
"nameservers",
"zone-files",
"phishing",
"security"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Check when a domain appeared in the registry zone file, left it, came back or changed nameservers, from daily gTLD and .com/.net zone files. A sudden nameserver move signals a hijack or sale; a brand-new name signals phishing.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data: in_zone_now, first_seen, first_seen_is_coverage_start, last_seen, current_ns, events[{type: appeared|disappeared|reappeared|ns_changed, dates, from, to, message}], changed_last_30_days, coverage{daily_since, first_zone_file, runs}, ns_runs, note."
},
"result": "Domain change history for the requested subject",
"receipt": {
"rail": "x402",
"tool": "changes",
"charge_usd": 0.01,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A registered name directly under a TLD, e.g. example.com (zone files list no subdomains; ccTLDs publish none)"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 11 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "20000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/brand/lookalikes",
"tags": [
"typosquatting",
"brand-protection",
"phishing",
"lookalike-domains",
"security"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Find newly registered look-alikes of a brand: typos, look-alike characters, the same name on another TLD, or the brand beside a lure word, new in the zone files in the last 14 days, each with a risk tier and reasons.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"brand": "github"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data: brand, window{from,to,days}, matches[{domain, day, kind, matched, lures, tier, score, signals, ns{provider,hint}, census{state,registrar}, risk{tier,verdict,target}}], window_totals{total, by_tier, by_kind, listed_cap}, variants_searched, saturated, note."
},
"result": "Brand look-alike domains for the requested subject",
"receipt": {
"rail": "x402",
"tool": "lookalikes",
"charge_usd": 0.02,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"brand"
],
"properties": {
"days": {
"type": "integer",
"maximum": 14,
"minimum": 1,
"description": "Only names new in the last N zone days (default 14)"
},
"brand": {
"type": "string",
"maxLength": 253,
"description": "A brand name or one of its domains, e.g. paypal or paypal.com (4-30 characters)"
},
"min_tier": {
"enum": [
"critical",
"high",
"medium",
"low"
],
"type": "string",
"description": "Only matches at or above this tier"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 12 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/tls",
"tags": [
"tls",
"ssl",
"certificate",
"security",
"domain"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Check a domain's TLS/SSL certificate: valid or not, issuer, protocol and days until it expires.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data.data: valid, issuer, subject, subjectAltNames, validFrom, validTo, daysUntilExpiry, protocol, cipher, selfSigned."
},
"result": "TLS certificate for the requested subject",
"receipt": {
"rail": "x402",
"tool": "tls",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 13 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/dnssec",
"tags": [
"dnssec",
"dns",
"security",
"domain",
"validation"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Check whether a domain is DNSSEC-signed and validates, with the chain of trust.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data.data: isSigned, isValid, validationStatus, chainOfTrust, dsRecords, dnskeyRecords, errors, warnings, recommendations."
},
"result": "DNSSEC for the requested subject",
"receipt": {
"rail": "x402",
"tool": "dnssec",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 14 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/email-auth",
"tags": [
"email",
"spf",
"dmarc",
"dkim",
"deliverability"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Check a domain's email authentication: SPF, DKIM and DMARC records, a score and what to fix.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data.data: spf, dkim, dmarc, mx, overallScore, overallStatus, recommendations."
},
"result": "Email authentication for the requested subject",
"receipt": {
"rail": "x402",
"tool": "email-auth",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 15 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/security-score",
"tags": [
"security",
"domain",
"audit",
"score",
"posture"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Grade a domain's security posture: a letter grade and point score with every scored item behind it.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data.data: grade, overallScore, maxPossibleScore, categories[] of scored items."
},
"result": "Security score for the requested subject",
"receipt": {
"rail": "x402",
"tool": "security-score",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 16 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/domain/blacklist",
"tags": [
"blocklist",
"spam",
"abuse",
"reputation",
"security"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Check whether a domain's mail and web addresses are listed on spam and abuse blocklists.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"domain": "github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data.data.ipResults[]: target, isListed, listingCount, totalChecked."
},
"result": "Blacklist status for the requested subject",
"receipt": {
"rail": "x402",
"tool": "blacklist",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "A bare domain name, e.g. example.com"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 17 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/ip",
"tags": [
"ip",
"geolocation",
"asn",
"network",
"enrichment"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Look up an IP address: network owner (ASN), company, location, VPN/proxy flags and abuse contact.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"ip": "8.8.8.8"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data.data: ip, hostname, city, region, country, asn, company, privacy, carrier, abuse."
},
"result": "IP intelligence for the requested subject",
"receipt": {
"rail": "x402",
"tool": "ip",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"ip"
],
"properties": {
"ip": {
"type": "string",
"description": "An IPv4 or IPv6 address"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 18 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/check/site",
"tags": [
"uptime",
"monitoring",
"http",
"latency",
"status"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Check whether websites are up right now: HTTP status, latency, DNS time, resolved IP and TLS days left, for up to 10 URLs.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"sites": [
"https://github.com"
]
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data keyed by URL; each entry has ok, code, ms, dns_ms, ip, ttl, ns, cert_days, server, ts."
},
"result": "Site status for the requested subject",
"receipt": {
"rail": "x402",
"tool": "site_status",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"properties": {
"sites": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"maxItems": 10,
"description": "Up to 10 http(s):// URLs"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 19 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "20000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/site/screenshot",
"tags": [
"screenshot",
"browser",
"web",
"vision",
"rendering"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Take a screenshot of any public web page: a 1280-wide JPEG, viewport or full page, with its final URL, HTTP status and title.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"url": "https://github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data: image_base64 (JPEG), mime, width, height, final_url, http_status, title, note."
},
"result": "Website screenshot for the requested subject",
"receipt": {
"rail": "x402",
"tool": "screenshot",
"charge_usd": 0.02,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"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
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 20 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/watch/page",
"tags": [
"monitoring",
"change-detection",
"web",
"diff",
"watch"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Detect whether a web page changed since your last call, with a text diff and how much of the page moved.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"url": "https://github.com"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data with baseline, changed, change_pct, added, removed, last_change_ts."
},
"result": "Page-change watch for the requested subject",
"receipt": {
"rail": "x402",
"tool": "page_watch",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "An http(s):// URL on the public internet"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 21 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "50000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/bots",
"tags": [
"bots",
"crawlers",
"security",
"firewall",
"ja4"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Get the last 7 days of crawler and bot traffic intelligence: every network, named crawler, JA4 TLS fingerprint and firewall rule seen, refreshed hourly.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data.data: generated_at, networks, bots, fingerprints (the free tier at dns.pizza/bots shows the same shape without fingerprints)."
},
"result": "Bot observatory feed for the requested subject",
"receipt": {
"rail": "x402",
"tool": "bots",
"charge_usd": 0.05,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 22 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/bot/verify",
"tags": [
"bot-detection",
"crawlers",
"googlebot",
"security",
"firewall"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Verify a crawler's identity: is this IP + user-agent really Googlebot, Bingbot, GPTBot or ClaudeBot, an impostor using the name, another bot, or a person?",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"ip": "20.171.207.1",
"ua": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)"
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data: verdict (verified / impostor / unknown_bot / likely_human_or_unclassified), confidence, automation_likely, claimed, identified_as{operator, method, evidence}, reasons[], how_to_act, checks{published_ranges, reverse_dns, asn}, observatory{network, fingerprint, claimed_family, impostors_seen}."
},
"result": "Crawler identity check for the requested subject",
"receipt": {
"rail": "x402",
"tool": "bot_verify",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"ip"
],
"properties": {
"ip": {
"type": "string",
"description": "The visitor's public IPv4 or IPv6 address"
},
"ua": {
"type": "string",
"maxLength": 1000,
"description": "The User-Agent header it sent (omit or empty if none)"
},
"ja4": {
"type": "string",
"maxLength": 80,
"description": "Optional TLS JA4 fingerprint, e.g. t13d1516h2_8daaf6152771_02713d6af862"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Captured payload 23 of 23
{
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa76a0E93C5af3fd43521300B0a58eF5F70fC44F6",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
],
"resource": {
"url": "https://how.is/v1/bot/verify/batch",
"tags": [
"bot-detection",
"crawlers",
"logs",
"security",
"firewall"
],
"iconUrl": "https://how.is/icon.png",
"mimeType": "application/json",
"description": "Verify many crawler visitors (IP + user-agent) in one call: real Googlebot, GPTBot, ClaudeBot or impostor, billed per item.",
"serviceName": "how.is"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"items": [
{
"ip": "66.249.66.1",
"ua": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
},
{
"ip": "164.92.64.1",
"ua": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
}
]
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"data": {
"_shape": "data: results[] (one bot_verify verdict per item, or {ip, error}), counts by verdict, billing{items, unit_price_usd}."
},
"result": "Crawler identity check (batch) for the requested subject",
"receipt": {
"rail": "x402",
"tool": "bot_verify_batch",
"charge_usd": 0.005,
"settlement_tx": "0x…"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"ip"
],
"properties": {
"ip": {
"type": "string",
"description": "The visitor's public IPv4 or IPv6 address"
},
"ua": {
"type": "string",
"maxLength": 1000,
"description": "The User-Agent header it sent (omit or empty if none)"
},
"ja4": {
"type": "string",
"maxLength": 80,
"description": "Optional TLS JA4 fingerprint, e.g. t13d1516h2_8daaf6152771_02713d6af862"
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "1-100 visitors; price is per item"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Can I trust it score from our own monitoring
score from our own monitoring
#4 of 177 in Verification. Bands: strong 93+, solid 75+, mixed 55+, weak below 55.
- Reliability
- 100% uptime since 10-29
- Compliance
- A 14/14 checks pass
- Price
- $0.005 to $0.05 p31 in Verification
- Risk
- clean no risk flag
- Traction
- ---
14/14 compliance checks
- 402 payload captured
- accepts[] array present
- payTo address recoverable
- payTo at accepts[0].payTo (conformant shape)
- payTo is a valid on-chain address
- atomic price declared
- atomic price in a sane range
- asset (token) address declared
- network resolves to CAIP-2
- payment scheme declared
- served over HTTPS
- declares the current x402 version (2)
- EIP-712 domain parameters present on every EVM entry
- x402 v2 envelope delivered in the payment-required header
402 terms unchanged since 2026-10-29. Last up 2026-10-29.
── Site signals
- homepage reachable
- openapi doc
- pricing page
- llms.txt
- robots.txt
- terms page
How the score works
What the score read on this service: status online, 100% uptime, latest daily rollup (no 30d window yet), 434ms response p95, x402 compliance 14 of 14, $0.005 price against the category. Each of those is measured, and each is published in full below.
The score comes from our own monitoring, never from reviews, operator claims, or a language model: reliability, x402 compliance, price against the category, a deterministic risk flag, and a small on-chain traction term, weighted by ranking generation 3. It is not placement anyone can buy: the paid verify tier is reported beside it and is not one of its inputs. Every component below stays published and read-only.
Bands on the 0 to 100 measured score: strong at 93 and above, solid from 75, mixed from 55, weak below 55. Price and speed are scored against the whole category field, every listing in it that carries no danger flag, the scored service included, so the score places a service in its own field.
It is a score inside Verification, and only there: price and speed are scored against the whole category field, every listing in it that carries no danger flag, the scored service included, which here means 177 listings, this one among them: the same 177 the position above is counted against. When the two differ, the field is the wider one, because a listing we have measured too little of to rank still sits in the field the price and the speed are normalized over. The same service in a different field would read differently. The same engine answers GET /api/v1/best, and asked for a different pool (the whole directory, or another filter) it returns a different number for this service under this same ranking generation. Neither is more correct: they answer different questions, and the methodology states which is which.
All measured facts
What it does
Check a URL, domain or IP before an agent trusts it: URL pre-flight safety verdict, read-a-page with verdict, company card, WHOIS, DNS, TLS, email auth, zone-file change history, brand look-alike domains, real-crawler verification, screenshots. From $0.005 per call; free sample on every endpoint.
how.is is a listed x402 Verification API. Captured payment terms name Base. Monitoring and settlement figures below describe the observations available to this directory; an unpaid HTTP 402 check does not prove that a paid call will deliver.
Assessment computed at . Latest service check observed at . Service data JSON · Measurement methodology.
Page rendered at . This response time is separate from the observation and computation times attached to each measurement.
Latest endpoint observation: . Latest price capture: . Prices are recorded quotes, not a promise of availability. Token assets and payment terms are listed separately. Endpoint data JSON · Price history JSON · Measurement methodology.
Assessment computed at . Uptime uses the stated daily-rollup window; response times are in milliseconds, compliance is passed/evaluated checks, and traction is a measured settlement floor. The comparison score is out of 100 within this category. Assessment JSON · Measurement methodology.
Observed daily coverage: 2026-09-30 to 2026-10-29 UTC. Daily monitoring and settlement rollups do not expose their computation time; a bucket date is not an update timestamp. Uptime and response JSON · Volume JSON · Buyers JSON · Measurement methodology.
Ranked from the measured category pool, refreshed at most once a minute. The comparison has no persisted computation timestamp; the assessment time above belongs to this service only. Ranking API documentation · Ranking methodology.
x402 List home · Services · Verification
- uptime · latest daily rollup
- -
- uptime 7d
- -
- uptime 30d
- -
- uptime 90d
- -
- response p95
- 434ms
- avg response
- 434ms
- total checks
- 1
Measured on the unpaid 402 handshake, not the paid call. A service can 402 correctly and still fail after payment.
- price (min)
- $0.005
- price (max)
- $0.05
- category percentile (min)
- p31 in Verification
- category percentile (max)
- p52 in Verification
- endpoints / prices
- 23 / 5
- model
- tiered
- stability
- 100%
No deterministic risk flag. Risk fires only on an exact blocklist match, or a reserved-brand name with a mismatched verified payTo. Never from low uptime, a high price, or a model guess.
- domain age
- 7484d
- registrar
- -
- hosting
- custom
- domain created
- 2006-05-03
Identity facts, not a risk score.
On-chain traction has not been assessed for this service yet.
- member since
- 2026-10-29
Recent checks
| Checked at (UTC) | Status | HTTP | Response | Endpoints |
|---|---|---|---|---|
| Online | 402 | 109ms | 23 | |
| Online | 402 | 398ms | 23 | |
| Online | 402 | 865ms | 23 | |
| Online | 402 | 730ms | 23 | |
| Online | 402 | 1054ms | 23 | |
| Online | 402 | 374ms | 23 | |
| Online | 402 | 715ms | 23 | |
| Online | 402 | 434ms | 23 |
Changes0 in 30d
No changes recorded in the last 30 days.
Over time
On-chain traction has not been assessed for this service yet.
- Uptime
- no completed-day data
On-chain traction has not been assessed for this service yet.
More charts
09-30 to 10-29* UTC
Each series spans only the dates it has data for. Every series is also served as JSON at /api, /scores, /volume and /buyers.
Values
* today so far, partial (UTC).
The uptime summary counts completed UTC days only. The strip, readouts and table retain today's partial reading.
Assessment history last recorded at . Each UTC day uses its last recorded run; missing readings stay unmeasured. Assessment history JSON · Measurement methodology.
| Day | Uptime | Response | Compliance | Price percentile | Site signals |
|---|---|---|---|---|---|
| 2026-10-29* | 100% | 695.33ms | 14/14 | p31 | 4/6 |
Alternatives in Verification
5 of 176 other ranked services in Verification, ordered by the same measured score.
Own this service?
Keep this listing accurate. Ownership is proven with a domain check and every change is reviewed by hand.
Update this listingEarn the verified tier: x402list pays a real call to this endpoint and, if it delivers, the service is delivery-verified. The fee covers the cost of the probe, not the badge; there is no refund if the call does not deliver. Agent and API only, no in-browser signing. See /api.
Verify this service ($0.25)Embed a badge
HTML
<a href="https://x402-list.com/services/ how-is? utm_source=badge& utm_medium=referral& utm_campaign=embed"> <img src="https://x402-list.com/ badge/ how-is.svg" alt="how.is listed on x402-list" height="28"> </a>
Markdown
[](https://x402-list.com/ services/ how-is? utm_source=badge& utm_medium=referral& utm_campaign=embed)
HTML, live uptime variant
<a href="https://x402-list.com/services/ how-is? utm_source=badge& utm_medium=referral& utm_campaign=embed"> <img src="https://x402-list.com/ badge/ how-is.svg? data=uptime" alt="how.is uptime on x402-list" height="28"> </a>
Delisting
To request delisting, email info@x402-list.com with the service name, slug, or URL. Removal is free and does not require proof of ownership. See all free email requests.