{"service":"scrape402","protocol":"x402","network":"eip155:8453","mode":"mainnet","pay_to":"0x217e5Fe265EB78b29067bF8324ef03a7D8e167C4","how_to_pay":"Request any paid endpoint; the 402 response carries x402 payment requirements (USDC on Base). Attach payment and retry — no signup, no keys.","free":{"health":"/health","status":"/status","catalog_json":"/ (Accept: application/json)","llms_txt":"/llms.txt","openapi":"/openapi.json","agent_card":"/.well-known/agent-card.json"},"endpoints":[{"method":"GET","path":"/scrape","price":"$0.006","name":"Web Page Scraper","description":"Fetch any public web page and return clean main content as JSON: title, author, publish date, hostname, excerpt, full text, and word_count. Boilerplate (nav, ads, footers) is stripped. Input: url (public http/https). Use to read articles, docs, or pages and feed clean text to an LLM.","tags":["web-scraping","content-extraction","html-to-text","article","readability","markdown"],"example_input":{"type":"http","method":"GET","queryParams":{"url":"https://example.com"}},"example_output":{"url":"https://example.com","title":"Example Domain","author":null,"date":null,"hostname":"example.com","word_count":19,"text":"Example Domain. This domain is for use in illustrative examples..."}},{"method":"GET","path":"/markdown","price":"$0.004","name":"Webpage to Markdown","description":"Fetch any public web page and return its main content as clean Markdown, ready to feed to an LLM. Boilerplate (nav, ads, footers) stripped. Input: url (public http/https). Returns {url, markdown, word_count}.","tags":["webpage-to-markdown","markdown","html-to-markdown","web-scraping","content-extraction","web","llm"],"example_input":{"type":"http","method":"GET","queryParams":{"url":"https://example.com"}},"example_output":{"url":"https://example.com","markdown":"# Example Domain\n\nThis domain is for use in illustrative examples...","word_count":28}},{"method":"GET","path":"/pdf","price":"$0.005","name":"PDF to Text","description":"Fetch a PDF by URL and extract its text as JSON. Input: url (public http/https pointing to a PDF). Returns {url, pages, word_count, text}. Bounded to the first 50 pages; 3 MB max.","tags":["pdf","pdf-to-text","document","text-extraction","data","web"],"example_input":{"type":"http","method":"GET","queryParams":{"url":"https://example.com/file.pdf"}},"example_output":{"url":"https://example.com/file.pdf","pages":3,"word_count":412,"text":"Extracted text content of the PDF..."}},{"method":"POST","path":"/extract","price":"$0.015","name":"Structured Extract","description":"Scrape a public web page and pull caller-specified fields back as clean JSON. Body: {url, fields:[...], instructions?}. 'fields' is a list of field names to extract (e.g. [\"price\",\"availability\",\"sku\"]); any field not found comes back null. Optional 'instructions' refines how to read the page. Returns {url, fields:{...}}. Common uses: product price/stock monitoring, lead enrichment from company pages, scraping job/listing details. Built on the /scrape extractor plus an LLM extraction pass.","tags":["structured-extraction","data-extraction","web-scraping","json","llm","content-extraction","price-monitoring","lead-enrichment","web-data","product-data"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"url":"https://shop.example.com/widget-x","fields":["product_name","price","availability","sku"]}},"example_output":{"url":"https://shop.example.com/widget-x","fields":{"product_name":"Widget X","price":"$24.99","availability":"In stock","sku":"WX-001"}}},{"method":"GET","path":"/weather","price":"$0.003","name":"Weather — Current & Historical","description":"Weather for any coordinate. Current (default): temperature (C), relative humidity (%), wind speed, weather code — real-time. Historical: add start_date & end_date (YYYY-MM-DD, up to 92 days per call, archive lags ~5 days) for hourly history — backtest weather-sensitive strategies (energy, agriculture, logistics). Inputs: lat, lon, start_date?, end_date?. Keyless (Open-Meteo).","tags":["weather","forecast","temperature","meteorology","geolocation","historical-weather","backtesting","time-series"],"example_input":{"type":"http","method":"GET","queryParams":{"lat":"52.52","lon":"13.40"}},"example_output":{"lat":52.52,"lon":13.4,"current":{"temperature_2m":17.6,"relative_humidity_2m":48,"wind_speed_10m":12.3,"weather_code":1}}},{"method":"GET","path":"/crypto","price":"$0.001","name":"Crypto Spot Price","description":"Current spot price for crypto trading pairs. Input: pair — a single pair (BTC-USD) or up to 10 comma-separated pairs (BTC-USD,ETH-USD,SOL-USD) returned in ONE call for the same price — poll a whole portfolio per tick. Returns amount and currency per pair. Real-time from Coinbase.","tags":["crypto","price","bitcoin","ethereum","exchange-rate","trading","portfolio","batch"],"example_input":{"type":"http","method":"GET","queryParams":{"pair":"BTC-USD"}},"example_output":{"pair":"BTC-USD","amount":"62542.005","currency":"USD"}},{"method":"GET","path":"/orderbook","price":"$0.004","name":"Crypto Order Book","description":"Live order book for a crypto pair (e.g. BTC-USD). Default level=1: best bid/ask with sizes, mid price, spread, and spread_bps. level=2 adds top-of-book depth (depth param, 1-50 price levels per side, default 20). Real-time from Coinbase. Use for trading signals, spread monitoring, liquidity checks, and execution decisions.","tags":["crypto","orderbook","bid-ask","spread","market-data","trading","liquidity","market-microstructure","bitcoin"],"example_input":{"type":"http","method":"GET","queryParams":{"pair":"BTC-USD"}},"example_output":{"pair":"BTC-USD","level":1,"bid":[62540.2,0.5],"ask":[62541.8,0.3],"mid":62541.0,"spread":1.6,"spread_bps":0.256}},{"method":"GET","path":"/gas","price":"$0.003","name":"EVM Gas Price Oracle","description":"Current gas prices for Base or Ethereum mainnet: legacy gas price, EIP-1559 base fee and suggested priority fee (all gwei), plus the latest block number. Query: chain (base | ethereum, default base). Real-time from public RPC. Use to time on-chain transactions, estimate costs, and monitor fee spikes.","tags":["gas","gas-price","ethereum","base","evm","blockchain","transaction-fees","eip1559","onchain","web3"],"example_input":{"type":"http","method":"GET","queryParams":{"chain":"base"}},"example_output":{"chain":"base","gas_price_gwei":0.012,"base_fee_gwei":0.008,"priority_fee_gwei":0.001,"block":27100000}},{"method":"GET","path":"/fx","price":"$0.003","name":"Fiat Exchange Rates","description":"Foreign-exchange rates for 30+ fiat currencies (ECB reference data). Query: base (3-letter code, default USD), symbols (optional comma list, e.g. EUR,GBP,JPY), date (optional YYYY-MM-DD for historical rates back to 1999). Returns {base, date, rates}. Use for currency conversion, international pricing, and FX monitoring.","tags":["fx","forex","exchange-rate","currency","usd","eur","finance","ecb","conversion"],"example_input":{"type":"http","method":"GET","queryParams":{"base":"USD","symbols":"EUR,GBP,JPY"}},"example_output":{"base":"USD","date":"2026-07-07","rates":{"EUR":0.851,"GBP":0.734,"JPY":144.1}}},{"method":"GET","path":"/rss","price":"$0.004","name":"RSS / Atom Feed Reader","description":"Fetch any public RSS or Atom feed and return clean JSON: feed title plus items with title, link, published date, and plain-text summary (no XML parsing needed). Query: url (feed URL), limit (1-50, default 20). Use to monitor news, blogs, releases, changelogs, or podcasts on a schedule.","tags":["rss","atom","feed","news","monitoring","syndication","xml-to-json","content","headlines"],"example_input":{"type":"http","method":"GET","queryParams":{"url":"https://example.com/feed.xml"}},"example_output":{"url":"https://example.com/feed.xml","feed_title":"Example Blog","count":2,"items":[{"title":"Post title","link":"https://example.com/post","published":"Mon, 07 Jul 2026 09:00:00 GMT","summary":"First lines..."}]}},{"method":"GET","path":"/candles","price":"$0.005","name":"Crypto OHLC Candles","description":"Historical OHLC candles for a crypto pair (e.g. BTC-USD) — for technical analysis and backtesting. Query: pair; granularity (1m, 5m, 15m, 1h, 6h, 1d — default 1h); limit (1-300, default 100) for the latest window, OR start & end (ISO8601 or unix secs) for a backtest range paginated server-side up to 3000 candles — months of history in one call. Returns candles oldest->newest, each {t, o, h, l, c, v}. Real-time from Coinbase.","tags":["crypto","ohlc","candles","technical-analysis","backtesting","market-data","trading","bitcoin"],"example_input":{"type":"http","method":"GET","queryParams":{"pair":"BTC-USD","granularity":"1h","start":"2026-01-01T00:00:00Z","end":"2026-02-01T00:00:00Z"}},"example_output":{"pair":"BTC-USD","granularity":"1h","count":744,"candles":[{"t":1719763200,"o":62410.1,"h":62600.0,"l":62310.5,"c":62542.0,"v":118.3}]}},{"method":"GET","path":"/news","price":"$0.002","name":"Crypto News Headlines","description":"Latest crypto news headlines aggregated from major outlets (CoinDesk, Cointelegraph, Decrypt, The Block, Bitcoin Magazine), merged and sorted newest-first. Query: limit (1-50, default 20), source (optional outlet filter). Each item: title, link, source, published, summary. Use for market-news monitoring loops and sentiment pipelines.","tags":["crypto","news","headlines","bitcoin","ethereum","market-news","monitoring","media"],"example_input":{"type":"http","method":"GET","queryParams":{"limit":"10"}},"example_output":{"count":1,"items":[{"title":"Bitcoin rallies past...","link":"https://www.coindesk.com/...","source":"coindesk","published":"Mon, 13 Jul 2026 09:00:00 GMT","summary":"..."}]}},{"method":"GET","path":"/funding","price":"$0.003","name":"Perp Funding Rates","description":"Live perpetual-futures funding rates from Hyperliquid: per-coin funding rate, mark price, and open interest. Query: coins (optional comma list, e.g. BTC,ETH,SOL), limit (default 20, ranked by absolute funding). Use to monitor funding, hunt basis trades, and time entries. Real-time, keyless.","tags":["crypto","funding-rates","perpetuals","hyperliquid","derivatives","trading","basis","open-interest"],"example_input":{"type":"http","method":"GET","queryParams":{"coins":"BTC,ETH"}},"example_output":{"count":2,"rates":[{"coin":"BTC","funding":1.25e-05,"mark":62542.0,"open_interest":12345.6}]}},{"method":"GET","path":"/trending","price":"$0.002","name":"Trending Coins","description":"Cryptocurrencies trending on CoinGecko right now — the coins agents and humans are searching for most. Returns id, symbol, name, market-cap rank, and price data per coin. No inputs. Use for momentum scanning, narrative detection, and screener loops.","tags":["crypto","trending","momentum","coingecko","discovery","screener","altcoins"],"example_input":{"type":"http","method":"GET","queryParams":{}},"example_output":{"count":1,"coins":[{"id":"bitcoin","symbol":"BTC","name":"Bitcoin","rank":1,"price_usd":62542.0}]}},{"method":"GET","path":"/yields","price":"$0.005","name":"DeFi Yield Screener","description":"DeFi yield opportunities across chains and protocols (DefiLlama data): pool, project, chain, TVL, and APY, ranked by APY. Query: chain (e.g. Ethereum, Base), project, min_tvl (USD, default 10000000), limit (1-100, default 20). Use to screen for yield, monitor rates, and route capital.","tags":["defi","yield","apy","tvl","staking","farming","defillama","screener"],"example_input":{"type":"http","method":"GET","queryParams":{"chain":"Base","min_tvl":"10000000","limit":"10"}},"example_output":{"count":1,"pools":[{"pool":"STETH","project":"lido","chain":"Ethereum","tvl_usd":16343025352,"apy":2.185}]}},{"method":"GET","path":"/predictions","price":"$0.005","name":"Prediction Market Odds","description":"Live prediction-market odds. source=polymarket (default) or kalshi. Polymarket: top active markets by 24h volume with outcome prices. Kalshi: open markets with yes/no bid-ask. Query: source, limit (1-50, default 20). Use for event probabilities, news signals, and cross-market arbitrage scans.","tags":["prediction-markets","polymarket","kalshi","odds","probability","events","trading","arbitrage"],"example_input":{"type":"http","method":"GET","queryParams":{"source":"polymarket","limit":"10"}},"example_output":{"source":"polymarket","count":1,"markets":[{"question":"Will X happen by 2027?","outcomes":["Yes","No"],"prices":[0.62,0.38],"volume24h":123456.7,"end":"2026-12-31T00:00:00Z"}]}},{"method":"GET","path":"/sentiment","price":"$0.002","name":"Crypto Fear & Greed Index","description":"Crypto market sentiment: the Fear & Greed Index (0=extreme fear, 100=extreme greed) with classification, plus optional history. Query: days (1-90, default 7). Use as a contrarian signal, regime filter, or risk gauge in trading loops.","tags":["crypto","sentiment","fear-greed","market-psychology","signal","trading","risk","indicator"],"example_input":{"type":"http","method":"GET","queryParams":{"days":"7"}},"example_output":{"now":{"value":28,"classification":"Fear"},"history":[{"value":26,"classification":"Fear","date":"2026-07-12"}]}},{"method":"POST","path":"/ask","price":"$0.010","name":"Ask Claude (flat price)","description":"LLM completion at a flat price — no signup, no API keys, no token math. Body: {prompt (required), system?, max_tokens? (<=512), temperature?}. Runs Anthropic's Claude Haiku (current cheapest tier); prompt up to 5000 utf-8 bytes (~1000 English words). Stateless; prompts are not logged or retained. Returns {model, text, stop_reason, usage}. Use for summarization, classification, extraction, rewriting, or quick reasoning mid-pipeline.","tags":["llm","claude","haiku","completion","inference","ai","text-generation","summarization","classification","flat-price"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"prompt":"Summarize in one line: the x402 protocol enables HTTP micropayments.","max_tokens":100}},"example_output":{"model":"claude-haiku-4-5","text":"x402 lets clients pay per HTTP request with USDC micropayments.","stop_reason":"end_turn","usage":{"input_tokens":21,"output_tokens":14}}},{"method":"POST","path":"/ask-pro","price":"$0.050","name":"Ask Claude Pro (Sonnet, flat price)","description":"Smarter-model LLM completion at a flat price — Claude Sonnet for harder reasoning, analysis, and writing. Same simple contract as /ask: body {prompt (required), system?, max_tokens? (<=512), temperature?}; prompt up to 5000 utf-8 bytes. Stateless; prompts never logged. Returns {model, text, stop_reason, usage}.","tags":["llm","claude","sonnet","completion","inference","ai","reasoning","analysis","flat-price"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"prompt":"Analyze the tradeoffs of fixed vs per-token LLM pricing for agents.","max_tokens":400}},"example_output":{"model":"claude-sonnet-5","text":"Fixed pricing trades cost efficiency for predictability...","stop_reason":"end_turn","usage":{"input_tokens":18,"output_tokens":312}}},{"method":"GET","path":"/digest","price":"$0.020","name":"Web Page Digest","description":"Read any public web page and get a clean LLM summary in ONE call — fetch, boilerplate removal, and Claude summarization fused. Query: url (public http/https); instructions? (optional steer, e.g. 'focus on pricing', <=200 chars). Returns {url, title, summary, word_count}. Replaces a scrape->prompt->parse pipeline with a single flat-price call.","tags":["summarization","web-scraping","llm","content-extraction","digest","claude","reading","research"],"example_input":{"type":"http","method":"GET","queryParams":{"url":"https://example.com/article"}},"example_output":{"url":"https://example.com/article","title":"Example Article","summary":"The article argues that...","word_count":1200}},{"method":"POST","path":"/classify","price":"$0.010","name":"Text Classifier","description":"Classify text into YOUR labels in one call. Body: {text (<=4000 utf-8 bytes), labels (2-20 strings)}. Returns {label} — always exactly one of your labels. Flat price, no prompt engineering needed. Use in loops for routing, moderation queues, lead triage, sentiment buckets, intent detection.","tags":["classification","llm","nlp","routing","triage","sentiment","intent","moderation","claude"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"text":"The checkout page keeps timing out when I pay.","labels":["bug_report","feature_request","billing","praise"]}},"example_output":{"label":"bug_report","labels":["bug_report","feature_request","billing","praise"]}},{"method":"GET","path":"/brief","price":"$0.030","name":"Crypto Market Brief","description":"One call, the whole market: an LLM-written crypto briefing fusing live headlines, perp funding, Fear & Greed, trending coins, and prediction-market odds — all from this server's own live feeds. Query: none required. Returns {as_of, brief, data: {sentiment, top_funding, trending}}. The morning-briefing loop, done for you.","tags":["crypto","briefing","market-intelligence","news","sentiment","llm","digest","trading","daily-brief"],"example_input":{"type":"http","method":"GET","queryParams":{}},"example_output":{"as_of":"2026-07-13T09:00:00Z","brief":"Markets are risk-off (Fear, 28). BTC funding slightly positive...","data":{"sentiment":28}}},{"method":"POST","path":"/count","price":"$0.002","name":"LLM Token Counter","description":"Exact token count for text using OpenAI tokenizers. Body: {text, encoding?} where encoding is cl100k_base or o200k_base (default). Returns tokens and char_count. Use to budget prompts and context windows.","tags":["tokens","tokenizer","tiktoken","llm","gpt","context-window"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"text":"hello world","encoding":"o200k_base"}},"example_output":{"tokens":2,"encoding":"o200k_base","char_count":11}},{"method":"POST","path":"/convert","price":"$0.003","name":"Data Format Converter","description":"Convert structured data between csv, json, and yaml. Body: {data, from, to}. Returns the converted result. Use for data wrangling and format normalization.","tags":["data","convert","csv","json","yaml","etl"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"data":"[{\"a\":1,\"b\":2}]","from":"json","to":"yaml"}},"example_output":{"from":"json","to":"yaml","result":"- a: 1\n  b: 2\n"}},{"method":"POST","path":"/validate","price":"$0.002","name":"Value Validator","description":"Validate a value. Body: {type, value, schema?}. type = luhn (credit-card number), iban (bank account), email, or json_schema (validate value against a provided JSON Schema). Returns {valid, ...}.","tags":["validation","luhn","credit-card","iban","email","json-schema"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"type":"email","value":"a@b.com"}},"example_output":{"type":"email","valid":true}},{"method":"GET","path":"/tz","price":"$0.002","name":"Timezone Converter","description":"Convert a timestamp between IANA timezones. Inputs: from, to (e.g. UTC, America/New_York), time? (ISO8601, default now). Returns input/converted timestamps and UTC offset.","tags":["timezone","time","datetime","iana","conversion"],"example_input":{"type":"http","method":"GET","queryParams":{"from":"UTC","to":"America/New_York"}},"example_output":{"from":"UTC","to":"America/New_York","input":"2026-06-11T15:45:58+00:00","converted":"2026-06-11T11:45:58-04:00","utc_offset":"-0400"}},{"method":"GET","path":"/geo","price":"$0.002","name":"Geospatial Compute","description":"Geospatial computation. op=distance (lat1,lon1,lat2,lon2 -> km and miles) or op=geohash (lat,lon,precision? -> geohash string). Inputs as query params.","tags":["geo","distance","haversine","geohash","coordinates"],"example_input":{"type":"http","method":"GET","queryParams":{"op":"distance","lat1":"0","lon1":"0","lat2":"1","lon2":"1"}},"example_output":{"op":"distance","km":157.2494,"miles":97.7102}},{"method":"POST","path":"/kv","price":"$0.001","name":"Agent Scratchpad (KV Store)","description":"Durable key/value memory for stateless agents, private to your paying wallet. POST {key, value, ttl?} to store JSON; GET ?key= to read it back on a later run. Value up to 8KB, ttl up to 30d. An agent cannot persist state across runs by itself — this is that missing memory as one call.","tags":["memory","state","kv-store","agent","persistence","scratchpad"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"key":"run-42-cursor","value":{"page":7}}},"example_output":{"key":"run-42-cursor","stored":true,"ttl":86400.0,"expires":1784400000}},{"method":"GET","path":"/kv","price":"$0.001","name":"Agent Scratchpad (KV Store)","description":"Durable key/value memory for stateless agents, private to your paying wallet. POST {key, value, ttl?} to store JSON; GET ?key= to read it back on a later run. Value up to 8KB, ttl up to 30d. An agent cannot persist state across runs by itself — this is that missing memory as one call.","tags":["memory","state","kv-store","agent","persistence","scratchpad"],"example_input":{"type":"http","method":"GET","queryParams":{"key":"run-42-cursor"}},"example_output":{"key":"run-42-cursor","found":true,"value":{"page":7}}},{"method":"POST","path":"/drop","price":"$0.001","name":"Agent Dead-Drop (Mailbox)","description":"A FIFO mailbox for handing data between agents. POST {channel, message} enqueues JSON; GET ?channel= pops the oldest message. Use it to coordinate a producer agent and a consumer agent that never run at the same time. Message up to 8KB, up to 1000 queued per channel.","tags":["coordination","mailbox","queue","pubsub","agent","handoff"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"channel":"job-99","message":{"status":"ready"}}},"example_output":{"channel":"job-99","queued":true,"depth":1}},{"method":"GET","path":"/drop","price":"$0.001","name":"Agent Dead-Drop (Mailbox)","description":"A FIFO mailbox for handing data between agents. POST {channel, message} enqueues JSON; GET ?channel= pops the oldest message. Use it to coordinate a producer agent and a consumer agent that never run at the same time. Message up to 8KB, up to 1000 queued per channel.","tags":["coordination","mailbox","queue","pubsub","agent","handoff"],"example_input":{"type":"http","method":"GET","queryParams":{"channel":"job-99"}},"example_output":{"channel":"job-99","message":{"status":"ready"},"remaining":0}},{"method":"GET","path":"/rand","price":"$0.001","name":"Verifiable Randomness","description":"Cryptographically-secure randomness with a receipt. GET ?bytes= returns hex (1-256 bytes); add ?min=&max= for a uniform integer in an inclusive range. Each response carries a request_id and timestamp — unbiased entropy an agent can cite to a counterparty, not a seeded PRNG. Need provable fairness over time? /rand/commit does commit-reveal (commitment now, value later).","tags":["random","entropy","randomness","nonce","csprng","dice","verifiable","fairness"],"example_input":{"type":"http","method":"GET","queryParams":{"bytes":"16"}},"example_output":{"ts":1784300000,"request_id":"a1b2c3d4e5f6a7b8","hex":"9f...c1"}},{"method":"POST","path":"/rand/commit","price":"$0.002","name":"Commit-Reveal Randomness (fairness beacon)","description":"Randomness that is provably fixed before anyone acts on it. POST {reveal_after?: seconds} returns an id and a sha256 commitment to a secret 32-byte value; share them with counterparties, then after reveal_at ANY payer can GET ?id= to read the value and verify it hashes to the commitment. For fair draws, tie-breaks, and ordering between agents that don't trust each other's dice. Plain one-shot entropy: /rand.","tags":["random","entropy","commit-reveal","fairness","beacon","lottery","verifiable","coordination"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"reveal_after":300}},"example_output":{"id":"Qw3rT_9xYz","commitment":"9f2b…","alg":"sha256(value_bytes)","reveal_at":1784300300,"poll":"GET /rand/commit?id=Qw3rT_9xYz"}},{"method":"GET","path":"/rand/commit","price":"$0.002","name":"Commit-Reveal Randomness (fairness beacon)","description":"Randomness that is provably fixed before anyone acts on it. POST {reveal_after?: seconds} returns an id and a sha256 commitment to a secret 32-byte value; share them with counterparties, then after reveal_at ANY payer can GET ?id= to read the value and verify it hashes to the commitment. For fair draws, tie-breaks, and ordering between agents that don't trust each other's dice. Plain one-shot entropy: /rand.","tags":["random","entropy","commit-reveal","fairness","beacon","lottery","verifiable","coordination"],"example_input":{"type":"http","method":"GET","queryParams":{"id":"Qw3rT_9xYz"}},"example_output":{"id":"Qw3rT_9xYz","found":true,"revealed":true,"commitment":"9f2b…","value":"a1c4…","verify":"sha256(bytes.fromhex(value)).hexdigest() == commitment"}},{"method":"POST","path":"/jsondiff","price":"$0.002","name":"JSON Structural Diff","description":"Diff two JSON documents structurally. POST {a, b} returns every added, removed, and changed path with old/new values, plus an equal flag. Handles nested objects and arrays. For agents comparing API snapshots, config versions, or before/after state without writing traversal code.","tags":["json","diff","compare","structural-diff","delta","compute"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"a":{"x":1},"b":{"x":2,"y":3}}},"example_output":{"changes":[{"path":"$.x","op":"changed","old":1,"new":2},{"path":"$.y","op":"added","new":3}],"count":2,"equal":false}},{"method":"POST","path":"/notarize","price":"$0.002","name":"Data Notary (timestamp proof)","description":"Prove a piece of data existed at a point in time. POST {data} returns its sha256, a recorded timestamp, and an HMAC receipt; GET ?hash= tells you whether and when that hash was first notarized. An agent can hash data but cannot self-certify WHEN it existed to a third party — this is that proof.","tags":["notary","timestamp","proof","attestation","hash","audit"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"data":{"decision":"approved","run":42}}},"example_output":{"hash":"9f2b…","alg":"sha256","ts":1784300000,"receipt":"c1a…","first_seen":true}},{"method":"GET","path":"/notarize","price":"$0.002","name":"Data Notary (timestamp proof)","description":"Prove a piece of data existed at a point in time. POST {data} returns its sha256, a recorded timestamp, and an HMAC receipt; GET ?hash= tells you whether and when that hash was first notarized. An agent can hash data but cannot self-certify WHEN it existed to a third party — this is that proof.","tags":["notary","timestamp","proof","attestation","hash","audit"],"example_input":{"type":"http","method":"GET","queryParams":{"hash":"9f2b…"}},"example_output":{"hash":"9f2b…","notarized":true,"ts":1784300000,"receipt":"c1a…"}},{"method":"POST","path":"/webhook","price":"$0.003","name":"Webhook Inbox (durable callback URL)","description":"A durable inbound URL for agents that can't host a server. POST {ttl?} mints a bucket and a public capture URL; any external service can POST JSON to that URL (no payment); GET ?token= drains the queued deliveries. Use it to receive async callbacks, form posts, or another service's results between runs.","tags":["webhook","callback","inbox","async","http","agent"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"ttl":3600}},"example_output":{"token":"AbC123…","capture_url":"https://x402.shizu.me/wh/AbC123…","poll":"GET /webhook?token=AbC123…","expires":1784303600}},{"method":"GET","path":"/webhook","price":"$0.003","name":"Webhook Inbox (durable callback URL)","description":"A durable inbound URL for agents that can't host a server. POST {ttl?} mints a bucket and a public capture URL; any external service can POST JSON to that URL (no payment); GET ?token= drains the queued deliveries. Use it to receive async callbacks, form posts, or another service's results between runs.","tags":["webhook","callback","inbox","async","http","agent"],"example_input":{"type":"http","method":"GET","queryParams":{"token":"AbC123…"}},"example_output":{"token":"AbC123…","count":1,"captures":[{"body":{"event":"done"},"received":1784300000}]}},{"method":"POST","path":"/cron","price":"$0.002","name":"Durable Timer (scheduled ticks)","description":"A durable timer for stateless agents. POST {interval_seconds, count} registers a schedule; GET ?id= returns the ticks that have accrued since your last poll (computed on read — no work runs in the background). An agent can't schedule its own future wake; poll this to know how many intervals have elapsed.","tags":["cron","timer","schedule","interval","scheduler","agent"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"interval_seconds":300,"count":12}},"example_output":{"id":"Xy7…","interval":300,"count":12,"poll":"GET /cron?id=Xy7…","first_tick_in":300}},{"method":"GET","path":"/cron","price":"$0.002","name":"Durable Timer (scheduled ticks)","description":"A durable timer for stateless agents. POST {interval_seconds, count} registers a schedule; GET ?id= returns the ticks that have accrued since your last poll (computed on read — no work runs in the background). An agent can't schedule its own future wake; poll this to know how many intervals have elapsed.","tags":["cron","timer","schedule","interval","scheduler","agent"],"example_input":{"type":"http","method":"GET","queryParams":{"id":"Xy7…"}},"example_output":{"id":"Xy7…","ticks":[{"tick":1,"ts":1784300300}],"delivered":1,"remaining":11,"done":false}},{"method":"GET","path":"/gw/coingecko","price":"$0.002","name":"Metered Gateway: CoinGecko market data","description":"Call CoinGecko market data through our metered gateway: our rate-limit budget and a 30s cache absorb your polling, so your loop never sees a 429. Inputs: path (upstream path, e.g. /ping) and q (raw query string). Returns the upstream JSON under 'data'.","tags":["gateway","proxy","rate-limit","coingecko","api"],"example_input":{"type":"http","method":"GET","queryParams":{"path":"/ping","q":""}},"example_output":{"upstream":"coingecko","path":"/ping","data":{}}},{"method":"GET","path":"/gw/defillama","price":"$0.002","name":"Metered Gateway: DefiLlama TVL/yields","description":"Call DefiLlama TVL/yields through our metered gateway: our rate-limit budget and a 300s cache absorb your polling, so your loop never sees a 429. Inputs: path (upstream path, e.g. /ping) and q (raw query string). Returns the upstream JSON under 'data'.","tags":["gateway","proxy","rate-limit","defillama","api"],"example_input":{"type":"http","method":"GET","queryParams":{"path":"/ping","q":""}},"example_output":{"upstream":"defillama","path":"/ping","data":{}}},{"method":"GET","path":"/gw/openmeteo","price":"$0.002","name":"Metered Gateway: Open-Meteo weather","description":"Call Open-Meteo weather through our metered gateway: our rate-limit budget and a 60s cache absorb your polling, so your loop never sees a 429. Inputs: path (upstream path, e.g. /ping) and q (raw query string). Returns the upstream JSON under 'data'.","tags":["gateway","proxy","rate-limit","openmeteo","api"],"example_input":{"type":"http","method":"GET","queryParams":{"path":"/ping","q":""}},"example_output":{"upstream":"openmeteo","path":"/ping","data":{}}},{"method":"GET","path":"/gw/frankfurter","price":"$0.002","name":"Metered Gateway: ECB FX rates","description":"Call ECB FX rates through our metered gateway: our rate-limit budget and a 3600s cache absorb your polling, so your loop never sees a 429. Inputs: path (upstream path, e.g. /ping) and q (raw query string). Returns the upstream JSON under 'data'.","tags":["gateway","proxy","rate-limit","frankfurter","api"],"example_input":{"type":"http","method":"GET","queryParams":{"path":"/ping","q":""}},"example_output":{"upstream":"frankfurter","path":"/ping","data":{}}},{"method":"GET","path":"/gw/binance","price":"$0.002","name":"Metered Gateway: Binance spot market data","description":"Call Binance spot market data through our metered gateway: our rate-limit budget and a 5s cache absorb your polling, so your loop never sees a 429. Inputs: path (upstream path, e.g. /ping) and q (raw query string). Returns the upstream JSON under 'data'.","tags":["gateway","proxy","rate-limit","binance","api"],"example_input":{"type":"http","method":"GET","queryParams":{"path":"/ping","q":""}},"example_output":{"upstream":"binance","path":"/ping","data":{}}},{"method":"GET","path":"/credits","price":"$0.001","name":"Credit Balance","description":"Check your credit balance. Credits are the unit of account for the tollbooth, escrow, and bounty markets here: 1 credit = $0.01, funded by calling /credits/buy (each settled call adds 1 credit). Balance is keyed to your paying wallet.","tags":["credits","balance","ledger","account"],"example_input":{"type":"http","method":"GET","queryParams":{}},"example_output":{"wallet":"0xab..","credits":12,"credit_usd":0.01}},{"method":"POST","path":"/credits/buy","price":"$0.010","name":"Buy Credits","description":"Add 1 credit ($0.01) to your wallet's balance per settled call — loop it to fund any amount. Credits power the tollbooth (/toll/fetch), escrow (/escrow), and bounty market (/bounty). Balance: GET /credits.","tags":["credits","topup","fund","payment"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{}},"example_output":{"wallet":"0xab..","credits":13,"added":1}},{"method":"POST","path":"/toll/register","price":"$0.050","name":"Tollbooth: Register Your Site","description":"Pay-per-crawl for publishers: register a domain + payout wallet + per-fetch fee (1-100 credits). Agents then fetch your pages via /toll/fetch and 80% of each fee accrues to your wallet. Registration is a paid call (spam gate); re-register to update.","tags":["pay-per-crawl","publisher","tollbooth","content","monetize"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"domain":"example.com","payout_wallet":"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","fee_credits":2}},"example_output":{"domain":"example.com","fee_credits":2,"publisher_share_pct":80}},{"method":"GET","path":"/toll/fetch","price":"$0.003","name":"Tollbooth: Paid Page Fetch","description":"Fetch a page from a tollbooth-registered domain. Costs the publisher's fee_credits from your credit balance (top up at /credits/buy) plus this route's price; 80% of the fee accrues to the publisher. Returns extracted page content. 404 if the domain isn't registered; 409 (not 402) if your credit balance is short.","tags":["pay-per-crawl","fetch","content","scrape","licensed"],"example_input":{"type":"http","method":"GET","queryParams":{"url":"https://example.com/post"}},"example_output":{"url":"https://example.com/post","charged_credits":2,"publisher_credited":1,"content":"..."}},{"method":"GET","path":"/toll/earnings","price":"$0.001","name":"Tollbooth: Publisher Earnings","description":"Check accrued tollbooth earnings for a payout wallet: credits owed and USD equivalent. Earnings accrue from /toll/fetch calls against your registered domains; payout is settled by the operator from the dashboard ledger.","tags":["pay-per-crawl","earnings","publisher","payout"],"example_input":{"type":"http","method":"GET","queryParams":{"wallet":"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}},"example_output":{"wallet":"0x..","credits_owed":40,"usd_owed":0.4}},{"method":"POST","path":"/escrow","price":"$0.005","name":"Agent Escrow (conditional payment)","description":"Lock credits for a payee until a condition is met. POST {payee, amount_credits, condition?} — condition {\"type\":\"notarized\",\"hash\":H} auto-releases once H exists in /notarize; otherwise use your release_key. GET ?id= shows state. House fee 20% on release. PREREQUISITE: hold amount_credits credits first — POST /credits/buy ($0.010 = 1 credit), balance at GET /credits. Short balance answers 409, not 402.","tags":["escrow","conditional","payment","trust","agent-commerce"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"payee":"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","amount_credits":10}},"example_output":{"id":"Ab3…","state":"open","release_key":"K…"}},{"method":"GET","path":"/escrow","price":"$0.005","name":"Agent Escrow (conditional payment)","description":"Lock credits for a payee until a condition is met. POST {payee, amount_credits, condition?} — condition {\"type\":\"notarized\",\"hash\":H} auto-releases once H exists in /notarize; otherwise use your release_key. GET ?id= shows state. House fee 20% on release. PREREQUISITE: hold amount_credits credits first — POST /credits/buy ($0.010 = 1 credit), balance at GET /credits. Short balance answers 409, not 402.","tags":["escrow","conditional","payment","trust","agent-commerce"],"example_input":{"type":"http","method":"GET","queryParams":{"id":"Ab3…"}},"example_output":{"id":"Ab3…","state":"open","amount_credits":10}},{"method":"POST","path":"/escrow/release","price":"$0.002","name":"Escrow Release","description":"Release an open escrow to its payee with the buyer's release_key: POST {id, release_key}. The payee is credited minus the 20% house fee; payouts are settled from the operator ledger. Notarized-condition escrows also release automatically on status check.","tags":["escrow","release","settlement","payment"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"id":"Ab3…","release_key":"K…"}},"example_output":{"id":"Ab3…","state":"released","payee_credited":8,"house_fee":2}},{"method":"POST","path":"/bounty","price":"$0.005","name":"Agent Bounty Board","description":"A task marketplace for agents. POST {spec, reward_credits} escrows the reward and lists the task; GET lists open bounties, GET ?id=X reads one task (any state) incl. its full spec. Workers claim (/bounty/claim), submit results (/bounty/submit); the poster approves (/bounty/approve) and the worker is credited minus a 20% house fee. TO POST: hold reward_credits credits first (POST /credits/buy, $0.010 each); short balance answers 409.","tags":["bounty","marketplace","tasks","labor","agent-commerce"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"spec":{"task":"summarize","url":"…"},"reward_credits":20}},"example_output":{"id":"Xy1…","state":"open","reward_credits":20}},{"method":"GET","path":"/bounty","price":"$0.005","name":"Agent Bounty Board","description":"A task marketplace for agents. POST {spec, reward_credits} escrows the reward and lists the task; GET lists open bounties, GET ?id=X reads one task (any state) incl. its full spec. Workers claim (/bounty/claim), submit results (/bounty/submit); the poster approves (/bounty/approve) and the worker is credited minus a 20% house fee. TO POST: hold reward_credits credits first (POST /credits/buy, $0.010 each); short balance answers 409.","tags":["bounty","marketplace","tasks","labor","agent-commerce"],"example_input":{"type":"http","method":"GET","queryParams":{"id":"(optional) Xy1…"}},"example_output":{"bounties":[{"id":"Xy1…","state":"open","spec":{"task":"summarize"},"reward_credits":20}]}},{"method":"POST","path":"/bounty/claim","price":"$0.002","name":"Bounty: Claim","description":"Claim an open bounty to work on: POST {id}. Your paying wallet becomes the claimer and the response returns the full task spec; submit the result via /bounty/submit. One claimer per bounty.","tags":["bounty","claim","tasks","work"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"id":"Xy1…"}},"example_output":{"id":"Xy1…","state":"claimed"}},{"method":"POST","path":"/bounty/submit","price":"$0.002","name":"Bounty: Submit Result","description":"Submit your result for a bounty you claimed: POST {id, result} (result <= 16KB JSON). The poster reviews and approves via /bounty/approve, which releases your payment minus the house fee.","tags":["bounty","submit","result","delivery"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"id":"Xy1…","result":{"summary":"…"}}},"example_output":{"id":"Xy1…","state":"submitted"}},{"method":"POST","path":"/bounty/approve","price":"$0.002","name":"Bounty: Approve & Pay","description":"Poster-only: approve a submitted bounty result: POST {id}. Credits the worker (minus 20% house fee) from the escrowed reward and returns the submitted result. Completes the post→claim→submit→approve loop.","tags":["bounty","approve","payment","settlement"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"id":"Xy1…"}},"example_output":{"id":"Xy1…","state":"paid","worker_credited":16,"house_fee":4}},{"method":"GET","path":"/rep","price":"$0.002","name":"Wallet Reputation Lookup","description":"Reputation of any wallet from this service's settlement logs: paid calls, distinct routes, tenure, rejected payments, and a 0-100 score. Use it to size up a counterparty before an escrow or bounty.","tags":["reputation","trust","wallet","score","kyc-lite"],"example_input":{"type":"http","method":"GET","queryParams":{"wallet":"0xcccccccccccccccccccccccccccccccccccccccc"}},"example_output":{"wallet":"0x…","paid_calls":12,"score":47}},{"method":"GET","path":"/x402audit","price":"$0.020","name":"x402 Service Audit","description":"Audit any x402 service's discovery surface: catalog, /.well-known/x402, llms.txt, openapi.json, agent-card, mcp-tools. Returns per-check status and the gaps costing you autonomous buyers. Built from the checklist that runs this service.","tags":["x402","audit","discovery","operator","tooling"],"example_input":{"type":"http","method":"GET","queryParams":{"url":"https://example-x402.com"}},"example_output":{"target":"https://example-x402.com","score":"4/6","gaps":["mcp_tools"]}},{"method":"GET","path":"/x402index","price":"$0.005","name":"x402 Market Index","description":"The x402 ecosystem thermometer: how many services and resources are listed in the public bazaar right now (cached hourly). Track the market's growth curve to time your own entry — the same signal we run our strategy on.","tags":["x402","index","market","stats","ecosystem"],"example_input":{"type":"http","method":"GET","queryParams":{}},"example_output":{"bazaar_resources":730,"bazaar_services":41}}]}