{"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","openai_models":"/v1/models"},"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.006","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.006","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.003","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.004","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":"/pmscan","price":"$0.020","name":"Live Prediction-Market Surface","description":"The live TRADEABLE prediction-market surface, normalised for polling bots. Every liquid Polymarket market above a 24h-volume floor, each with its Yes probability, `edge` (min(yes,1-yes) — 0=resolved, 0.5=coin-flip), 24h volume, and liquidity. Query: min_volume (USD floor, default 1000), uncertain_only (true drops near-resolved), sort (volume|edge|liquidity), limit (1-100). Prices move — poll it; a cached copy is stale. Built for continuous trading loops, not one-shot lookups.","tags":["prediction-markets","polymarket","trading","signals","probability","live","odds","quant","betting","loop"],"example_input":{"type":"http","method":"GET","queryParams":{"min_volume":"1000","sort":"volume","limit":"40"}},"example_output":{"venue":"polymarket","scanned":399,"count":40,"markets":[{"question":"Will X happen by 2027?","yes":0.34,"edge":0.34,"volume_24h":254637.0,"liquidity":455381.0,"ends":"2026-12-31T00:00:00Z","url":"https://polymarket.com/event/..."}]}},{"method":"GET","path":"/llama/yields","price":"$0.008","name":"DeFi Yield Pools (filtered)","description":"Every DefiLlama yield pool, filtered and sorted server-side so you don't fetch the 11MB index. Query: chain, project, symbol, min_tvl (USD), min_apy (%), stablecoin (true/false), sort (tvl|apy), limit (1-100). Each pool: project, chain, symbol, tvl_usd, apy, apy_base, apy_reward, stablecoin, il_risk, exposure. APYs move — poll it.","tags":["defi","yields","apy","tvl","defillama","pools","farming","staking","lending","quant"],"example_input":{"type":"http","method":"GET","queryParams":{"chain":"Base","min_tvl":"1000000","sort":"apy","limit":"20"}},"example_output":{"source":"defillama","total_pools":15981,"count":20,"pools":[{"pool":"abc","project":"aerodrome","chain":"Base","symbol":"USDC-ETH","tvl_usd":4200000.0,"apy":18.4,"apy_base":12.1,"apy_reward":6.3,"stablecoin":false,"il_risk":"yes","exposure":"multi"}]}},{"method":"GET","path":"/llama/protocols","price":"$0.008","name":"DeFi Protocol TVL (filtered)","description":"Every DefiLlama protocol with current TVL, filtered server-side (the raw index is 8.5MB). Query: chain, category (Lending, Dexes, ...), min_tvl (USD), sort (tvl|change_1d|change_7d), limit (1-100). Each: name, slug, chain, category, tvl_usd, change_1d, change_7d, mcap. Use the slug with /llama/tvl for a live single-number poll.","tags":["defi","tvl","protocols","defillama","lending","dex","rankings","quant"],"example_input":{"type":"http","method":"GET","queryParams":{"category":"Lending","sort":"tvl","limit":"20"}},"example_output":{"source":"defillama","total_protocols":6883,"count":20,"protocols":[{"name":"Aave V3","slug":"aave-v3","chain":"Multi-Chain","category":"Lending","tvl_usd":13900000000.0,"change_1d":0.4,"change_7d":-1.7,"mcap":null}]}},{"method":"GET","path":"/llama/chains","price":"$0.004","name":"DeFi TVL by Chain","description":"Total DeFi TVL for every chain DefiLlama tracks, ranked. Query: limit (1-500). Each: name, tvl_usd, token.","tags":["defi","tvl","chains","defillama","l1","l2","rankings"],"example_input":{"type":"http","method":"GET","queryParams":{"limit":"20"}},"example_output":{"source":"defillama","count":20,"chains":[{"name":"Ethereum","tvl_usd":41465846538.0,"token":"ETH"}]}},{"method":"GET","path":"/llama/stablecoins","price":"$0.005","name":"Stablecoin Circulating Supply","description":"Every tracked stablecoin with circulating supply (USD), peg type, peg mechanism, and current price. Ranked by circulating. Query: limit (1-200).","tags":["defi","stablecoins","defillama","usdc","usdt","peg","circulating"],"example_input":{"type":"http","method":"GET","queryParams":{"limit":"20"}},"example_output":{"source":"defillama","count":20,"stablecoins":[{"name":"Tether","symbol":"USDT","peg_type":"peggedUSD","peg_mechanism":"fiat-backed","circulating_usd":120000000000.0,"price":1.0}]}},{"method":"GET","path":"/llama/prices","price":"$0.003","name":"Token Prices (DefiLlama)","description":"Current token prices from DefiLlama. Query: coins — a comma list of coin ids like coingecko:bitcoin or <chain>:<address> (up to 50). Each: price, symbol, timestamp, confidence. Prices move — poll it.","tags":["defi","prices","tokens","defillama","spot","oracle","quant"],"example_input":{"type":"http","method":"GET","queryParams":{"coins":"coingecko:bitcoin,coingecko:ethereum"}},"example_output":{"source":"defillama","count":2,"prices":{"coingecko:bitcoin":{"price":64428.4,"symbol":"BTC","timestamp":1785311942,"confidence":0.99}}}},{"method":"GET","path":"/llama/tvl","price":"$0.003","name":"Protocol TVL (live single number)","description":"Current total TVL for named protocols, one number each — the cheap poll (avoids the 10MB per-protocol history blob). Query: protocol — comma list of DefiLlama slugs (up to 20), e.g. aave,uniswap-v3. null means an unknown slug.","tags":["defi","tvl","defillama","protocols","live","poll","quant"],"example_input":{"type":"http","method":"GET","queryParams":{"protocol":"aave,uniswap"}},"example_output":{"source":"defillama","tvl_usd":{"aave":14400000000.0,"uniswap":3100000000.0}}},{"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":"POST","path":"/v1/chat/completions","price":"$0.015","name":"OpenAI-Compatible LLM Gateway","description":"Drop-in OpenAI Chat Completions — point any OpenAI SDK's base_url here and pay per call in USDC, no account or key. POST {model, messages:[{role,content}], max_tokens?, temperature?, stream?}. Backed by Claude Haiku; flat price regardless of model. Multi-turn (system/user/assistant), OpenAI-shaped choices[]+usage. Input ~3000 words, output capped 512 tokens. The account-less inference gateway for looping agents.","tags":["llm","gateway","openai-compatible","chat-completions","inference","claude","completion","ai","proxy","no-account"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"model":"gpt-4o-mini","messages":[{"role":"user","content":"Summarize x402 in one line."}],"max_tokens":60}},"example_output":{"id":"chatcmpl-a1b2c3d4","object":"chat.completion","created":1785000000,"model":"claude-haiku-4-5","choices":[{"index":0,"message":{"role":"assistant","content":"x402 lets clients pay per HTTP request with USDC."},"finish_reason":"stop"}],"usage":{"prompt_tokens":14,"completion_tokens":12,"total_tokens":26}}},{"method":"POST","path":"/v1/embeddings","price":"$0.002","name":"OpenAI-Compatible Embeddings","description":"Drop-in OpenAI embeddings endpoint — same base_url as /v1/chat/completions, pay per call in USDC, no account or key. POST {input: string|array (max 16 items, 8KB total), model?, dimensions?}. Returns the standard {data:[{embedding:[...]}], usage} shape. Flat price per call. The bulk-loop primitive for RAG ingestion, semantic search, dedup, clustering — point your OpenAI SDK here and embed.","tags":["embeddings","openai-compatible","vectors","rag","semantic-search","llm","gateway","no-account","ai"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"input":["the quick brown fox"],"model":"text-embedding-3-small"}},"example_output":{"object":"list","model":"gemini-embedding-001","data":[{"object":"embedding","index":0,"embedding":[0.0123,-0.0456,"..."]}],"usage":{"prompt_tokens":5,"total_tokens":5}}},{"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.002","name":"Agent Memory: save state between runs","description":"Your agent forgets everything when it exits. Checkpoint here and resume next run: POST {key, value, ttl?} stores JSON private to your paying wallet; GET ?key= restores it later. Resume long jobs where they stopped, skip work already done, remember what you told the user yesterday. Value up to 8KB, ttl up to 30d — durable memory as one call, no database.","tags":["memory","state","kv-store","agent","persistence","scratchpad","checkpoint","resume","memory-between-runs"],"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.002","name":"Agent Memory: save state between runs","description":"Your agent forgets everything when it exits. Checkpoint here and resume next run: POST {key, value, ttl?} stores JSON private to your paying wallet; GET ?key= restores it later. Resume long jobs where they stopped, skip work already done, remember what you told the user yesterday. Value up to 8KB, ttl up to 30d — durable memory as one call, no database.","tags":["memory","state","kv-store","agent","persistence","scratchpad","checkpoint","resume","memory-between-runs"],"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.002","name":"Agent-to-Agent Mailbox (message passing)","description":"Send data from one agent to another with no shared infrastructure. POST {channel, message} leaves JSON in a named mailbox; the receiving agent GETs ?channel= to pop it (FIFO). A scraper agent hands results to an analyst agent that runs an hour later; a pipeline passes work downstream — no queue to host, no server. Message up to 8KB, 1000 queued per channel.","tags":["coordination","mailbox","queue","pubsub","agent","handoff","agent-to-agent","message-passing","pipeline"],"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.002","name":"Agent-to-Agent Mailbox (message passing)","description":"Send data from one agent to another with no shared infrastructure. POST {channel, message} leaves JSON in a named mailbox; the receiving agent GETs ?channel= to pop it (FIFO). A scraper agent hands results to an analyst agent that runs an hour later; a pipeline passes work downstream — no queue to host, no server. Message up to 8KB, 1000 queued per channel.","tags":["coordination","mailbox","queue","pubsub","agent","handoff","agent-to-agent","message-passing","pipeline"],"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.003","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":"Provably Fair Draw (commit-reveal randomness)","description":"Run a fair coin flip, lottery, or tie-break between agents that don't trust each other's dice. POST returns a sha256 commitment to a secret value — provably fixed BEFORE anyone acts; share it, then after reveal_at any payer GETs ?id= to read the value and verify it hashes to the commitment. Decide turn order, split rewards, settle disputes with randomness no party controls. 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":"Provably Fair Draw (commit-reveal randomness)","description":"Run a fair coin flip, lottery, or tie-break between agents that don't trust each other's dice. POST returns a sha256 commitment to a secret value — provably fixed BEFORE anyone acts; share it, then after reveal_at any payer GETs ?id= to read the value and verify it hashes to the commitment. Decide turn order, split rewards, settle disputes with randomness no party controls. 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 Change Detector (structural diff)","description":"Detect exactly what changed between two API responses, configs, or state snapshots. POST {a, b} returns every added, removed, and changed path with old/new values, plus an equal flag. Watch an endpoint for drift, verify a migration did what it claimed, assert before/after state in tests — nested objects and arrays handled, no traversal code to write.","tags":["json","diff","compare","structural-diff","delta","compute","change-detection","drift","snapshot"],"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":"Callback Inbox for Serverless Agents","description":"Give an agent with no server a public URL that catches callbacks while it isn't running. POST {ttl?} mints a capture URL; any external service can POST JSON to it free; GET ?token= drains what arrived. Receive OAuth callbacks, payment notifications, job-completion pings, or another service's async results — without hosting, ngrok, or staying alive to listen.","tags":["webhook","callback","inbox","async","http","agent","serverless","callback-url","receive-webhooks"],"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":"Callback Inbox for Serverless Agents","description":"Give an agent with no server a public URL that catches callbacks while it isn't running. POST {ttl?} mints a capture URL; any external service can POST JSON to it free; GET ?token= drains what arrived. Receive OAuth callbacks, payment notifications, job-completion pings, or another service's async results — without hosting, ngrok, or staying alive to listen.","tags":["webhook","callback","inbox","async","http","agent","serverless","callback-url","receive-webhooks"],"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":"Pace a Loop Without a Scheduler (durable timer)","description":"Answer 'is it time yet?' across stateless runs. POST {interval_seconds, count} starts a durable timer; each GET ?id= returns how many ticks elapsed since your last poll (computed on read — nothing runs in the background). Pace a polling loop, space out retries, throttle a recurring job off our clock — for agents that can't sleep or schedule their own future wake.","tags":["cron","timer","schedule","interval","scheduler","agent","rate-limit","retry-backoff","polling"],"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":"Pace a Loop Without a Scheduler (durable timer)","description":"Answer 'is it time yet?' across stateless runs. POST {interval_seconds, count} starts a durable timer; each GET ?id= returns how many ticks elapsed since your last poll (computed on read — nothing runs in the background). Pace a polling loop, space out retries, throttle a recurring job off our clock — for agents that can't sleep or schedule their own future wake.","tags":["cron","timer","schedule","interval","scheduler","agent","rate-limit","retry-backoff","polling"],"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.002","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.001, funded by calling /credits/buy ($0.010 per settled call, +10 credits). Balance is keyed to your paying wallet.","tags":["credits","balance","ledger","account"],"example_input":{"type":"http","method":"GET","queryParams":{}},"example_output":{"wallet":"0xab..","credits":120,"credit_usd":0.001}},{"method":"POST","path":"/credits/buy","price":"$0.010","name":"Buy Credits","description":"Add 10 credits ($0.001 each) 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":130,"added":10}},{"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.002","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":400,"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":"/escrow/cancel","price":"$0.002","name":"Escrow Cancel (buyer refund)","description":"Buyer reclaims the credits locked in an OPEN escrow: POST {id}. Full refund to the buyer, no fee. Buyer-only. If a notarized condition is already met, releases to the payee instead (you can't cancel out from under a met condition).","tags":["escrow","cancel","refund","buyer","payment"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"id":"Ab3…"}},"example_output":{"id":"Ab3…","state":"cancelled","refunded_credits":10}},{"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/cancel","price":"$0.002","name":"Bounty: Cancel (poster refund)","description":"Poster reclaims the reward of a bounty nobody completed: POST {id}. Full refund, no fee. Poster-only. Works while OPEN, or while CLAIMED-but-stale (the claimer ghosted past the claim TTL). Not once a result is SUBMITTED — approve that instead.","tags":["bounty","cancel","refund","poster"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"id":"Xy1…"}},"example_output":{"id":"Xy1…","state":"cancelled","refunded_credits":20}},{"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}},{"method":"POST","path":"/session/open","price":"$0.002","name":"Open a Prepaid Session","description":"Mint a bearer session token bound to your wallet. Prepay credits via /credits/buy, open a session here (once), then call /m/<route> with the token to spend credits per call OFF-CHAIN at high frequency — no per-call settlement. The rail for looping agents. Token expires; treat it as a password. Returns {session_token, ns, balance, expires_at}.","tags":["session","prepaid","credits","high-frequency","metering","loop","gateway","off-chain"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{}},"example_output":{"session_token":"s_…","ns":"0x…","balance":40,"expires_at":1785700000,"spend":{"method":"GET","path":"/m/rand","header":"Authorization: Bearer s_…","fee_credits":1}}},{"method":"GET","path":"/search","price":"$0.012","name":"Web Search","description":"Live web search for agents that hold no search account. Query: q (required), count (1-20, default 10), country (2-letter, optional). Each result: title, url, snippet. Fresh per call — search is a poll, not a cache. One account rented per query.","tags":["search","web","google","serp","research","agent","live","answers"],"example_input":{"type":"http","method":"GET","queryParams":{"q":"x402 protocol","count":"10"}},"example_output":{"query":"x402 protocol","provider":"brave","count":10,"results":[{"title":"…","url":"https://…","snippet":"…"}]}},{"method":"GET","path":"/render","price":"$0.014","name":"JS-Rendered Page to Markdown","description":"Fetch a JavaScript-rendered page through a real browser and return clean markdown (or html) — content from SPA/JS-heavy sites that a plain fetch can't see. Query: url (required), format (markdown|html, default markdown). Returns title, description, content.","tags":["scrape","render","javascript","spa","markdown","crawl","browser","content","extract"],"example_input":{"type":"http","method":"GET","queryParams":{"url":"https://example.com","format":"markdown"}},"example_output":{"url":"https://example.com","title":"…","format":"markdown","content":"# …"}},{"method":"POST","path":"/sandbox","price":"$0.018","name":"Code Sandbox","description":"Run code in an isolated cloud sandbox and get its output — agents can't self-host this. POST {code, language?}. language: python (default), javascript, bash, r, java. Returns stdout, stderr, results, error. Hard-capped: 25s wall-clock, 100KB code, 64KB output, fully isolated.","tags":["sandbox","code","execute","python","interpreter","compute","run","repl","agent"],"example_input":{"type":"http","method":"POST","bodyType":"json","body":{"code":"print(6*7)","language":"python"}},"example_output":{"stdout":"42\n","stderr":"","results":[],"error":null}}]}