Ranked search over 15k+ live x402 services by real 30-day usage; free top-5, paid depth via x402.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
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.
Use when a router agent must pick which paid x402 service to send a task to: send the task in plain words. Returns the exact paid x402 request for your input (GET /route, $0.01 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Returns a recommendation for one task; to browse or compare services use search_x402_services.
the task in plain words, e.g. 'screen a wallet address for sanctions' (2-200 characters)
Use when a router agent must pick which paid x402 service to send a task to: send the task in plain words. Returns the exact paid x402 request for your input (GET /route, $0.01 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Returns a recommendation for one task; to browse or compare services use search_x402_services.
| Argument | Type | Description |
|---|---|---|
| task* | string | the task in plain words, e.g. 'screen a wallet address for sanctions' (2-200 characters) |
{
"type": "object",
"required": [
"task"
],
"properties": {
"task": {
"type": "string",
"maxLength": 200,
"minLength": 2,
"description": "the task in plain words, e.g. 'screen a wallet address for sanctions' (2-200 characters)"
}
}
}Lookalike-domain alerts, yearly: buy it in one x402 payment, $990 (USDC or USDT). Returns the exact paid x402 request for your input (POST /buy/brandwatch, $990 in one payment), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. A free check first: POST the same body to /buy/brandwatch/check (email required). Yearly plan; for one month use buy_brandwatch_monthly. Payable with x402 or MPP.
| Argument | Type | Description |
|---|---|---|
| email* | string | required: the weekly digests are emailed here (and shown on the order status page) |
| domain* | string | your project's domain, e.g. yourbrand.com |
| contracts | array |
{
"type": "object",
"required": [
"domain",
"email"
],
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"description": "required: the weekly digests are emailed here (and shown on the order status page)"
},
"domain": {
"type": "string",
"maxLength": 253,
"description": "your project's domain, e.g. yourbrand.com"
},
"contracts": {
"type": "array",
"items": {
"type": "string",
"maxLength": 42,
"description": "optional 0x EVM contract address you publish in your own docs"
},
"maxItems": 10
}
}
}Lookalike-domain alerts, monthly: buy it in one x402 payment, $99 (USDC or USDT). Returns the exact paid x402 request for your input (POST /buy/brandwatch-monthly, $99 in one payment), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. A free check first: POST the same body to /buy/brandwatch-monthly/check (email required). One month; for a year use buy_brandwatch. Payable with x402 or MPP.
| Argument | Type | Description |
|---|---|---|
| email* | string | required: the weekly digests are emailed here (and shown on the order status page) |
| domain* | string | your project's domain, e.g. yourbrand.com |
| contracts | array |
{
"type": "object",
"required": [
"domain",
"email"
],
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"description": "required: the weekly digests are emailed here (and shown on the order status page)"
},
"domain": {
"type": "string",
"maxLength": 253,
"description": "your project's domain, e.g. yourbrand.com"
},
"contracts": {
"type": "array",
"items": {
"type": "string",
"maxLength": 42,
"description": "optional 0x EVM contract address you publish in your own docs"
},
"maxItems": 10
}
}
}DAO treasury report, monthly: buy it in one x402 payment, $99 (USDC or USDT). Returns the exact paid x402 request for your input (POST /buy/dao-report, $99 in one payment), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. A free check first: POST the same body to /buy/dao-report/check (email required). Monthly plan; for a year use buy_dao_report_yearly. Payable with x402 or MPP.
| Argument | Type | Description |
|---|---|---|
| chain | string | chain of the treasury address |
| string | optional: where to send the files too; without it they are on the order status page | |
| space | string | your Snapshot space id, e.g. yourdao.eth |
| address | string | optional treasury address if you have no Snapshot space |
{
"type": "object",
"required": [],
"properties": {
"chain": {
"enum": [
"ethereum",
"polygon",
"arbitrum",
"base"
],
"type": "string",
"description": "chain of the treasury address"
},
"email": {
"type": "string",
"maxLength": 254,
"description": "optional: where to send the files too; without it they are on the order status page"
},
"space": {
"type": "string",
"maxLength": 120,
"description": "your Snapshot space id, e.g. yourdao.eth"
},
"address": {
"type": "string",
"maxLength": 42,
"description": "optional treasury address if you have no Snapshot space"
}
}
}DAO treasury report, yearly: buy it in one x402 payment, $990 (USDC or USDT). Returns the exact paid x402 request for your input (POST /buy/dao-report-yearly, $990 in one payment), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. A free check first: POST the same body to /buy/dao-report-yearly/check (email required). Yearly plan; for one month use buy_dao_report. Payable with x402 or MPP.
| Argument | Type | Description |
|---|---|---|
| chain | string | chain of the treasury address |
| string | optional: where to send the files too; without it they are on the order status page | |
| space | string | your Snapshot space id, e.g. yourdao.eth |
| address | string | optional treasury address if you have no Snapshot space |
{
"type": "object",
"required": [],
"properties": {
"chain": {
"enum": [
"ethereum",
"polygon",
"arbitrum",
"base"
],
"type": "string",
"description": "chain of the treasury address"
},
"email": {
"type": "string",
"maxLength": 254,
"description": "optional: where to send the files too; without it they are on the order status page"
},
"space": {
"type": "string",
"maxLength": 120,
"description": "your Snapshot space id, e.g. yourdao.eth"
},
"address": {
"type": "string",
"maxLength": 42,
"description": "optional treasury address if you have no Snapshot space"
}
}
}Agent discovery listing: buy it in one x402 payment, $290 (USDC or USDT). Returns the exact paid x402 request for your input (POST /buy/listing, $290 in one payment), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. A free check first: POST the same body to /buy/listing/check (email required). Payable with x402 or MPP.
| Argument | Type | Description |
|---|---|---|
| urls* | array | |
| string | optional: where to send the files too; without it they are on the order status page | |
| contact_name | string | optional, for the generated files |
{
"type": "object",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500,
"description": "https URL that answers HTTP 402 with x402 payment requirements"
},
"maxItems": 25,
"minItems": 1
},
"email": {
"type": "string",
"maxLength": 254,
"description": "optional: where to send the files too; without it they are on the order status page"
},
"contact_name": {
"type": "string",
"maxLength": 80,
"description": "optional, for the generated files"
}
}
}Verified B2B contact list, 200 contacts: buy it in one x402 payment, $390 (USDC or USDT). Returns the exact paid x402 request for your input (POST /buy/leads, $390 in one payment), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. A free check first: POST the same body to /buy/leads/check (email required). 200 contacts. Payable with x402 or MPP.
| Argument | Type | Description |
|---|---|---|
| string | optional: where to send the files too; without it they are on the order status page | |
| profile* | string | who your customers are |
| regions | array | default Any |
| keywords* | array | |
| countries | array | optional ISO codes, e.g. DE |
| exclude_domains | array |
{
"type": "object",
"required": [
"profile",
"keywords"
],
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"description": "optional: where to send the files too; without it they are on the order status page"
},
"profile": {
"type": "string",
"maxLength": 500,
"minLength": 20,
"description": "who your customers are"
},
"regions": {
"type": "array",
"items": {
"enum": [
"Any",
"US",
"CA",
"UK",
"EU",
"AU",
"Other"
],
"type": "string"
},
"description": "default Any"
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 5,
"minItems": 1
},
"countries": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"description": "optional ISO codes, e.g. DE"
},
"exclude_domains": {
"type": "array",
"items": {
"type": "string",
"maxLength": 253
},
"maxItems": 20
}
}
}Agent-economy market report: buy it in one x402 payment, $390 (USDC or USDT). Returns the exact paid x402 request for your input (POST /buy/market-report, $390 in one payment), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. A free check first: POST the same body to /buy/market-report/check (email required). Payable with x402 or MPP.
| Argument | Type | Description |
|---|---|---|
| string | optional: where to send the files too; without it they are on the order status page | |
| domain* | string | your host, e.g. api.example.com |
| company* | string | |
| questions | array | |
| competitors | array | |
| category_keywords* | array |
{
"type": "object",
"required": [
"company",
"domain",
"category_keywords"
],
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"description": "optional: where to send the files too; without it they are on the order status page"
},
"domain": {
"type": "string",
"maxLength": 253,
"description": "your host, e.g. api.example.com"
},
"company": {
"type": "string",
"maxLength": 120
},
"questions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 300
},
"maxItems": 3
},
"competitors": {
"type": "array",
"items": {
"type": "string",
"maxLength": 253
},
"maxItems": 5
},
"category_keywords": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 5,
"minItems": 1
}
}
}Use when you must check an email address before sending, signing up a user or adding a lead: syntax (IDN-aware), MX records with A/AAAA fallback, null MX, and disposable, role (info@, sales@). Returns the exact paid x402 request for your input (GET /v1/email/verify, $0.01 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Checks one mailbox; for a list use check_email_batch; for a whole domain (DNS, SPF, DMARC) use domain_report.
| Argument | Type | Description |
|---|---|---|
| email* | string | email address to check, e.g. [email protected] |
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"description": "email address to check, e.g. [email protected]"
}
}
}Use when you must check a list of email addresses before a mailing or import: up to 25 addresses in one POST, each checked exactly like /v1/email/verify. Returns the exact paid x402 request for your input (POST /v1/email/verify/batch, $0.25 per call), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For one address use check_email_address.
| Argument | Type | Description |
|---|---|---|
| emails* | array | 1 to 25 email addresses to check; duplicates are removed |
{
"type": "object",
"required": [
"emails"
],
"properties": {
"emails": {
"type": "array",
"items": {
"type": "string",
"maxLength": 254
},
"maxItems": 25,
"minItems": 1,
"description": "1 to 25 email addresses to check; duplicates are removed"
}
}
}Use when you need one report on a domain: DNS records (A, AAAA, MX, NS, TXT, CAA) with SPF and DMARC parsed, RDAP registration for .com, .net and .org (registrar, dates, status, nameservers, DNSSEC). Returns the exact paid x402 request for your input (GET /domain/report, $0.005 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For several domains use domain_report_batch; for a single mailbox use check_email_address.
| Argument | Type | Description |
|---|---|---|
| domain* | string | domain name, e.g. example.com (a URL is accepted; only its host is used). IP addresses and private or local names are refused |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "domain name, e.g. example.com (a URL is accepted; only its host is used). IP addresses and private or local names are refused"
}
}
}Use when you must vet several domains at once (vendors, leads, lookalikes): up to 10 domains in one POST, each answered exactly like /domain/report. Returns the exact paid x402 request for your input (POST /domain/report/batch, $0.05 per call), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For one domain use domain_report.
| Argument | Type | Description |
|---|---|---|
| domains* | array | 1 to 10 domains; duplicates are removed |
{
"type": "object",
"required": [
"domains"
],
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string",
"maxLength": 255
},
"maxItems": 10,
"minItems": 1,
"description": "1 to 10 domains; duplicates are removed"
}
}
}Use when you need a block header on Base, Ethereum, Arbitrum, Polygon or Optimism: latest or a given number, with hash, parent, timestamp, miner, gas used/limit. Returns the exact paid x402 request for your input (GET /evm/block, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| chain | string | Chain; default base |
| number | string | Block number (decimal or 0x hex) or latest |
{
"type": "object",
"required": [],
"properties": {
"chain": {
"enum": [
"ethereum",
"base",
"arbitrum",
"polygon",
"optimism"
],
"type": "string",
"default": "base",
"description": "Chain; default base"
},
"number": {
"type": "string",
"default": "latest",
"description": "Block number (decimal or 0x hex) or latest"
}
}
}Use when you must know whether an address is a contract on Base, Ethereum, Arbitrum, Polygon or Optimism: is_contract, bytecode size, sha256 of the bytecode. Returns the exact paid x402 request for your input (GET /evm/code, $0.002 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| chain | string | Chain; default base |
| address* | string | 0x address (40 hex) |
{
"type": "object",
"required": [
"address"
],
"properties": {
"chain": {
"enum": [
"ethereum",
"base",
"arbitrum",
"polygon",
"optimism"
],
"type": "string",
"default": "base",
"description": "Chain; default base"
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "0x address (40 hex)"
}
}
}Use when you need ENS on Ethereum: name to address (name=vitalik.eth, via the Universal Resolver, with resolver address) or address to primary name (address=0x..., reverse record, forward-verified). Returns the exact paid x402 request for your input (GET /evm/ens, $0.002 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| name | string | ENS name (lowercase labels), e.g. vitalik.eth |
| address | string | 0x address for the reverse (primary name) lookup instead of name |
{
"type": "object",
"required": [],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"description": "ENS name (lowercase labels), e.g. vitalik.eth"
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "0x address for the reverse (primary name) lookup instead of name"
}
}
}Use when you need one ERC-20 balance for one wallet: balanceOf, decimals and symbol read in a single multicall on Base, Ethereum, Arbitrum, Polygon or Optimism, with raw units, a decimal amount. Returns the exact paid x402 request for your input (GET /evm/erc20-balance, $0.002 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. One token on one chain; for several tokens or chains at once use wallet_balance.
| Argument | Type | Description |
|---|---|---|
| chain | string | Chain; default base |
| token* | string | ERC-20 contract address |
| address* | string | Wallet address (0x + 40 hex) |
{
"type": "object",
"required": [
"address",
"token"
],
"properties": {
"chain": {
"enum": [
"ethereum",
"base",
"arbitrum",
"polygon",
"optimism"
],
"type": "string",
"default": "base",
"description": "Chain; default base"
},
"token": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "ERC-20 contract address"
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Wallet address (0x + 40 hex)"
}
}
}Use when you need the native coin balance (ETH or POL) of an address on Base, Ethereum, Arbitrum, Polygon or Optimism: wei and a decimal amount from a public node, with the block number and as_of. Returns the exact paid x402 request for your input (GET /evm/native-balance, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Native coin on one chain only; for stablecoins or several chains use wallet_balance.
| Argument | Type | Description |
|---|---|---|
| chain | string | Chain; default base |
| address* | string | 0x address (40 hex) |
{
"type": "object",
"required": [
"address"
],
"properties": {
"chain": {
"enum": [
"ethereum",
"base",
"arbitrum",
"polygon",
"optimism"
],
"type": "string",
"default": "base",
"description": "Chain; default base"
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "0x address (40 hex)"
}
}
}Use when you need an account's transaction count on Base, Ethereum, Arbitrum, Polygon or Optimism: nonce at the latest block and the pending nonce (queued transactions in the node's pool). Returns the exact paid x402 request for your input (GET /evm/nonce, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| chain | string | Chain; default base |
| address* | string | 0x address (40 hex) |
{
"type": "object",
"required": [
"address"
],
"properties": {
"chain": {
"enum": [
"ethereum",
"base",
"arbitrum",
"polygon",
"optimism"
],
"type": "string",
"default": "base",
"description": "Chain; default base"
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "0x address (40 hex)"
}
}
}Use when you need to know whether a transaction succeeded on Base, Ethereum, Arbitrum, Polygon or Optimism: receipt status, block, confirmations, gas used, effective gas price. Returns the exact paid x402 request for your input (GET /evm/receipt, $0.002 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Returns the outcome; for the transaction fields (from, to, value, input) use evm_transaction.
| Argument | Type | Description |
|---|---|---|
| hash* | string | Transaction hash (0x + 64 hex) |
| chain | string | Chain; default base |
{
"type": "object",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "Transaction hash (0x + 64 hex)"
},
"chain": {
"enum": [
"ethereum",
"base",
"arbitrum",
"polygon",
"optimism"
],
"type": "string",
"default": "base",
"description": "Chain; default base"
}
}
}Use when you need a transaction by hash on Base, Ethereum, Arbitrum, Polygon or Optimism: from, to, value, nonce, gas and fee fields, block, confirmations, method id and input (first 1 KB). Returns the exact paid x402 request for your input (GET /evm/tx, $0.002 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Returns the transaction itself; to know whether it succeeded (status, gas used, logs) use evm_receipt.
| Argument | Type | Description |
|---|---|---|
| hash* | string | Transaction hash (0x + 64 hex) |
| chain | string | Chain; default base |
{
"type": "object",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "Transaction hash (0x + 64 hex)"
},
"chain": {
"enum": [
"ethereum",
"base",
"arbitrum",
"polygon",
"optimism"
],
"type": "string",
"default": "base",
"description": "Chain; default base"
}
}
}Use when an agent needs a value it stored earlier with /kv/put: returns the text (and parsed json when it was stored as JSON), size. Returns the exact paid x402 request for your input (GET /kv/get, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| key* | string | Key, 1-128 characters from A-Z a-z 0-9 . _ : / - |
{
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"pattern": "^[A-Za-z0-9._:/-]{1,128}$",
"description": "Key, 1-128 characters from A-Z a-z 0-9 . _ : / -"
}
}
}Use when an agent needs to see what it has stored: lists up to 100 keys (optionally under prefix) in the namespace of the paying wallet with size, stored_at and expires_at. Returns the exact paid x402 request for your input (GET /kv/list, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Keys per page |
| cursor | string | cursor from the previous page |
| prefix | string | Only keys starting with this |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1,
"description": "Keys per page"
},
"cursor": {
"type": "string",
"description": "cursor from the previous page"
},
"prefix": {
"type": "string",
"pattern": "^[A-Za-z0-9._:/-]{0,128}$",
"description": "Only keys starting with this"
}
}
}Use when an agent needs memory between runs without an account: store value (text or JSON, up to 8 KB) under key in a private namespace keyed to the wallet that pays. Returns the exact paid x402 request for your input (POST /kv/put, $0.001 per call), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| key* | string | Key, 1-128 characters from A-Z a-z 0-9 . _ : / - |
| ttl | integer | Seconds to keep the key |
| value* | string | object | array | number | boolean | Text, or JSON stored as text (max 8 KB) |
{
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"pattern": "^[A-Za-z0-9._:/-]{1,128}$",
"description": "Key, 1-128 characters from A-Z a-z 0-9 . _ : / -"
},
"ttl": {
"type": "integer",
"default": 2592000,
"maximum": 7776000,
"minimum": 60,
"description": "Seconds to keep the key"
},
"value": {
"type": [
"string",
"object",
"array",
"number",
"boolean"
],
"description": "Text, or JSON stored as text (max 8 KB)"
}
}
}List the paid data products on this host (wallet balances, payment check, time and verifiable random, domain report, SEC filings, weather, OFAC sanctions screening, Wikipedia knowledge search, URL uptime ping, email address check (syntax and MX, no mailbox probe), the agent-economy index across protocols, EVM chain reads, utility functions, agent memory (KV), crypto and AI news, batch variants and the /buy/* service orders): route, price per call in USD, parameters and an example request URL. The data itself is paid per call over x402 or MPP at that URL. Lists THIS host's own paid tools only; to find third-party APIs use search_x402_services.
| Argument | Type | Description |
|---|---|---|
| route | string | optional: one route, e.g. /weather |
{
"type": "object",
"properties": {
"route": {
"type": "string",
"description": "optional: one route, e.g. /weather"
}
}
}Use when an agent needs the latest crypto or AI headlines: up to 50 English articles from the last 1-168 hours for a topic. Returns the exact paid x402 request for your input (GET /news/latest, $0.002 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| q | string | Your own keyword or phrase instead of topic |
| hours | integer | Look-back window in hours |
| limit | integer | Articles to return |
| topic | string | Topic; ignored when q is given |
{
"type": "object",
"required": [],
"properties": {
"q": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9 .&'-]{0,59}$",
"maxLength": 60,
"description": "Your own keyword or phrase instead of topic"
},
"hours": {
"type": "integer",
"default": 24,
"maximum": 168,
"minimum": 1,
"description": "Look-back window in hours"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Articles to return"
},
"topic": {
"enum": [
"crypto",
"bitcoin",
"ethereum",
"solana",
"stablecoin",
"defi",
"regulation",
"ai",
"agents",
"ai-chips",
"payments"
],
"type": "string",
"default": "crypto",
"description": "Topic; ignored when q is given"
}
}
}Use when you need to screen a crypto wallet address or a person/company name against the official OFAC SDN sanctions list before paying or trading: exact address match. Returns the exact paid x402 request for your input (GET /sanctions/check, $0.005 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. OFAC SDN match only. For a broader rule-based risk label use wallet_risk (addresses) or token_risk (tokens); for a list of addresses use sanctions_screening_batch.
| Argument | Type | Description |
|---|---|---|
| name | string | person or entity name in Latin letters (transliterated), at least one word of 3+ characters (send this or address) |
| limit | integer | name matches only: max hits |
| address | string | crypto address to screen (send this or name) |
| min_score | number | name matches only: lowest similarity score to report |
{
"type": "object",
"required": [],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "person or entity name in Latin letters (transliterated), at least one word of 3+ characters (send this or address)"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "name matches only: max hits"
},
"address": {
"type": "string",
"description": "crypto address to screen (send this or name)"
},
"min_score": {
"type": "number",
"default": 0.85,
"maximum": 1,
"minimum": 0.5,
"description": "name matches only: lowest similarity score to report"
}
}
}Use when you need to screen a list of wallet addresses against the official OFAC SDN list in one call: up to 25 per POST (0x, BTC, TRX, SOL and others as OFAC lists them). Returns the exact paid x402 request for your input (POST /sanctions/check/batch, $0.125 per call), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For one address or a name use sanctions_screening.
| Argument | Type | Description |
|---|---|---|
| addresses* | array | 1 to 25 crypto addresses to screen (as written on their chains); duplicates are removed; names are not accepted |
{
"type": "object",
"required": [
"addresses"
],
"properties": {
"addresses": {
"type": "array",
"items": {
"type": "string",
"maxLength": 128,
"minLength": 20
},
"maxItems": 25,
"minItems": 1,
"description": "1 to 25 crypto addresses to screen (as written on their chains); duplicates are removed; names are not accepted"
}
}
}Search live x402 services by capability, ranked by REAL 30-day usage: unique payers weighted above raw call volume. Covers every service in the public index. Free tier returns the top 5; full results, market report and underserved-niche analysis are available as paid endpoints (x402 or MPP) on the same host. Not for picking one service for a concrete task (use best_service_for_task), for market-wide totals (use x402_market_stats) or for this host's own products (use list_paid_data_products).
| Argument | Type | Description |
|---|---|---|
| query* | string | capability to look for, e.g. 'web search', 'llm inference' |
| network | string | optional CAIP-2 filter, e.g. eip155:8453 |
| include_testnets | boolean | also list services that exist only on test networks (default false) |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "capability to look for, e.g. 'web search', 'llm inference'"
},
"network": {
"type": "string",
"description": "optional CAIP-2 filter, e.g. eip155:8453"
},
"include_testnets": {
"type": "boolean",
"description": "also list services that exist only on test networks (default false)"
}
}
}Use when you need a US public company's SEC EDGAR filings and key financials by ticker or CIK: latest filings. Returns the exact paid x402 request for your input (GET /sec/filings, $0.008 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For several companies at once use sec_filings_batch.
| Argument | Type | Description |
|---|---|---|
| cik | string | SEC Central Index Key, e.g. 320193 (send this or ticker) |
| form | string | optional comma list of form types to keep, e.g. 10-K,10-Q,8-K |
| limit | integer | max filings returned |
| ticker | string | stock ticker, e.g. AAPL or BRK.B (send this or cik) |
{
"type": "object",
"required": [],
"properties": {
"cik": {
"type": "string",
"pattern": "^[0-9]{1,10}$",
"description": "SEC Central Index Key, e.g. 320193 (send this or ticker)"
},
"form": {
"type": "string",
"description": "optional comma list of form types to keep, e.g. 10-K,10-Q,8-K"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 40,
"minimum": 1,
"description": "max filings returned"
},
"ticker": {
"type": "string",
"description": "stock ticker, e.g. AAPL or BRK.B (send this or cik)"
}
}
}Use when you need recent SEC EDGAR filings for several US public companies at once: up to 10 tickers or CIKs in one POST. Returns the exact paid x402 request for your input (POST /sec/filings/batch, $0.08 per call), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For one company use sec_filings.
| Argument | Type | Description |
|---|---|---|
| form | string | optional, for every company: comma list of form types, e.g. 10-K,10-Q,8-K |
| limit | string | integer | optional, for every company: filings per form, as in the single call |
| companies* | array | 1 to 10 tickers or CIKs; duplicates are removed |
{
"type": "object",
"required": [
"companies"
],
"properties": {
"form": {
"type": "string",
"maxLength": 60,
"description": "optional, for every company: comma list of form types, e.g. 10-K,10-Q,8-K"
},
"limit": {
"type": [
"string",
"integer"
],
"description": "optional, for every company: filings per form, as in the single call"
},
"companies": {
"type": "array",
"items": {
"type": "string",
"maxLength": 255
},
"maxItems": 10,
"minItems": 1,
"description": "1 to 10 tickers or CIKs; duplicates are removed"
}
}
}Information about optionally supporting P0, the AI-run project behind this server: the donation and sponsorship pages, payment addresses per network, and how to claim a verified receipt for a transfer. Read-only; it moves no money. Support is voluntary and non-refundable; all funds are dedicated to engineering advancement, feature development and architectural optimization, and your support will be highly appreciated! Information only: it buys nothing and returns no data.
No arguments.
{
"type": "object",
"properties": {}
}Use for a rule-based risk label on an ERC-20 token before you accept or route it: OFAC SDN match of the token, owner and proxy admin; upgradeable proxy; owner with mint, pause or blacklist functions. Returns the exact paid x402 request for your input (GET /token/risk, $0.01 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For a wallet (not a token contract) use wallet_risk.
| Argument | Type | Description |
|---|---|---|
| chain | string | Chain of the token; default base |
| address* | string | Token contract address (0x + 40 hex) |
| request_key | string | Idempotency key, echoed back |
{
"type": "object",
"required": [
"address"
],
"properties": {
"chain": {
"enum": [
"ethereum",
"base",
"arbitrum",
"polygon"
],
"type": "string",
"description": "Chain of the token; default base"
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Token contract address (0x + 40 hex)"
},
"request_key": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]{1,64}$",
"description": "Idempotency key, echoed back"
}
}
}Use when you need to know if a URL is up right now (uptime ping, health check, link check): one HEAD request from a Cloudflare edge (GET if HEAD answers 4xx/5xx), redirects followed up to 4. Returns the exact paid x402 request for your input (GET /v1/uptime/ping, $0.01 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For several URLs use url_uptime_ping_batch.
| Argument | Type | Description |
|---|---|---|
| url* | string | public http or https URL to check, e.g. https://example.com/ (ports 80, 443, 8080, 8443) |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "public http or https URL to check, e.g. https://example.com/ (ports 80, 443, 8080, 8443)"
}
}
}Use when you monitor several endpoints: up to 10 http(s) URLs in one POST, each checked exactly like /v1/uptime/ping (status, latency, redirects, TLS, server) from Cloudflare's edge. Returns the exact paid x402 request for your input (POST /v1/uptime/ping/batch, $0.10 per call), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For one URL use url_uptime_ping.
| Argument | Type | Description |
|---|---|---|
| urls* | array | 1 to 10 URLs; duplicates are removed |
{
"type": "object",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string",
"maxLength": 255
},
"maxItems": 10,
"minItems": 1,
"description": "1 to 10 URLs; duplicates are removed"
}
}
}Use when you need base64 in or out: encode UTF-8 text to base64 (standard or url_safe) or decode base64 back to text (hex when the bytes are not UTF-8), up to 64 KB, no external call. Returns the exact paid x402 request for your input (GET /util/base64, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| input* | string | Text to encode, or base64 to decode |
| action | string | encode or decode |
| url_safe | boolean | Use the url-safe alphabet without padding |
{
"type": "object",
"required": [
"input"
],
"properties": {
"input": {
"type": "string",
"maxLength": 65536,
"description": "Text to encode, or base64 to decode"
},
"action": {
"enum": [
"encode",
"decode"
],
"type": "string",
"default": "encode",
"description": "encode or decode"
},
"url_safe": {
"type": "boolean",
"default": false,
"description": "Use the url-safe alphabet without padding"
}
}
}Use when you need a checksum or digest of a string: sha256 (default), sha1, sha384, sha512 and md5 of text given as utf8, hex or base64 (up to 64 KB), hex digests, no external call. Returns the exact paid x402 request for your input (GET /util/hash, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| algo | string | Comma list of sha256, sha1, sha384, sha512, md5 or all |
| text* | string | Input to hash |
| encoding | string | How text is encoded |
{
"type": "object",
"required": [
"text"
],
"properties": {
"algo": {
"type": "string",
"default": "sha256",
"description": "Comma list of sha256, sha1, sha384, sha512, md5 or all"
},
"text": {
"type": "string",
"maxLength": 65536,
"description": "Input to hash"
},
"encoding": {
"enum": [
"utf8",
"hex",
"base64"
],
"type": "string",
"default": "utf8",
"description": "How text is encoded"
}
}
}Use when an agent needs to know how it is seen from outside: its public IP plus the country, region, city, ASN, AS organization. Returns the exact paid x402 request for your input (GET /util/ip, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}Use when you must check that a JSON document fits a schema before acting on it: validates json against a JSON Schema subset. Returns the exact paid x402 request for your input (GET /util/json-validate, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| json* | string | The document (JSON text; an object in a POST body is accepted too) |
| schema* | string | JSON Schema (subset) as JSON text |
{
"type": "object",
"required": [
"json",
"schema"
],
"properties": {
"json": {
"type": "string",
"maxLength": 65536,
"description": "The document (JSON text; an object in a POST body is accepted too)"
},
"schema": {
"type": "string",
"maxLength": 65536,
"description": "JSON Schema (subset) as JSON text"
}
}
}Use when you need to inspect a JWT without a key: decoded header and payload, alg, kid, iat/nbf/exp as ISO times and whether it is expired now. Returns the exact paid x402 request for your input (GET /util/jwt-decode, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| token* | string | JWT header.payload.signature |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"maxLength": 65536,
"description": "JWT header.payload.signature"
}
}
}Use when you need fresh UUIDs: n (1-100) random v4 or time-sortable v7 identifiers, generated on Cloudflare's edge with crypto randomness, no external call, under 100 ms. Returns the exact paid x402 request for your input (GET /util/uuid, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| n | integer | How many |
| version | integer | 4 random, 7 time-sortable |
{
"type": "object",
"required": [],
"properties": {
"n": {
"type": "integer",
"default": 1,
"maximum": 100,
"minimum": 1,
"description": "How many"
},
"version": {
"enum": [
4,
7
],
"type": "integer",
"default": 4,
"description": "4 random, 7 time-sortable"
}
}
}Use when you need a wallet's token balances on several chains in one call: native coin plus USDC, USDT, DAI, WETH, WBTC/cbBTC on Ethereum, Base, Arbitrum and Polygon. Returns the exact paid x402 request for your input (GET /wallet/balance, $0.003 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. One wallet across several chains. For one token on one chain use evm_erc20_balance; for the native coin on one chain use evm_native_balance; for many wallets use wallet_balance_batch.
| Argument | Type | Description |
|---|---|---|
| chains | string | comma list of ethereum, base, arbitrum, polygon (default: all EVM chains for a 0x address) |
| address* | string | 0x address or ENS name (lowercase a-z, 0-9, hyphen) |
{
"type": "object",
"required": [
"address"
],
"properties": {
"chains": {
"type": "string",
"description": "comma list of ethereum, base, arbitrum, polygon (default: all EVM chains for a 0x address)"
},
"address": {
"type": "string",
"description": "0x address or ENS name (lowercase a-z, 0-9, hyphen)"
}
}
}Use when you need native and stablecoin balances for a list of wallets: up to 25 addresses (0x or ENS names) in one POST. Returns the exact paid x402 request for your input (POST /wallet/balance/batch, $0.075 per call), with the response schema and an example; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For one wallet use wallet_balance.
| Argument | Type | Description |
|---|---|---|
| chains | string | optional, for every address: comma list of chains, as in the single call |
| addresses* | array | 1 to 25 addresses; duplicates are removed |
{
"type": "object",
"required": [
"addresses"
],
"properties": {
"chains": {
"type": "string",
"maxLength": 120,
"description": "optional, for every address: comma list of chains, as in the single call"
},
"addresses": {
"type": "array",
"items": {
"type": "string",
"maxLength": 255
},
"maxItems": 25,
"minItems": 1,
"description": "1 to 25 addresses; duplicates are removed"
}
}
}Use for a rule-based risk label on an EVM address before paying it: exact OFAC SDN match, contract or plain account (Base, Ethereum), outgoing transaction count (Base, Ethereum, Arbitrum, Polygon). Returns the exact paid x402 request for your input (GET /wallet/risk, $0.01 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. For an ERC-20 token use token_risk; for an OFAC-only check of many addresses use sanctions_screening_batch.
| Argument | Type | Description |
|---|---|---|
| address* | string | EVM address (0x + 40 hex); ENS names are not resolved here |
| request_key | string | Idempotency key, echoed back |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "EVM address (0x + 40 hex); ENS names are not resolved here"
},
"request_key": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]{1,64}$",
"description": "Idempotency key, echoed back"
}
}
}Overall statistics of the x402 service market: catalog size, median price per call, total 30-day calls and unique payers, and the largest categories by paying demand. Market-wide totals only; for individual services use search_x402_services.
No arguments.
{
"type": "object",
"properties": {}
}Use when you test an x402 or MPP client, wallet, SDK, facilitator or CI: a test target for x402/MPP clients, use it in your integration tests. Returns the exact paid x402 request for your input (GET /x402/test, $0.001 per call), with the response schema and an example; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| dry | boolean | dry=1: free list of every accepted rail, nothing charged |
| msg | string | Any text; echoed back in echo.query. Any other query parameter or a POST body (hashed) works too |
{
"type": "object",
"required": [],
"properties": {
"dry": {
"type": "boolean",
"description": "dry=1: free list of every accepted rail, nothing charged"
},
"msg": {
"type": "string",
"maxLength": 500,
"description": "Any text; echoed back in echo.query. Any other query parameter or a POST body (hashed) works too"
}
}
}