XHAGENTS> Endpoint Catalogue

x402 · USDC on Base · pay-per-call

Every x402 resource an agent can discover and pay for

Every endpoint below is live in production and answers 402 Payment Required with its own payment challenge, settling in USDC on Base per call — no API key, no account. Each one is registered on x402scan (the Coinbase Bazaar crawler picks up a subset of them — indexing there is selective, so we claim only what is verifiable). The exact price is quoted in the challenge itself and listed in openapi.json.

Data & intelligence

Live market, wallet, token and chain checks served from our own workers on Base.

POST /api/arkham-intel/counterparties

Arkham-style intel — counterparty due diligence

Who an address transacts with in a window: counterparties ranked by USD volume and transfer count, each with an on-chain verified class, first/last seen, and a flag only when the curated label file marks it. An empty flag list means nothing is curated, never 'clean'. Computed fro

Sample call and response
curl -X POST https://xhagents.xyz/api/arkham-intel/counterparties -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/arkham-intel/exchange-flow

Arkham-style intel — pool inflow/outflow

Inflow/outflow for an ERC-20 token on Base, measured where it is verifiable: each of the token's deepest pools has its own balance of the token read at two blocks, so the change, direction (into pool = sell side, out = bought) and USD value are real numbers, with the pool's price

Sample call and response
curl -X POST https://xhagents.xyz/api/arkham-intel/exchange-flow -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/arkham-intel/portfolio

Arkham-style intel — wallet portfolio snapshot

Holdings of a Base wallet with USD values at request time (native + the ERC-20s you name), each token's verified class, and the totals. A snapshot, not a historical curve. Computed from public Base chain data. This is not Arkham and holds no Arkham API key: the response states it

Sample call and response
curl -X POST https://xhagents.xyz/api/arkham-intel/portfolio -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/arkham-intel/trace

Arkham-style intel — fund trace for investigations

Hop-by-hop follow of USDC outflows from an address (up to 3 hops) with each destination's verified class, curated labels and flagged venues on the path. Evidence with an explicit boundary: not an attribution or sanctions product. Computed from public Base chain data. This is not

Sample call and response
curl -X POST https://xhagents.xyz/api/arkham-intel/trace -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/arkham-intel/use-cases

Arkham-style intel — use-case router

Given a role (traders, builders, brokers, investigators) or a task in plain words, returns the ordered call plan across the XH Arkham-intel endpoints, mapped to the use cases Arkham published (inflow/outflow monitoring, portfolio monitoring, counterparty due diligence, know-your-

Sample call and response
curl -X POST https://xhagents.xyz/api/arkham-intel/use-cases -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/arkham-intel/venue-users

Arkham-style intel — venue users, VIPs and flagged funders

The broker view of a venue (a contract or wallet users pay into): every wallet that transacted with it in the window, the value segments of the book, VIP candidates by volume, which wallets went quiet, and which funding wallets carry a curated flag. Computed from public Base chai

Sample call and response
curl -X POST https://xhagents.xyz/api/arkham-intel/venue-users -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/chat

Ask the XH Agents AI Trading Assistant

Market-aware answer to a question about crypto assets, priced per message, with live prices fetched at the moment of the request.

Sample call and response
curl -X POST https://xhagents.xyz/api/chat -H 'Content-Type: application/json' -d '{}'
{"reply":"BTC is trading near …","engine":"xh-chatengine","credits_left":1}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/company-enrich

People & company enrichment

Enriches a company, domain or person from public structured sources (Wikidata, the public LinkedIn company page, Clearbit autocomplete): industry, size, headquarters, founding year, official website, stock listing and social handles.

Sample call and response
curl -X POST https://xhagents.xyz/api/company-enrich -H 'Content-Type: application/json' -d '{}'
{"query":"Coinbase","sources":["wikidata","linkedin-public","clearbit-autocomplete"],
 "resolved":{"wikidata_id":"Q16972754","industry":["cryptocurrency exchange","fintech"],
 "headquarters":"San Francisco","inception":"2012","stock_exchange":["Nasdaq"]},
 "linkedin":{"company_size":"1,001-5,000 employees","followers":1489647}}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/daily-drop

XH Agents Daily Drop — dated demand brief

A dated brief rebuilt every day: what builders and agents are discussing and paying for in the agent-payment economy over the last 30 days (Hacker News, GitHub, Polymarket, marketplace listings) plus our own paid-endpoint call and settlement numbers. Yesterday's copy is not today

Sample call and response
curl -X POST https://xhagents.xyz/api/daily-drop -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/defi-sentiment

Asset and protocol sentiment from public data

Perpetual funding rate, open interest and price trend for an asset (Binance public data) plus protocol TVL change (DefiLlama), combined into a labelled score whose inputs and weights are shown.

Sample call and response
curl -X POST https://xhagents.xyz/api/defi-sentiment -H 'Content-Type: application/json' -d '{}'
{"asset":"BTC","sentiment":"neutral","score":0.08,
 "funding_rate_8h_pct":"0.0089","open_interest_usd":412000000,
 "protocol_tvl":{"slug":"aerodrome","tvl_usd":380000000,"change_24h_pct":1.1}}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

GET · POST /api/document-extract

Document to text (PDF, scans, images, DOCX, HTML)

Document to text. Send a public URL or the file's base64: PDF (native text, with an OCR fallback for scanned pages), an image (PNG/JPEG/WEBP via OCR), DOCX, HTML or plain text. Returns the text, the method used per page, page and word counts, the sha256 of the exact bytes read, a

Sample call and response
curl -X POST https://xhagents.xyz/api/document-extract -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

GET · POST /api/domain-audit

Domain & email audit — SPF, DMARC, DKIM, MX, TLS, headers

Domain and email deliverability audit, scored 0-100. Measures live: SPF (mechanisms parsed against the RFC 7208 lookup limit), DMARC (policy, pct, rua, alignment), DKIM on the common selectors (with wildcard detection so an empty-p= blanket answer is not counted as a key), MX (in

Sample call and response
curl -X POST https://xhagents.xyz/api/domain-audit -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/gas-tracker

Base gas right now

Current Base base fee, suggested priority fees (low/medium/high) and USD cost estimates for a plain transfer and an ERC-20 transfer.

Sample call and response
curl -X POST https://xhagents.xyz/api/gas-tracker -H 'Content-Type: application/json' -d '{}'
{"chain":"base","block_number":51880546,"base_fee_gwei":0.005,
 "priority_fee_gwei":{"low":0.001,"medium":0.002,"high":0.005},
 "usd_estimate":{"transfer_21000":"0.0001","erc20_transfer_65000":"0.0003"}}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

GET · POST /api/hundred-x-hunter

XH cycle-wallet hunt (seven-step 'next 100x' method)

The seven-step cycle-wallet hunt on Base. Give it a coin from a previous cycle and it does the work the method describes: reads that token's earliest transfers and lists its first buyers, keeps only the wallets that traded in the last N days, drops the machines (any wallet whose

Sample call and response
curl -X POST https://xhagents.xyz/api/hundred-x-hunter -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/kb/ask

Ask the XH Agents knowledge base

Answers a question from 15 curated field notes about running self-hosted infrastructure, x402 payments and agent tooling. Returns the best matching entries.

Sample call and response
curl -X POST https://xhagents.xyz/api/kb/ask -H 'Content-Type: application/json' -d '{}'
{"best_match":{"id":"nginx-docroot","title":"Which docroot does nginx really serve?"},
 "matches":3}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/payment-verify

Verify a USDC settlement

Verifies that a transaction hash settled a USDC payment on Base to a given recipient, and reports who funded it: the payer from the Transfer log (topics[1]) versus the account that broadcast the transaction (tx.from) - they differ when a facilitator settles an EIP-3009 transferWi

Sample call and response
curl -X POST https://xhagents.xyz/api/payment-verify -H 'Content-Type: application/json' -d '{}'
{"tx_hash":"0x3ddcb67f…","verified":true,"reason":"ok",
 "transfer":{"from":"0x85fc53d6…","to":"0x6cb53f00…","value_atomic":2000000,"block":51825798}}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/social-data

Social media data (X/Twitter + LinkedIn)

Pulls one X/Twitter post by URL or id (text, author, metrics, language) and/or a public LinkedIn company page (industry, size, headquarters, specialties, followers).

Sample call and response
curl -X POST https://xhagents.xyz/api/social-data -H 'Content-Type: application/json' -d '{}'
{"sources":["x-syndication","linkedin-public"],
 "x_tweet":{"id":"20","text":"just setting up my twttr","author":{"screen_name":"jack"},
 "metrics":{"likes":310997}},
 "linkedin":{"name":"Coinbase","industry":"Financial Services","headquarters":"Remote First"}}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/token-check

Check an ERC-20 token on Base

ERC-20 metadata, EIP-1967 proxy detection and free DEX liquidity/volume data, plus an explicit list of the checks that were NOT performed (no honeypot simulation, no holder concentration).

Sample call and response
curl -X POST https://xhagents.xyz/api/token-check -H 'Content-Type: application/json' -d '{}'
{"token":"0x833589fcd…","is_contract":true,"name":"USD Coin","symbol":"USDC",
 "decimals":6,"is_proxy":false,"dex":{"liquidity_usd":296000000.0},
 "not_checked":["honeypot simulation","holder concentration"]}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

GET · POST /api/token-safety

Token safety score (Base) — safe / caution / danger, or not_a_token with no score

One 0-100 safety score for a Base token before an agent buys: liquidity, top-10 holder concentration, owner powers in the bytecode, upgradeability (EIP-1967), explorer/Sourcify verification, creator history, small-trade price impact. Verdicts: safe/caution/danger per component, u

Sample call and response
curl -X POST https://xhagents.xyz/api/token-safety -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

GET · POST /api/trust-leaderboard

x402 seller trust leaderboard — ranked origins

The x402 seller trust leaderboard. We sweep the public x402 catalogue, take one representative endpoint per origin, and score it with the same trust layer sold as /api/x402-trust: unpaid 402 behaviour, challenge conformance, discovery documents, on-chain payTo reputation and pric

Sample call and response
curl -X POST https://xhagents.xyz/api/trust-leaderboard -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/video-license

XH Animations video licence — one film master

Licence one of the four XH Animations masters from Ataraxia: 109 seconds of 21x-extended looping ambient footage, delivered as a time-limited signed URL with HTTP Range support, so an agent can stream or download exactly the seconds it needs. Pick a video_id from GET /api/video-l

Sample call and response
curl -X POST https://xhagents.xyz/api/video-license -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/wallet-profile

Profile an address on Base

Balances, contract status, nonce, recent USDC activity and known-address labels for any Base address. States its window and what it could not check.

Sample call and response
curl -X POST https://xhagents.xyz/api/wallet-profile -H 'Content-Type: application/json' -d '{}'
{"address":"0x6cb53f00…","chain_id":8453,"is_contract":true,
 "balance_usdc":"2.000000","nonce":1,"recent_usdc_transfers":6}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/whale-watch

Large recent transfers on Base

Scans the last blocks for USDC or WETH transfers above a USD threshold and returns the largest movements with direction, counterparties and labels. Pending mempool visibility requires a node with txpool access, which is stated rather than faked.

Sample call and response
curl -X POST https://xhagents.xyz/api/whale-watch -H 'Content-Type: application/json' -d '{}'
{"token":"USDC","blocks_scanned":200,"threshold_usd":50000.0,"events_found":1240,
 "largest":[{"amount":1250000.0,"from":"0x…","to":"0x…","tx_hash":"0x…"}]}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/x402-check

Conformance report for any x402 endpoint

Fetches any x402 endpoint, decodes its 402 challenge and reports conformance: version, accepts fields, atomic amount, PAYMENT-REQUIRED transport and bazaar metadata, with the price and payTo extracted. Refuses private and loopback targets.

Sample call and response
curl -X POST https://xhagents.xyz/api/x402-check -H 'Content-Type: application/json' -d '{}'
{"url":"https://xhagents.xyz/api/kb/ask","reachable":true,"status":402,
 "conformant":true,"x402Version":2,"failed_checks":[]}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

POST /api/x402-directory

Search the x402 ecosystem

Searches Coinbase Bazaar (authenticated discovery) and the public x402-list directory at once, merges results by URL and returns endpoints with price, network, payTo and description — so an agent can find a service it did not already know.

Sample call and response
curl -X POST https://xhagents.xyz/api/x402-directory -H 'Content-Type: application/json' -d '{}'
{"query":"gas","sources":{"coinbase-bazaar":"ok","x402-list":"ok"},"results":5,
 "endpoints":[{"url":"https://xhagents.xyz/api/gas-tracker","sources":["coinbase-bazaar","x402-list"]}]}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

GET · POST /api/x402-trust

x402 trust layer — score an endpoint before you pay it

Check an x402 endpoint before paying it. Give it any x402 URL: it makes the unpaid request, decodes the 402 challenge, reads the origin's .well-known/x402 and openapi.json, inspects the payTo address on-chain (USDC inflows, distinct senders, EOA vs contract vs smart-wallet delega

Sample call and response
curl -X POST https://xhagents.xyz/api/x402-trust -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

Knowledge products

Everything we learned shipping this, delivered in one call.

POST /api/compute/xh-bundle

XH Agents — Build & Ship an x402 Paid API

Twelve playbooks from running paid x402 endpoints in USDC on Base: shipping the endpoint, the payment-verifier rules, the real-money buyer test, the Base RPC capability audit, CDP authentication, directory registration, consolidating Cloudflare/Solana data, an rclone Google Drive

12 playbooks in one call

Sample call and response
curl -X POST https://xhagents.xyz/api/compute/xh-bundle -H 'Content-Type: application/json' -d '{}'
{"bundle":"XH Agents — Build & Ship an x402 Paid API","version":"1.0.0",
 "items_total":12,"items_returned":12,
 "items":[{"id":"ship-x402-endpoint","title":"Ship a new x402 paid endpoint end to end"}]}

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

How-to playbooks

Step-by-step SOPs with the commands and the failures behind them.

GET · POST /api/howto/create-x402-endpoint

Build an x402 paid endpoint that passes the validator, gets indexed and takes real USDC

End-to-end recipe for turning any HTTP capability into an x402 endpoint that an unknown agent can find, pay for and consume: the payment gate, the verifier rules, per-route pricing, the concurrency traps, the nginx wiring, the discovery surface, plus the money-path bugs we only f

15 steps · 10 documented pitfalls

Sample call and response
curl -X POST https://xhagents.xyz/api/howto/create-x402-endpoint -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

GET · POST /api/howto/vps-gdrive-connect

Connect a headless VPS to a user's Google Drive (rclone, no browser on the server)

Give a server permanent, scriptable access to someone else's Google Drive: one interactive authorisation on a machine with a browser, then bidirectional sync from the server forever. This is the exact flow we use for both a personal Drive bridge and a scheduled VPS backup.

9 steps · 8 documented pitfalls

Sample call and response
curl -X POST https://xhagents.xyz/api/howto/vps-gdrive-connect -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

GET · POST /api/howto/x402-register

Register an x402 endpoint so agents can find and pay it (x402scan + Coinbase Bazaar)

The complete discovery path for an x402 endpoint: publish machine-readable discovery documents, pass the official validator, list on x402scan, understand what actually triggers Coinbase Bazaar indexing, and prove the listing exists from the registry's own API instead of a success

13 steps · 10 documented pitfalls

Sample call and response
curl -X POST https://xhagents.xyz/api/howto/x402-register -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

GET · POST /api/howto/youtube-auto-ai

YouTube Shorts automation with AI: queue → render → upload → notify

A 3x/day pipeline that takes product photos from Google Drive, renders a 720x1280 Shorts video with Ken Burns motion, uploads it to YouTube via the Data API v3, updates a static showcase page and reports to Telegram. Every step below ran in production; the numbers are the ones we

12 steps · 9 documented pitfalls

Sample call and response
curl -X POST https://xhagents.xyz/api/howto/youtube-auto-ai -H 'Content-Type: application/json' -d '{}'

    

An unpaid call answers 402 with the payment challenge; the price is quoted there and in openapi.json.

Secondary hosts

Older endpoint sets we keep online: Cloudflare edge and Solana.

x402 x402-cf-worker.mulberry-boar.workers.dev

b0x402 — Cloudflare Worker

The original x402 seller experiment at the edge: meme signals, DeFi sentiment, market equilibrium and wallet profiling.

Endpoints on this host
  • /v1/meme-hunter
  • /v1/defi-sentiment
  • /v1/dinalibrium
  • /v1/wallet-profile
  • /health

Kept online as a secondary endpoint set. The registered catalogue is the VPS-hosted API.

x402 pronomad.duckdns.org

b0x402 — Solana (pronomad)

The same idea on Solana mainnet: token radar and honeypot checks, settled in USDC on Solana.

Endpoints on this host
  • /v1/meme-hunter
  • /v1/defi-sentiment
  • /v1/dinalibrium
  • /v1/wallet-profile
  • /v1/honeypot-check

Secondary chain, listed so an agent knows a Solana rail exists; Base is the primary catalogue.

How an agent pays

  1. Call an endpoint with no credentials; it answers 402 with the price, the network (eip155:8453), the asset (USDC) and the receiving address.
  2. Sign an EIP-3009 transfer authorisation for that amount — the payer needs USDC only, the facilitator pays the gas.
  3. Repeat the request with the signed authorisation in the X-PAYMENT header.
  4. The endpoint returns 200 with the answer plus a PAYMENT-RESPONSE settlement header you can verify on-chain. A call that fails is never charged.

Back to the main site · free SOP index /api/howto · discovery openapi.json and /.well-known/x402.