40 pay-per-call endpoints over the x402 protocol. Default settlement in USDC on Base, with request-bound signed rails across Base, Solana, XRPL, and Stellar when configured. Machine-readable at /bazaar.json.
POST /v1/cdp/echo
Smallest possible paid endpoint. Pay 0.001 USDC, get a JSON echo back. Reference implementation of the x402 + CDP Facilitator + Bazaar discovery loop.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/echo -H "content-type: application/json" -d '{}'
POST /v1/cdp/json-repair
Take any almost-JSON string (LLM tool output, broken API response, etc.), fix common errors (trailing commas, single quotes, unquoted keys, missing brackets), and optionally validate against a JSON Schema. Built for AI agents that wrap every tool call in defensive parsing.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/json-repair -H "content-type: application/json" -d '{}'
POST /v1/cdp/faker
Structured synthetic data on demand. Pass a template like { name: "person.fullName", email: "internet.email" } and a count, receive an array of records ready to seed forms, populate test databases, or feed mock data into prompt examples.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/faker -H "content-type: application/json" -d '{}'
POST /v1/cdp/render-pro
Full Playwright JS rendering + Readability extraction. Pay 0.05 USDC, get clean markdown back from any URL including SPAs and JS-heavy sites that naive fetch cannot crawl.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/render-pro -H "content-type: application/json" -d '{"url":"https://example.com"}'
POST /v1/cdp/web-watch
At $0.001 per check, monitor any public URL without carrying page state. BitBooth stores a payer-scoped SHA-256 baseline and reports whether the content, HTTP status, redirect, or content type changed. The first check returns changed:null; page content is never returned or stored. Built for frequent agent heartbeats, release monitors, and pricing alerts.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/web-watch -H "content-type: application/json" -d '{"url":"https://example.com"}'
POST /v1/cdp/xrpl-wallet-watch
Pay 0.001 RLUSD for an actionable XRPL agent-wallet heartbeat: spendable XRP after reserves, canonical RLUSD trust-line health and call runway, validated activity, balance deltas, failed transactions, and new destinations. The first call establishes a private payer-scoped baseline and skips historical activity.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/xrpl-wallet-watch -H "content-type: application/json" -d '{"address":"rfryheo6yzFdLWj8qUQtZc7zG9MKkBkUEy"}'
POST /v1/cdp/web-diff
Render any URL with full Playwright JS rendering, then return both the current markdown snapshot AND a structured diff against the previous snapshot. BitBooth stores the baseline server-side per payer wallet and URL, so a monitoring agent sends just a URL and learns whether the page changed, what changed, and when it was last checked, while carrying no state of its own. Supply previousMarkdown to diff against your own copy instead.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/web-diff -H "content-type: application/json" -d '{"url":"https://example.com"}'
POST /v1/cdp/llm-tool-validate
JSON Schema validation + optional auto-coercion + a confidence score for any LLM tool-call payload. Pair with /v1/cdp/json-repair to fix malformed JSON first, then validate against your tool schema. Built for agents that need a programmatic gate between the model and downstream system calls.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/llm-tool-validate -H "content-type: application/json" -d '{}'
POST /v1/cdp/portfolio-scan
Pay 0.012 USDC, hand in 1..5 EVM addresses, get back per-address native ETH + USDC holdings on Base mainnet plus a top-level totals rollup. Built for agents tracking treasury splits across multiple wallets or pre-flighting a counterparty across known addresses.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/portfolio-scan -H "content-type: application/json" -d '{}'
POST /v1/cdp/rss
Pay 0.008 USDC, get a normalised JSON view of any RSS 2.0 or Atom 1.0 feed. One shape regardless of protocol: feed metadata plus an items array with HTML-stripped content snippets. Capped at 2MB body and 10s timeout, SSRF-blocked. Built for agents monitoring news, releases, blog updates, GitHub release feeds, status pages, podcasts.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/rss -H "content-type: application/json" -d '{}'
POST /v1/cdp/sitemap
Pay 0.01 USDC, hand in a domain, get back the canonical site URL list discovered via robots.txt + sitemap.xml + sitemapindex chain. Returns a flat deduped list of {loc, lastmod, changefreq, priority} entries capped at 5000 URLs per call, with sitemapindex follow-through capped at 5 child sitemaps. SSRF-blocked, body-capped at 5MB, 10s timeout. Built for crawlers, SEO auditors, and agents that enumerate URLs before paying for the heavier render-pro extraction.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/sitemap -H "content-type: application/json" -d '{}'
POST /v1/cdp/dns
Pay 0.01 USDC, get DNS records for any hostname. Supports A, AAAA, MX, TXT, NS, CNAME, SOA, SRV, CAA. Built on Node's built-in resolver with a 5s timeout cap; rejects IPv4/IPv6 inputs. Built for agents inspecting infra, debugging delivery, or pre-flighting a target hostname.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/dns -H "content-type: application/json" -d '{}'
POST /v1/cdp/whois
Pay 0.01 USDC, get the parsed whois record for any domain — registrar, creation/updated/expiry dates, name servers, status flags, plus the raw whois text. Two-hop resolution via whois.iana.org then the authoritative registry over TCP port 43. 5s timeout cap per connection. Built for agents auditing domain ownership, monitoring expiry, or pre-flighting a target.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/whois -H "content-type: application/json" -d '{}'
POST /v1/cdp/webhook-sig-verify
Pay 0.005 USDC, verify a webhook signature against the provider canonical HMAC scheme. Supports stripe, github, vercel, cdp, slack, and generic HMAC-SHA256. Constant-time compare, clock-skew tolerance on timestamp-bearing providers. Stateless — caller supplies their secret in the request body, BitBooth never stores it. The boring API plumbing primitive every agent reinvents poorly.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/webhook-sig-verify -H "content-type: application/json" -d '{}'
POST /v1/cdp/jwt-verify
Pay 0.005 USDC, verify a JWT signature plus the canonical claims (iss / aud / exp / nbf) against an inline publicKey (PEM) or sharedSecret. Supports HS256/384/512 + RS256/384/512. Constant-time HMAC compare, configurable clock-skew tolerance, alg=none rejected. Stateless — caller supplies their key in the request body, BitBooth never stores it. Same plumbing-primitive thesis as webhook-sig-verify, different protocol family.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/jwt-verify -H "content-type: application/json" -d '{}'
POST /v1/cdp/pii-redact
Pay 0.008 USDC, strip emails, phones, SSNs, credit cards, IPv4 addresses, and hex-looking secrets from a text blob before passing it to an LLM, log sink, or third-party API. Pure regex — no LLM inference, deterministic output, sub-cent per call. Compliance primitive for agents in regulated industries (health, finance, legal). Byte counts on the response are auditable evidence of redaction for SOC2 / HIPAA logs.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/pii-redact -H "content-type: application/json" -d '{}'
POST /v1/cdp/regex-test
Pay 0.005 USDC, safely compile + run a regex against a corpus with a hard 50ms CPU deadline. Returns structured matches (index, length, full match, capture groups). Supports JS engine flags g/i/m/s/u/y/d. Catastrophic backtracking surfaces as a regex_timeout instead of stalling the caller. The plumbing primitive every agent that consumes user-supplied regex reinvents poorly.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/regex-test -H "content-type: application/json" -d '{}'
POST /v1/cdp/sentiment
Pay 0.005 USDC, get a VADER-style sentiment score for any English text blob — compound polarity in [-1, 1], a positive|neutral|negative label, a proportional breakdown across the three classes, and the token count. No LLM inference, deterministic output, sub-cent per call. Curated ~180-word lexicon with negation handling (×-0.74 within 3 tokens) and booster amplification (very/really/extremely ×1.293). Input capped at 10000 chars; tokenisation capped at 2000 tokens. Built for agents triaging support tickets, social mentions, review feeds, or chat transcripts before routing.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/sentiment -H "content-type: application/json" -d '{}'
POST /v1/cdp/og-card
Pay 0.01 USDC, send a URL, get the structured OpenGraph + meta-tag preview every link-preview / social-card / classify-before-scrape pipeline needs. Returns og:title, og:description, og:image, og:type, og:site_name, og:url, the full twitter:* card block, plus standard HTML head fields (title, description, canonical, favicon, lang). Pure JS regex extraction, no LLM, no headless browser. 8s timeout, 512 KB body cap, non-HTML rejected. The lightweight pre-flight before paying for the heavier render-pro extraction.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/og-card -H "content-type: application/json" -d '{}'
POST /v1/cdp/youtube
Pay 0.015 USDC, send a YouTube URL (youtube.com or youtu.be), get the full transcript as an array of {start, dur, text} segments in seconds plus total duration and detected language. Optional `lang` (ISO-639-1, e.g. "en", "pt-BR") selects a non-default caption track. InnerTube Android-client path first, classic HTML scrape fallback. No LLM, no headless browser. Errors surface as 502 with reason (captions_disabled, no_captions, language_not_available, video_unavailable, rate_limited). Built for agents that summarise, classify, or search video content before paying for the heavier LLM token cost.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/youtube -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/block-number
Latest block height for Ethereum or Base mainnet via eth_blockNumber. Pay 0.001 USDC, get the current chain tip as decimal + hex.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/block-number -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/chain-id
Chain ID (EIP-155) via eth_chainId — confirm which network an RPC is on. Pay 0.001 USDC. Supports Ethereum and Base mainnet.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/chain-id -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/gas-price
Current gas price via eth_gasPrice for Ethereum or Base mainnet — wei, gwei, and a human label. Pay 0.001 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/gas-price -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/network-info
Chain ID, latest block height, and gas price in one batched call for Ethereum or Base mainnet. Pay 0.002 USDC — three RPC reads, one receipt.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/network-info -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/native-balance
Native ETH balance of any address on Ethereum or Base mainnet via eth_getBalance — wei + decimal ETH. Pay 0.002 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/native-balance -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/erc20-balance
ERC-20 token balance for any wallet — USDC, USDT, DAI, or any token contract — via balanceOf eth_call, with decimals applied. Ethereum or Base mainnet. Pay 0.003 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/erc20-balance -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/erc1155-balance
ERC-1155 balance via balanceOf(owner, id) eth_call — how many copies of a token_id a wallet holds. Ethereum or Base mainnet. Pay 0.003 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/erc1155-balance -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/allowance
ERC-20 allowance via allowance(owner, spender) eth_call — how much a spender is approved to move. Ethereum or Base mainnet. Pay 0.003 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/allowance -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/total-supply
totalSupply() of an ERC-20 or ERC-721 contract via eth_call, with decimals applied when the contract exposes them. Ethereum or Base mainnet. Pay 0.003 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/total-supply -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/nft-owner
Current owner of an ERC-721 token via ownerOf(tokenId) eth_call. Ethereum or Base mainnet. Pay 0.003 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/nft-owner -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/code
Is an address a contract? eth_getCode — returns isContract, bytecode size, and keccak hash of the code. Ethereum or Base mainnet. Pay 0.003 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/code -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/storage
Read a raw storage slot from any contract via eth_getStorageAt. Ethereum or Base mainnet. Pay 0.005 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/storage -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/nonce
Next transaction nonce for any wallet via eth_getTransactionCount (latest + pending). Ethereum or Base mainnet. Pay 0.003 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/nonce -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/tx
Full transaction by hash via eth_getTransactionByHash — from, to, value, input, gas fields. Ethereum or Base mainnet. Pay 0.008 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/tx -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/receipt
Transaction receipt via eth_getTransactionReceipt — status, gas used, logs (decoded count), contractAddress. Ethereum or Base mainnet. Pay 0.005 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/receipt -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/block
Block header + transaction hashes by number, hex, or tag (latest/safe/finalized) via eth_getBlockByNumber. Ethereum or Base mainnet. Pay 0.003 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/block -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/call
Simulate a read-only contract call via eth_call — to + data (+ optional from/value), returns raw return data. No transaction sent. Ethereum or Base mainnet. Pay 0.005 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/call -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/estimate-gas
Estimate gas for a transaction via eth_estimateGas before signing it — to/data/value/from supported. Ethereum or Base mainnet. Pay 0.004 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/estimate-gas -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/erc20-transfers
Decoded ERC-20 Transfer logs for a token via eth_getLogs — sender, recipient, amount per event, filterable by address and block range (max 2,000 blocks). Ethereum or Base mainnet. Pay 0.005 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/erc20-transfers -H "content-type: application/json" -d '{}'
POST /v1/cdp/chain/contract
Contract introspection via batched eth_call — name, symbol, decimals, totalSupply, and ERC-165 interface probes (ERC-20/721/1155 detection). Ethereum or Base mainnet. Pay 0.005 USDC.
curl -s -X POST https://app.heinrichstech.com/v1/cdp/chain/contract -H "content-type: application/json" -d '{}'
The public 2.2 buyer is clean-install verified. This configuration pins ^2.2.0 to stay on the compatible hardened release line; credential-free installs expose only discovery and preflight.
{
"mcpServers": {
"bitbooth": {
"command": "npx",
"args": ["-y", "@bitbooth/mcp-fetch@^2.2.0"],
"env": {
"BITBOOTH_AGENT_KEY": "0x<your-testnet-wallet-private-key>"
}
}
}
}