Hearth: x402 Pay-Safety & Discovery

io.sslip.138-197-15-135Published by 138-197-15-135.sslip.ioOfficial publisherv1.2.0Updated Oct 30, 2026

Check x402 APIs before paying (pay/caution/avoid); find x402 APIs by real paid usage.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingFinanceSecurity & Monitoring

Overview

AI-generated overview

Pay-per-call x402 endpoint that lets an assistant vet x402 APIs before paying, discover them, and run onchain and web lookups for USDC fees.

What you can do
  • Check and rank x402 endpoints: pre-payment safety verdicts (pay/caution/avoid), batch checks of up to 10 URLs, and discovery of x402 APIs ranked by real paying usage.
  • Look up EVM chain data on Base, Ethereum, Arbitrum and Optimism: wallet and ERC20 balances, token metadata and prices, gas, blocks, transaction status, NFT owner and metadata, transfers, DEX quotes, contract ABIs and ENS/Basename resolution.
  • Profile wallets: multi-chain portfolio with USD values, plus one-call Base and Solana wallet profiles with holdings, activity and counterparties.
  • Assess risk and markets: token honeypot/rug-risk scoring, crypto market overview, Solana SOL balance.
  • Research the web and projects: page…
When to use it
Useful when an agent pays for x402 APIs and needs to screen endpoints before spending, or when it needs quick deterministic onchain data across Base, Ethereum, Arbitrum, Optimism and Solana plus light web research, without managing its own RPC or API keys.
Requirements
Remote streamable HTTP endpoint; nothing to install. No authentication or environment variables declared. Each tool call is paid in USDC on Base via x402, with the payment passed in the request metadata; calling without payment returns the requirements. Network access to the endpoint and the chains it queries.
Before you install
Every tool call costs money in USDC on Base (roughly $0.001 to $0.02 per call, with batch checks priced per URL), so agent loops can spend funds. Payments are made from a wallet the assistant controls. Queries send wallet addresses, contract addresses and URLs to a third-party server, and the AI tools fetch public web pages on your behalf.

Installation

In SourceWeft

  1. Open Hearth: x402 Pay-Safety & Discovery in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.sslip.138-197-15-135%2Fhearth-onchain/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "hearth-x402-pay-safety-discovery": {
      "type": "http",
      "url": "https://138-197-15-135.sslip.io/mcp"
    }
  }
}

Tools

28

x402_precheck

x402 pre-payment safety check: pay / caution / avoid. Before your agent pays an unknown x402 endpoint, check it ($0.005). Give an x402 URL and/or payTo; optional maxPrice to catch bait-and-switch. Live unpaid probe (GET then POST) parsing x402 v1 body AND v2 header; canonical USDC contract, network, price, timeout; payTo hijack / v1-v2 mismatch; payTo wallet on Base: ~75h of USDC inflows, distinct payers, self-funding concentration, fresh-wallet; Coinbase Bazaar + PayAI 30-day payers/calls with wallet-farming, keep-alive self-payment and listing-carpet detection; price vs median of comparable paid listings. Returns schema hearth.precheck.v2: verdict (pay/caution/avoid), allow, 0-100 score, confidence, coded reasons [{code,severity,detail}] and signals. Batch: /v1/x402/precheck-batch. Example output: {"schema":"hearth.precheck.v2","verdict":"pay","allow":true,"score":90,"confidence":"high","reasons":[],"signals":[{"code":"valid_402","severity":"info","detail":"valid x402 v2 challenge via POST"},{"code":"organic_catalog_usage","severity":"info","detail":"92 payers / 8960 calls in 30d"}],"priceUsd. Price: $0.005 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

ParametersurldeeppayTomethodmaxPrice

x402_precheck_batch

Batch x402 precheck: up to 10 URLs in one call. Run the full hearth.precheck.v2 check on up to 10 x402 URLs at once ($0.025, i.e. $0.0025 each). Pass urls as a comma-separated list (or JSON body {"urls": "a,b"}). Returns one result per URL plus a summary of pay/caution/avoid counts. Example output: {"count":2,"summary":{"pay":2,"caution":0,"avoid":0},"results":[{"url":"https://api.exa.ai/search","verdict":"pay","score":90}]}. Price: $0.025 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

ParametersurlsrequiredmaxPrice

x402_discover

Find the best x402 API for a task (ranked by real paying usage). Describe what you need (e.g. 'token holder analysis on base', 'web search', 'flight prices') and get the top x402 endpoints ranked by relevance and REAL payer quality: 30-day unique paying wallets, calls per payer (repeat usage), recency. Filters out unused, keep-alive self-paid and wallet-farmed listings that inflate the free catalog search. Covers Coinbase Bazaar + PayAI, refreshed nightly. Returns URL, price, method, input schema/example, networks, payTo, usage stats and a LIVE 402 probe per pick (dead endpoints sink). $0.005. Optional maxPrice (USD) and network filters. Example output: {"q":"web search","results":[{"url":"https://…/search","priceUsd":0.01,"usage30d":{"payers":120,"calls":4000,"callsPerPayer":33.3},"signal":"organic repeat usage"}]}. Price: $0.005 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

ParametersnqrequirednetworkmaxPrice

base_erc20_balance

ERC20 token balance on Base. ERC20 balance of any wallet on Base, Ethereum, Arbitrum or Optimism (USDC by default) via balanceOf, with decimals applied. Deterministic, no LLM. Example output: {"chain":"base","wallet":"0x…","token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","raw":"1500000","decimals":6,"balance":"1.5"}. Price: $0.0025 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parameterschaintokenwalletrequired

base_token_info

ERC20 token metadata on Base. Name, symbol, decimals, total supply and bytecode presence for a token contract on Base, Ethereum, Arbitrum or Optimism. Deterministic, no LLM. Example output: {"chain":"base","address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","name":"USD Coin","symbol":"USDC","decimals":6,"totalSupply":"…","isContract":true}. Price: $0.004 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parameterschainaddressrequired

base_tx_status

Transaction status on Base. Status of a transaction on Base, Ethereum, Arbitrum or Optimism: pending/success/failed, block, confirmations, from/to, gas used, log count. Deterministic, no LLM. Example output: {"chain":"base","hash":"0x…","status":"success","blockNumber":1,"confirmations":10,"from":"0x…","to":"0x…","gasUsed":"21000","logs":0}. Price: $0.004 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametershashrequiredchain

base_wallet

Wallet snapshot on Base. Native ETH balance, nonce (tx count) and whether the address is a contract, on Base, Ethereum, Arbitrum or Optimism. Deterministic, no LLM. Example output: {"chain":"base","address":"0x…","ethWei":"0","eth":"0","nonce":0,"isContract":false,"block":1}. Price: $0.0025 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parameterschainaddressrequired

evm_gas

Gas price and fee estimate. Current gas price, base fee, suggested priority fee and EIP-1559 maxFee for Base, Ethereum, Arbitrum or Optimism, plus a 21000-gas transfer cost in native units. Deterministic, no LLM. Example output: {"chain":"base","block":1,"gasPriceGwei":"0.01","baseFeeGwei":"0.005","priorityFeeGwei":"0.001","maxFeeGwei":"0.011","transferCostEth":"0.00000021"}. Price: $0.001 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parameterschain

evm_block

Latest block or block by number. Block number, timestamp, hash, tx count, gas used/limit and base fee for the latest (or given) block on Base, Ethereum, Arbitrum or Optimism. Deterministic, no LLM. Example output: {"chain":"base","number":1,"hash":"0x…","timestamp":1700000000,"iso":"2026-01-01T00:00:00.000Z","txCount":100,"gasUsed":"1","gasLimit":"1","baseFeeGwei":"0.01"}. Price: $0.001 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parameterschainnumber

token_price

Token USD price. Current USD price for a token contract on Base, Ethereum, Arbitrum or Optimism (or the chain's native ETH if no address), with symbol, decimals and confidence. Aggregated from public DeFi price feeds. Deterministic, no LLM. Example output: {"chain":"base","address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","priceUsd":0.9997,"decimals":6,"confidence":0.99,"timestamp":1700000000}. Price: $0.0035 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parameterschainaddress

name_resolve

ENS / Basename resolve. Resolve an ENS name (vitalik.eth) or Basename (jesse.base.eth) to an address, or an address to its verified primary ENS name. On-chain, deterministic, no LLM. Example output: {"input":"vitalik.eth","name":"vitalik.eth","address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","registry":"ethereum"}. Price: $0.0045 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametersinputrequired

nft_owner

NFT owner (ERC-721). Current owner of an ERC-721 token (ownerOf) on Base, Ethereum, Arbitrum or Optimism. Deterministic, no LLM. Example output: {"chain":"base","contract":"0x…","tokenId":"1","owner":"0x…"}. Price: $0.0025 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

ParameterschaintokenIdrequiredcontractrequired

nft_metadata

NFT metadata. tokenURI and resolved JSON metadata (name, description, image, attributes) for an ERC-721 or ERC-1155 token on Base, Ethereum, Arbitrum or Optimism. IPFS/Arweave resolved. Deterministic, no LLM. Example output: {"chain":"base","contract":"0x…","tokenId":"1","tokenUri":"ipfs://…","metadata":{"name":"…","image":"ipfs://…","imageUrl":"https://ipfs.io/ipfs/…","attributes":[]}}. Price: $0.007 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

ParameterschaintokenIdrequiredcontractrequired

solana_balance

Solana SOL balance. Native SOL balance (lamports and SOL) for any Solana address. Deterministic, no LLM. Example output: {"chain":"solana","address":"…","lamports":1000000000,"sol":"1","slot":1}. Price: $0.0025 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametersaddressrequired

token_safety

Token safety / honeypot / rug-risk check. Scam check for an ERC20 on Base, Ethereum, Arbitrum or Optimism: honeypot, buy/sell tax, mintable, owner can change balances, proxy, blacklist, open source, holder concentration, LP lock. Returns a 0-100 risk score, a verdict (low/medium/high) and the flags behind it. Use before buying or accepting a token. Deterministic, no LLM. Example output: {"chain":"base","address":"0x8335…2913","name":"USD Coin","symbol":"USDC","riskScore":5,"verdict":"low","flags":["proxy contract"],"buyTax":0,"sellTax":0,"holders":11378198,"top10HolderPercent":41.2,"isHoneypot":false,"source":"goplus+onchain"}. Price: $0.009 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parameterschainaddressrequired

wallet_portfolio

Multi-chain wallet portfolio with USD values. One call: ETH, WETH, USDC and USDT balances for an address across Base, Ethereum, Arbitrum and Optimism, each with a USD value, plus the total USD value and per-chain subtotals. Deterministic, no LLM. Example output: {"address":"0xd8dA…6045","totalUsd":15234.12,"chains":{"base":{"usd":120.5,"assets":[{"symbol":"ETH","amount":"0.05","usd":116.3}]}},"ethPriceUsd":2326}. Price: $0.008 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametersaddressrequired

token_transfers

Recent ERC20 transfers for a token or wallet. Recent ERC20 Transfer events (decoded: from, to, amount with decimals, symbol, tx hash, block) for a token contract, a wallet, or both, over the last ~2,000 blocks on Base, Arbitrum or Optimism (~500 on Ethereum). Up to 50 newest. Deterministic, no LLM. Example output: {"chain":"base","fromBlock":1,"toBlock":2,"count":1,"transfers":[{"token":"0x…","symbol":"USDC","from":"0x…","to":"0x…","amount":"12.5","tx":"0x…","block":2}]}. Price: $0.0045 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parameterschaintokenblockswallet

dex_quote

DEX swap quote (Uniswap v3). Best Uniswap v3 single-hop quote for swapping amountIn of tokenIn to tokenOut on Base, Ethereum, Arbitrum or Optimism, checking all fee tiers (0.01/0.05/0.3/1%). Returns amountOut, effective price, best fee tier, gas estimate. Tokens: ETH, USDC, USDT or 0x address. Read-only quote; no swap is executed. Deterministic, no LLM. Example output: {"chain":"base","tokenIn":"WETH","tokenOut":"USDC","amountIn":"1","amountOut":"2325.41","price":2325.41,"feeTier":500,"gasEstimate":"90000","venue":"uniswap-v3"}. Price: $0.0045 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

ParameterschaintokenInrequiredamountInrequiredtokenOutrequired

contract_abi

Contract verification and ABI. Whether a contract on Base, Ethereum, Arbitrum or Optimism is source-verified (Sourcify), its name, compiler, full ABI, function and event signatures, and its EIP-1967 proxy implementation (also looked up). Deterministic, no LLM. Example output: {"chain":"base","address":"0x…","isContract":true,"verified":true,"match":"exact_match","name":"FiatTokenProxy","compiler":"0.6.12","proxyImplementation":"0x…","functions":["admin()"],"events":["Upgraded(address)"],"abi":[]}. Price: $0.004 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parameterschainaddressrequired

ai_tx_explain

Explain a transaction in plain English (AI). Plain-English explanation of any transaction on Base, Ethereum, Arbitrum or Optimism: what happened, who sent what to whom (decoded token transfers with amounts and symbols), the method called, fee paid, and success/failure. Returns a summary plus the structured facts it is based on. Example output: {"chain":"base","hash":"0x…","summary":"Wallet 0xa729… sent 0.0009 USDC to 0x1074… (an x402 payment), settled by a facilitator. Succeeded; fee ~$0.0001.","facts":{"status":"success","method":"0xe3ee160e","transfers":[]}}. Price: $0.015 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametershashrequiredchain

ai_summarize

Summarize a web page (AI). Fetch a public web page and return a concise summary: title, 3-7 key points, a one-paragraph TL;DR and the page's main entities. Good for research agents that need the gist of a URL cheaply. Example output: {"url":"https://example.com","title":"Example Domain","tldr":"…","keyPoints":["…"],"entities":["IANA"]}. Price: $0.015 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametersurlrequiredfocus

ai_extract

Extract structured JSON from a web page (AI). Fetch a public web page and extract the fields you name into clean JSON (e.g. fields=name,price,currency,availability or company,ceo,founded). Missing values come back as null. Up to 20 fields. Example output: {"url":"https://example.com","data":{"title":"Example Domain","contact_email":null,"description":"…"}}. Price: $0.02 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametersurlrequiredfieldsrequired

company_enrich

Company / domain enrichment from its website. Enrich a company domain: name, title, description, social profiles (LinkedIn, X, GitHub, etc.), contact emails and phones found on the homepage, language, tech hints (frameworks, analytics), mail provider from MX records, and key pages (about, pricing, careers, contact). Deterministic, no LLM, public data only. Example output: {"domain":"stripe.com","name":"Stripe","description":"Financial infrastructure...","socials":{"linkedin":"https://www.linkedin.com/company/stripe"},"emails":[],"mailProvider":"google","tech":["next.js"],"pages":{"pricing":"https://stripe.com/pricing"}}. Price: $0.01 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametersdomainrequired

social_hn

Hacker News search (stories and comments). Search Hacker News stories or comments by keyword, newest or most relevant first, with points, comment count, author, URL and HN link. Good for tracking mentions of a product, company or topic. Deterministic, no LLM. Example output: {"q":"x402","count":1,"hits":[{"title":"...","url":"...","points":12,"comments":3,"author":"pg","createdAt":"2026-01-01T00:00:00Z","hn":"https://news.ycombinator.com/item?id=1"}]}. Price: $0.003 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametersnqrequiredsorttype

github_repo

GitHub repo stats and latest release. GitHub repository snapshot: stars, forks, open issues, watchers, language, license, topics, created/pushed dates, default branch, latest release (tag, date) and archived flag. Deterministic, no LLM. Example output: {"repo":"coinbase/x402","stars":1000,"forks":200,"openIssues":50,"language":"TypeScript","license":"Apache-2.0","latestRelease":{"tag":"v1.0.0","publishedAt":"2026-01-01T00:00:00Z"}}. Price: $0.003 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametersreporequired

market_overview

Crypto market overview: total cap, dominance, trending. Crypto market snapshot: total market cap and 24h volume (USD), 24h market-cap change, BTC/ETH dominance, active coins, plus the top trending coins (name, symbol, market-cap rank, price, 24h change). Deterministic, no LLM. Example output: {"totalMarketCapUsd":3100000000000,"totalVolumeUsd":120000000000,"marketCapChange24hPct":-0.8,"dominance":{"btc":57.1,"eth":11.9},"trending":[{"name":"Bitcoin","symbol":"BTC","rank":1,"priceUsd":100000,"change24hPct":1.2}]}. Price: $0.004 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Takes no parameters.

solana_wallet_profile

Solana wallet intelligence: holdings, activity, counterparties, programs. One-call Solana wallet profile: SOL and SPL/Token-2022 holdings with USD values (top 25 by value), total USD, recent activity (last 100 signatures: count, failure rate, first/last seen, tx per day), programs used with labels (Jupiter, Raydium, Orca, Pump.fun, Meteora, Drift...), top counterparties from the last 15 transactions, and a simple wallet type (bot-like / trader / holder / inactive). Free public data, deterministic, no LLM. Cheaper than comparable Solana wallet-intel APIs. Example output: {"address":"…","solBalance":1.2,"totalUsd":512.3,"holdings":[{"mint":"EPjF…","symbol":"USDC","amount":300,"usd":300}],"activity":{"sampled":100,"failed":2,"txPerDay":4.1,"lastSeen":"2026-10-27T18:00:00Z"},"programs":[{"id":"JUP6…","label":"Jupiter v6","count":8}],"counterparties":[{"address":"…","co. Price: $0.012 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametersaddressrequired

base_wallet_profile

Base wallet intelligence: holdings, activity, counterparties, labels. One-call Base wallet profile: ETH and major token holdings (USDC, WETH, USDT, DAI, cbBTC, cbETH, AERO, EURC) with USD values, total USD, nonce (lifetime sent tx count), EOA vs contract (incl. EIP-7702 smart account), recent ERC20 transfers in/out over ~5,000 blocks (~3h) with net flow, top counterparties labeled where known (Uniswap, Aerodrome, 1inch, 0x, Aave, Seaport, bridges), and a simple wallet type. Free public data, deterministic, no LLM. Example output: {"address":"0x…","isContract":false,"nonce":1200,"ethBalance":"0.5","totalUsd":2100.4,"holdings":[{"symbol":"USDC","amount":"900","usd":900}],"recent":{"blocks":5000,"transfersIn":3,"transfersOut":5},"counterparties":[{"address":"0x6ff5…","label":"Uniswap Universal Router","count":4}],"walletType":". Price: $0.012 USDC on Base via x402 (pass the payment in _meta["x402/payment"]).

Parametersaddressrequired

Version history

1
  1. v1.2.0LatestOct 29, 2026

Score

72% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts

    Publish an icon in the registry entry.

  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.