{"base_readiness_score":80,"commercial_next_step":{"billing_boundary":"No contact form, scope call, invoice, subscription, wallet signature, or payment is created by this handoff. Free routing never authorizes spending.","charged_now":false,"grade_effect":"A ready, incomplete, or failed grade adds no paid recommendation to this handoff.","human_required":false,"payment_recommended_now":false,"qualified_offers":[],"recommended_offer":null,"report_returns":"The stored readiness evidence, grade, warnings and remediation; report access is free.","report_url":"https://ontarioprotocol.com/api/verify/reports/vrf_e11dc81cf6c2724f","required_inputs":["task"],"router":{"body_template":{"free_preflight_complete":false,"task":"<your public task>","wallet_enabled":false},"charged_now":false,"id":"ontario_purchase_router","label":"Match a public task to a free or paid Ontario capability","method":"POST","url":"https://ontarioprotocol.com/api/agent/tool-quote"},"router_returns":"The matching free or paid Ontario tool for one public task, with its price, network and budget check. The router never calls a tool, signs a payload, or spends funds.","schema":"ontario.report_commercial_next_step.v1","status":"task_required_no_paid_recommendation","trust_boundary":"This commercial handoff is not part of the signed readiness evidence. It does not guarantee safety, traffic, ranking, listing acceptance, revenue, or future endpoint behavior."},"duration_ms":1091,"evidence":{"homepage":{"reachable":true,"schema_org_present":true,"status_code":200},"openapi":{"body":{"components":{"securitySchemes":{"x402":{"description":"x402 payment header (v1 or v2 payload, USDC on Base). Obtain it by settling the 402 challenge with any x402 client, then retry the same request with this header.","in":"header","name":"X-PAYMENT","type":"apiKey","x-payment-protocol":"x402"}}},"info":{"contact":{"email":"makar52nn2016@gmail.com","name":"makar-reactor","url":"https://money-reactor.makar52nn2016.workers.dev"},"description":"Agent-native micro APIs: multi-source feed of funded crypto bounty opportunities (Superteam Earn + live GitHub issues radar + GitLab), GitHub repository honeypot trust scoring, live crypto spot prices and web page reading. Payment via x402 protocol (HTTP 402), USDC on Base (eip155:8453). x402 v1 and v2 compatible; instant settle via Coinbase CDP facilitator. No accounts, no API keys.","title":"Money Reactor API","version":"3.16.0-defiwave","x-guidance":"Money Reactor serves AI agents that hunt funded crypto bounties, screen GitHub repositories for honeypot/rug risk, need live crypto prices, or need to READ WEB PAGES as text. Recommended workflow: (1) GET /api/bounties/demo (free) to preview feed quality; (2) GET /api/bounties ($0.001, launch promo) for the full multi-source feed: Superteam Earn (USDC/USDG) + LIVE GitHub bounty-issue radar (reaction-ranked, trust-scored) + GitLab bounty projects, trust >= 50 \u2014 one accepted bounty pays 4500x this call; (3) before working any bounty, screen its repository: GET /api/verdict?repo=owner/name ($0.001, one-line GO / CAUTION / HONEYPOT_RISK) or GET /api/honeypot?repo=owner/name ($0.001, full 0-100 trust score with reasons); (4) GET /api/crypto-price?symbol=BTC-USD ($0.001, live USD spot price, edge-cached 30s) or GET /api/usd-price?symbols=BTC-USD,ETH-USD ($0.001, multi-asset batch snapshot, default 10 majors); (5) GET /api/fear-greed ($0.001, crypto Fear & Greed index with 10-day history); (6) GET /api/market-pulse ($0.003, full snapshot: batch prices + sentiment + Base block \u2014 one poll replaces three calls, ideal for monitoring loops); (7) GET /api/url-to-text?url=https://... ($0.003, any public web page as clean plain text, up to 8KB); (8) GET /api/crypto-news ($0.001, top crypto headlines with source links); (9) GET /api/weather?city=London ($0.002, current weather anywhere); (10) GET /api/erc20-balance?contract=0x..&address=0x.. ($0.001, on-chain ERC20 balance on Base); (11) GET /api/block-number ($0.001, latest Base block); (12) GET /api/uuid ($0.001, random UUID v4); (13) GET /api/time ($0.001, UTC now); (14) POST /api/ai-chat ($0.002, LLM chat completion via Llama 3.1 8B: POST {messages:[{role,content}]} or {prompt:'...'}, optional system/max_tokens; GET ?q= for one-shots \u2014 summarize, classify, extract, answer); (15) GET /api/report?topic=... ($1.00, AI 70B 7-section research report grounded in live market data, optional ?address=0x... token grounding, ?lite=1 = $0.10 preview, guaranteed delivery even on AI outage). Payment flow: call without X-PAYMENT to receive an HTTP 402 challenge carrying payment requirements, settle with any x402 client (x402-fetch, @x402/fetch, x402 python, MCP x402 tools), then retry the same request with the X-PAYMENT header. Free endpoints: /api/health, /api/bounties/demo, /openapi.json, /llms.txt, /llms-full.txt, /.well-known/x402.json. MCP transport: POST /mcp (JSON-RPC 2.0, streamable-http) with free tools reactor_status and get_bounty_demo. Runtime 402 challenges are authoritative; prices in challenges always match this spec."},"openapi":"3.1.0","paths":{"/api/ai-chat":{"post":{"description":"One-shot LLM chat completion via Llama 3.1 8B (Cloudflare Workers AI): POST body {messages:[{role,content}]} (OpenAI-style) or {prompt:'...'}, optional system prompt and max_tokens (default 512, cap 1024). GET ?q=your+prompt also supported for simple one-shots. Per-call AI inference with zero signup and zero API keys.","operationId":"aiChat","parameters":[{"in":"query","name":"q","required":false,"schema":{"description":"One-shot prompt (GET alternative to POST body)","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"max_tokens":{"default":512,"maximum":1024,"type":"integer"},"messages":{"items":{"properties":{"content":{"type":"string"},"role":{"enum":["system","user","assistant"],"type":"string"}},"type":"object"},"type":"array"},"prompt":{"type":"string"},"system":{"type":"string"}},"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"at":{"format":"date-time","type":"string"},"model":{"type":"string"},"reply":{"type":"string"},"usage":{"nullable":true,"type":"object"}},"type":"object"}}},"description":"LLM reply"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"LLM chat completion (paid $0.01)","tags":["AI"],"x-payment-info":{"price":{"amount":"0.010000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/base-gas":{"get":{"description":"Live Base gas: gas price, EIP-1559 base fee and suggested priority fee in Gwei via public RPC \u2014 tx cost planning for agents.","operationId":"getBaseGas","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"at":{"format":"date-time","type":"string"},"baseFeeGwei":{"type":"number"},"gasPriceGwei":{"type":"number"},"gasPriceWei":{"type":"string"},"network":{"type":"string"},"priorityFeeGwei":{"type":"number"}},"type":"object"}}},"description":"Gas snapshot"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Base gas snapshot (paid $0.005)","tags":["Onchain"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/block-number":{"get":{"description":"Latest Base mainnet block height via eth_blockNumber on public Base RPC \u2014 the cheapest chain-tip probe for agents.","operationId":"getLatestBlock","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"at":{"format":"date-time","type":"string"},"blockNumber":{"type":"integer"},"hex":{"type":"string"},"network":{"type":"string"}},"type":"object"}}},"description":"Block height"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Latest Base block height (paid $0.001)","tags":["Onchain"],"x-payment-info":{"price":{"amount":"0.001000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/bounties":{"get":{"description":"Multi-source feed of funded crypto bounty opportunities: live Superteam Earn listings (USDC/USDG) + LIVE GitHub bounty-issue radar (reaction-ranked, trust-scored >= 50) + GitLab bounty projects. One accepted bounty pays 4500x the call price.","operationId":"getBountyFeed","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"disclaimers":{"items":{"type":"string"},"type":"array"},"escrowBase":{"items":{"properties":{"id":{"type":"string"},"network":{"type":"string"},"rewardUsd":{"type":"number"},"title":{"type":"string"}},"type":"object"},"type":"array"},"generatedAt":{"format":"date-time","type":"string"},"githubRadar":{"items":{"properties":{"issue":{"type":"integer"},"repo":{"type":"string"},"rewardUsd":{"type":"number"},"trust":{"type":"integer"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Bounty feed"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Funded bounty feed (paid $0.005)","tags":["Bounties"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/bounties/demo":{"get":{"description":"Free preview: top-3 escrow bounties, top-3 radar entries, honeypot sample and ROI pitch \u2014 enough to evaluate quality before paying.","operationId":"getBountyDemo","parameters":[],"responses":{"200":{"description":"Demo sample"}},"security":[],"summary":"Free demo sample","tags":["System"]}},"/api/btc-halving":{"get":{"description":"Next Bitcoin halving: current BTC height (mempool.space), blocks left, ETA days, post-halving reward. Evergreen datapoint for content and monitoring agents.","operationId":"getBtcHalving","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"blocksLeft":{"type":"integer"},"btcHeight":{"type":"integer"},"daysLeft":{"type":"number"},"eta":{"type":"string"},"halvingNumber":{"type":"integer"},"nextHalvingHeight":{"type":"integer"},"rewardAfter":{"type":"string"}},"type":"object"}}},"description":"Halving countdown"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Bitcoin halving countdown (paid $0.003)","tags":["Market"],"x-payment-info":{"price":{"amount":"0.003000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/coin-convert":{"get":{"description":"Convert an amount between assets at live Coinbase USD spot rates: rate + result in one call (e.g. 1 BTC = ? ETH).","operationId":"getCoinConvert","parameters":[{"example":"BTC","in":"query","name":"from","schema":{"description":"Asset code","type":"string"}},{"example":"ETH","in":"query","name":"to","schema":{"description":"Asset code","type":"string"}},{"example":1,"in":"query","name":"amount","schema":{"description":"Amount, default 1","type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"amount":{"type":"number"},"from":{"type":"string"},"fromUsd":{"type":"number"},"rate":{"type":"number"},"result":{"type":"number"},"to":{"type":"string"},"toUsd":{"type":"number"}},"type":"object"}}},"description":"Conversion"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Cross-asset conversion at live USD spot (paid $0.005)","tags":["Market"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/crypto-news":{"get":{"description":"Top crypto headlines aggregated from Cointelegraph, Decrypt and NewsBTC RSS: per-article title, source link and publish time, most recent first, up to 15 items.","operationId":"getCryptoNews","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"count":{"type":"integer"},"fetchedAt":{"format":"date-time","type":"string"},"items":{"items":{"properties":{"publishedAt":{"nullable":true,"type":"string"},"source":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Crypto headlines"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Top crypto headlines (paid $0.005)","tags":["Market Data"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/crypto-price":{"get":{"description":"Spot price in USD for a trading pair like BTC-USD, ETH-USD or SOL-USD. Sourced from Coinbase public price APIs, edge-cached up to 30 seconds.","operationId":"getCryptoPrice","parameters":[{"example":"BTC-USD","in":"query","name":"symbol","required":true,"schema":{"description":"Trading pair BASE-QUOTE","pattern":"^[A-Z0-9]{2,10}-[A-Z]{2,10}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"at":{"format":"date-time","type":"string"},"base":{"type":"string"},"currency":{"type":"string"},"price":{"type":"number"},"quote":{"type":"string"},"source":{"type":"string"},"symbol":{"type":"string"}},"type":"object"}}},"description":"Spot price"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Live crypto spot price (paid $0.005)","tags":["Market Data"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/day-pass":{"get":{"description":"24 hours of unlimited calls on every $0.001 route. One payment returns a dp_ token; send it as the X-DAY-PASS header on any $0.001 route to skip per-call payment.","operationId":"getDayPass","parameters":[],"responses":{"200":{"description":"Day pass token"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"x402 Day Pass (paid $0.02)","tags":["System"],"x-payment-info":{"price":{"amount":"0.020000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/dossier":{"get":{"description":"Premium bundle in ONE call: batch USD prices (BTC/ETH/SOL/XRP/DOGE) + Fear & Greed + fresh headlines + Base chain tip + AI token safety verdict (optional ?address=0x..) + AI executive summary. One call replaces five - built for decision agents.","operationId":"getResearchDossier","parameters":[{"in":"query","name":"address","required":false,"schema":{"description":"Optional token address for the AI verdict block","pattern":"^0x[0-9a-fA-F]{40}$","type":"string"}}],"responses":{"200":{"description":"Research dossier"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Full research dossier (paid $0.05)","tags":["AI"],"x-payment-info":{"price":{"amount":"0.050000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/erc20-balance":{"get":{"description":"On-chain ERC20 token balance for any Base address: raw balance, human units, decimals and symbol via eth_call balanceOf on public Base RPC.","operationId":"getErc20Balance","parameters":[{"example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","in":"query","name":"contract","required":true,"schema":{"description":"Token contract address","pattern":"^0x[0-9a-fA-F]{40}$","type":"string"}},{"example":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","in":"query","name":"address","required":true,"schema":{"description":"Wallet address","pattern":"^0x[0-9a-fA-F]{40}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"address":{"type":"string"},"at":{"format":"date-time","type":"string"},"balance":{"type":"number"},"balanceRaw":{"type":"string"},"contract":{"type":"string"},"decimals":{"type":"integer"},"network":{"type":"string"},"symbol":{"nullable":true,"type":"string"}},"type":"object"}}},"description":"Token balance"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"ERC20 token balance on Base (paid $0.005)","tags":["Onchain"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/fear-greed":{"get":{"description":"Crypto market sentiment: today's Fear & Greed value and classification plus yesterday, week ago and 10-day history. Scale 0-100 (0 = extreme fear, 100 = extreme greed). Source: alternative.me, cached 10 minutes.","operationId":"getFearGreed","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"at":{"format":"date-time","type":"string"},"classification":{"type":"string"},"historyDays10":{"items":{"type":"object"},"type":"array"},"source":{"type":"string"},"value":{"type":"integer"},"weekAgo":{"type":"object"},"yesterday":{"type":"object"}},"type":"object"}}},"description":"Fear & Greed index"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Crypto Fear & Greed index (paid $0.005)","tags":["Market Data"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/health":{"get":{"description":"Liveness probe; returns service name, supported x402 versions and the receiver wallet.","operationId":"getHealth","parameters":[],"responses":{"200":{"description":"Service is alive"}},"security":[],"summary":"Free health check","tags":["System"]}},"/api/honeypot":{"get":{"description":"Trust score 0-100 for a GitHub repository with verdict GO / CAUTION / HONEYPOT_RISK and the reasons; detects bounty honeypots before you waste work.","operationId":"scoreRepoTrust","parameters":[{"example":"facebook/react","in":"query","name":"repo","required":true,"schema":{"description":"GitHub repository as owner/name","pattern":"^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"ageDays":{"type":"integer"},"reasons":{"items":{"type":"string"},"type":"array"},"repo":{"type":"string"},"stars":{"type":"integer"},"trust":{"maximum":100,"minimum":0,"type":"integer"},"verdict":{"enum":["GO","CAUTION","HONEYPOT_RISK","UNKNOWN"],"type":"string"}},"type":"object"}}},"description":"Trust score with verdict and reasons"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Honeypot trust score (paid $0.005)","tags":["Security"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/market-pulse":{"get":{"description":"One poll replaces three calls for monitoring agents: batch USD prices (default BTC/ETH/SOL/XRP/DOGE, up to 15 pairs via symbols=) + Fear & Greed sentiment (today value/classification + yesterday) + latest Base mainnet block height. Sources: coinbase-spot, alternative.me, base-rpc. Built for loop agents polling every 30-60s.","operationId":"getMarketPulse","parameters":[{"example":"BTC-USD,ETH-USD,SOL-USD","in":"query","name":"symbols","required":false,"schema":{"description":"Comma-separated pairs BASE-QUOTE, max 15","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"at":{"format":"date-time","type":"string"},"chain":{"properties":{"blockNumber":{"type":"integer"},"network":{"type":"string"}},"type":"object"},"prices":{"properties":{"count":{"type":"integer"},"failed":{"type":"integer"},"items":{"items":{"type":"object"},"type":"array"}},"type":"object"},"pulse":{"type":"string"},"sentiment":{"properties":{"classification":{"type":"string"},"value":{"type":"integer"},"yesterday":{"nullable":true,"type":"integer"}},"type":"object"},"sources":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"Market snapshot: prices + sentiment + chain tip"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Full market snapshot in one call (paid $0.01)","tags":["Market Data"],"x-payment-info":{"price":{"amount":"0.010000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/starter-kit":{"get":{"description":"Complete onboarding bundle for an AI agent (or its owner): quickstart code, how-x402-works explainer, full endpoint catalog with prices and examples, LIVE snapshot of bounty radar + crypto news at purchase time, and seller trust proof (on-chain tx, verified badges). The one high-ticket call that turns an x402-curious agent into an operating buyer-and-seller.","operationId":"getStarterKit","parameters":[],"responses":{"200":{"description":"Starter kit bundle"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"x402 Starter Kit (paid $0.02)","tags":["System"],"x-payment-info":{"price":{"amount":"0.020000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/time":{"get":{"description":"Current server time in UTC ISO-8601 plus unix seconds \u2014 cheapest liveness probe.","operationId":"getTime","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"iso":{"format":"date-time","type":"string"},"timezone":{"type":"string"},"unix":{"type":"integer"}},"type":"object"}}},"description":"UTC time"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Current UTC time (paid $0.001)","tags":["Utility"],"x-payment-info":{"price":{"amount":"0.001000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/token-verdict":{"get":{"description":"Onchain safety verdict for a Base token: grade GREEN/MID/YELLOW/RED computed from liquidity, pair age, turnover, buy/sell flow and 24h volatility (DexScreener data), with reasons and a plain-language take. Also accepts POST with {tokenAddress}.","operationId":"getTokenVerdict","parameters":[{"example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","in":"query","name":"address","required":true,"schema":{"description":"Token contract address","pattern":"^0x[0-9a-fA-F]{40}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"address":{"type":"string"},"at":{"format":"date-time","type":"string"},"disclaimer":{"type":"string"},"grade":{"enum":["GREEN","MID","YELLOW","RED","UNKNOWN"],"type":"string"},"metrics":{"nullable":true,"type":"object"},"name":{"nullable":true,"type":"string"},"reasons":{"items":{"type":"string"},"type":"array"},"score":{"nullable":true,"type":"integer"},"symbol":{"nullable":true,"type":"string"},"verdict":{"type":"string"}},"type":"object"}}},"description":"Token verdict"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Token safety verdict (paid $0.02)","tags":["Onchain"],"x-payment-info":{"price":{"amount":"0.020000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/url-to-text":{"get":{"description":"Fetches a public http(s) URL and returns clean plain text: title + visible body (scripts, styles and nav stripped), up to 8000 characters. Lets text-only agents read the web. Private/internal hosts are blocked.","operationId":"readUrlText","parameters":[{"example":"https://example.com","in":"query","name":"url","required":true,"schema":{"description":"Absolute http(s) URL","format":"uri","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"finalUrl":{"type":"string"},"length":{"type":"integer"},"text":{"type":"string"},"title":{"type":"string"},"truncated":{"type":"boolean"},"url":{"type":"string"}},"type":"object"}}},"description":"Extracted text"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Read any web page as plain text (paid $0.01)","tags":["Web"],"x-payment-info":{"price":{"amount":"0.010000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/usd-price":{"get":{"description":"Batch USD snapshot for up to 25 trading pairs in ONE call (query symbols=BTC-USD,ETH-USD,... comma-separated; default 10 majors: BTC/ETH/SOL/DOGE/XRP/ADA/AVAX/LINK/LTC/USDC). Coinbase public source, edge-cached 30 seconds. Batch beats per-pair calls for portfolio and dashboard agents.","operationId":"getUsdPriceBatch","parameters":[{"example":"BTC-USD,ETH-USD,SOL-USD","in":"query","name":"symbols","required":false,"schema":{"description":"Comma-separated pairs BASE-QUOTE, max 25","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"at":{"format":"date-time","type":"string"},"count":{"type":"integer"},"failed":{"type":"integer"},"prices":{"items":{"properties":{"base":{"type":"string"},"currency":{"type":"string"},"price":{"type":"number"},"quote":{"type":"string"},"symbol":{"type":"string"}},"type":"object"},"type":"array"},"requested":{"type":"integer"},"source":{"type":"string"}},"type":"object"}}},"description":"Batch price snapshot"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Multi-asset USD price snapshot in one call (paid $0.005)","tags":["Market Data"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/uuid":{"get":{"description":"Random UUID v4 \u2014 idempotency keys and x402 requestKeys on demand; also a canonical $0.001 target for testing an x402 payment stack end to end.","operationId":"getUuid","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"uuid":{"type":"string"},"version":{"type":"string"}},"type":"object"}}},"description":"UUID"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Random UUID v4 (paid $0.001)","tags":["Utility"],"x-payment-info":{"price":{"amount":"0.001000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/verdict":{"get":{"description":"Impulse-priced pre-flight screen: one-line GO / CAUTION / HONEYPOT_RISK verdict plus the 0-100 trust number for a GitHub repository.","operationId":"getRepoVerdict","parameters":[{"example":"facebook/react","in":"query","name":"repo","required":true,"schema":{"description":"GitHub repository as owner/name","pattern":"^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"repo":{"type":"string"},"trust":{"type":"integer"},"verdict":{"type":"string"}},"type":"object"}}},"description":"Verdict and trust"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"One-line repo safety verdict (paid $0.005)","tags":["Security"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/wallet-profile":{"get":{"description":"On-chain profile for any Base address: native ETH balance, transaction count (nonce), USDC balance and activity tier (fresh/new/active/veteran). Pre-flight check before interacting with an unknown counterparty.","operationId":"getWalletProfile","parameters":[{"example":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","in":"query","name":"address","required":true,"schema":{"description":"Wallet address 0x..","pattern":"^0x[a-fA-F0-9]{40}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"activityTier":{"enum":["fresh","new","active","veteran"],"type":"string"},"address":{"type":"string"},"ethBalance":{"type":"number"},"network":{"type":"string"},"txCount":{"type":"integer"},"usdcBalance":{"type":"number"}},"type":"object"}}},"description":"Wallet profile"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Wallet profile on Base (paid $0.01)","tags":["Onchain"],"x-payment-info":{"price":{"amount":"0.010000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/api/weather":{"get":{"description":"Current weather for any city worldwide: temperature, feels-like, humidity, wind speed and conditions code. City geocoding via Open-Meteo (no API keys).","operationId":"getWeather","parameters":[{"example":"London","in":"query","name":"city","required":true,"schema":{"description":"City name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"city":{"type":"string"},"country":{"type":"string"},"current":{"properties":{"apparent_temperature":{"type":"number"},"relative_humidity_2m":{"type":"number"},"temperature_2m":{"type":"number"},"weather_code":{"type":"number"},"wind_speed_10m":{"type":"number"}},"type":"object"},"fetchedAt":{"format":"date-time","type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"type":"object"}}},"description":"Current weather"},"402":{"description":"Payment Required \u2014 x402 challenge (v2 eip155:8453 + v1 base, USDC). Pay via any x402 client and retry with X-PAYMENT header."}},"security":[{"x402":[]}],"summary":"Current weather by city (paid $0.005)","tags":["Data"],"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}}},"servers":[{"url":"https://money-reactor.makar52nn2016.workers.dev"}],"tags":[{"description":"Funded crypto bounty feed (escrow-backed Base USDC + GitHub radar)","name":"Bounties"},{"description":"Honeypot/rug risk screening for GitHub repositories","name":"Security"},{"description":"Live crypto spot prices and crypto news headlines","name":"Market Data"},{"description":"Weather by city (Open-Meteo)","name":"Data"},{"description":"Base chain reads: ERC20 balances, block height, token safety verdicts","name":"Onchain"},{"description":"UUID v4 and UTC time micro-endpoints","name":"Utility"},{"description":"Web page reading for text-only agents","name":"Web"},{"description":"Per-call LLM chat completion (Llama 3.1 8B via Cloudflare Workers AI)","name":"AI"},{"description":"Free liveness and demo endpoints","name":"System"}],"x-payment-info":{"price":{"amount":"0.001000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}},"reachable":true,"url":"https://money-reactor.makar52nn2016.workers.dev/openapi.json","valid_json":true,"version":"3.1.0","well_formed":true},"robots":{"excerpt":"User-agent: *\nAllow: /\n\nSitemap: https://money-reactor.makar52nn2016.workers.dev/sitemap.xml\n","reachable":true,"status_code":200},"target":{"challenge":{"accepts":[{"amount":"1000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Live BTC-USD spot price in USD \u2014 Coinbase public source, edge-cached up to 30s","extra_keys":["name","version"],"maxTimeoutSeconds":60,"network":"eip155:8453","payTo":"0xf47b7e5912Fd4218aC4c992Cdc6FAE04e1fF512E","scheme":"exact"}],"accepts_count":1,"accepts_missing_required_fields":[],"body_accepts_count":1,"body_accepts_missing":false,"body_valid_json":true,"header_accepts_count":1,"missing_accepts":false,"resource":{"description":"Live BTC-USD spot price in USD \u2014 Coinbase public source, edge-cached up to 30s","mimeType":"application/json","url":"https://money-reactor.makar52nn2016.workers.dev/api/crypto-price?symbol=BTC-USD"},"resource_missing_required_fields":[],"source":"payment-required-header","x402Version":2},"method":"GET","payment_challenge":true,"payment_headers":{"payment-required":"eyJ4NDAyVmVyc2lvbiI6MiwiZXJyb3IiOiJwYXltZW50X3JlcXVpcmVkIiwicmVzb3VyY2UiOnsidXJsIjoiaHR0cHM6Ly9tb25leS1yZWFjdG9yLm1ha2FyNTJubjIwMTYud29ya2Vycy5kZXYvYXBpL2NyeXB0by1wcmljZT9zeW1ib2w9QlRDLVVTRCIsImRlc2NyaXB0aW9uIjoiTGl2ZSBCVEMtVVNEIHNwb3QgcHJpY2UgaW4gVVNEIOKAlCBDb2luYmFzZSBwdWJsaWMgc291cmNlLCBlZGdlLWNhY2hlZCB1cCB0byAzMHMiLCJtaW1lVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSwiYWNjZXB0cyI6W3sic2NoZW1lIjoiZXhhY3QiLCJuZXR3b3JrIjoiZWlwMTU1Ojg0NTMiLCJ4NDAyVmVyc2lvbiI6MiwiYW1vdW50IjoiMTAwMCIsImRlc2NyaXB0aW9uIjoiTGl2ZSBCVEMtVVNEIHNwb3QgcHJpY2UgaW4gVVNEIOKAlCBDb2luYmFzZSBwdWJsaWMgc291cmNlLCBlZGdlLWNhY2hlZCB1cCB0byAzMHMiLCJwYXlUbyI6IjB4ZjQ3YjdlNTkxMkZkNDIxOGFDNGM5OTJDZGM2RkFFMDRlMWZGNTEyRSIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwiYXNzZXRfc3ltYm9sIjoiVVNEQyIsIm1heFRpbWVvdXRTZWNvbmRzIjo2MCwiZXh0cmEiOnsibmFtZSI6IlVTRCBDb2luIiwidmVyc2lvbiI6IjIifX1dLCJwYXltZW50SGVscCI6eyJwcmljZV91c2QiOiIwLjAwMSIsIm5ldHdvcmsiOiJCYXNlIG1haW5uZXQgKGVpcDE1NTo4NDUzKSwgYXNzZXQgVVNEQyIsImhvdyI6IlNldHRsZSB0aGUgY2hhbGxlbmdlIHdpdGggYW55IHg0MDIgY2xpZW50LCB0aGVuIHJldHJ5IHRoZSBTQU1FIHJlcXVlc3Qgd2l0aCB0aGUgcGF5bWVudCBoZWFkZXIgKFgtUEFZTUVOVCB2MSAvIFBBWU1FTlQtU0lHTkFUVVJFIHYyKSIsInF1aWNrc3RhcnRfanMiOiJpbXBvcnQgeyB3cmFwRmV0Y2hXaXRoUGF5bWVudCB9IGZyb20gJ3g0MDItZmV0Y2gnOyBjb25zdCBwYXkgPSB3cmFwRmV0Y2hXaXRoUGF5bWVudChmZXRjaCwgeyBwcml2YXRlS2V5OiBwcm9jZXNzLmVudi5YNDAyX1BSSVZBVEVfS0VZIH0pOyBwYXkoJ2h0dHBzOi8vbW9uZXktcmVhY3Rvci5tYWthcjUybm4yMDE2LndvcmtlcnMuZGV2L2FwaS9jcnlwdG8tcHJpY2U/c3ltYm9sPUJUQy1VU0QnKS50aGVuKHIgPT4gci5qc29uKCkpOyIsImZyZWVfc2FtcGxlcyI6WyIvYXBpL2JvdW50aWVzL2RlbW8iLCIvYXBpL3ZlcmRpY3QtY2FyZD9hZGRyZXNzPTB4ODMzNTg5ZkNENmVEYjZFMDhmNGM3QzMyRDRmNzFiNTRiZEEwMjkxMyIsIi9hcGkvaGVhbHRoIiwiL29wZW5hcGkuanNvbiIsIi9sbG1zLWZ1bGwudHh0Il0sImRvY3MiOiJodHRwczovL21vbmV5LXJlYWN0b3IubWFrYXI1Mm5uMjAxNi53b3JrZXJzLmRldi9sbG1zLWZ1bGwudHh0Iiwib3BlbmFwaSI6Imh0dHBzOi8vbW9uZXktcmVhY3Rvci5tYWthcjUybm4yMDE2LndvcmtlcnMuZGV2L29wZW5hcGkuanNvbiIsImNhdGFsb2ciOiJodHRwczovL21vbmV5LXJlYWN0b3IubWFrYXI1Mm5uMjAxNi53b3JrZXJzLmRldi8ud2VsbC1rbm93bi94NDAyLmpzb24iLCJ0aGlzX2VuZHBvaW50IjoiL2FwaS9jcnlwdG8tcHJpY2U/c3ltYm9sPUJUQy1VU0QiLCJub3RlIjoiTm8gc2lnbnVwLCBubyBBUEkga2V5cyDigJQgcGF5IHBlciBjYWxsLiBGaXJzdCBjYWxsIHdpdGhvdXQgcGF5bWVudCByZXR1cm5zIHRoaXMgNDAyIGNoYWxsZW5nZS4iLCJzb2NpYWxfcHJvb2YiOnsicGF5aW5nX2FnZW50cyI6Niwic2V0dGxlZF9jYWxscyI6MjksInNldHRsZWRfdXNkIjowLjMxMywiZmlyc3RfcGFpZF9hdCI6IjIwMjYtMTAtMTlUMDg6NTU6MzcuNjU0WiJ9fSwiZXh0ZW5zaW9ucyI6eyJiYXphYXIiOnsiaW5mbyI6eyJtZXRob2QiOiJHRVQiLCJpbnB1dCI6eyJ0eXBlIjoiaHR0cCIsIm1ldGhvZCI6IkdFVCIsImRpc2NvdmVyYWJsZSI6dHJ1ZSwicXVlcnlQYXJhbXMiOnsic3ltYm9sIjoiQlRDLVVTRCJ9fSwib3V0cHV0Ijp7InR5cGUiOiJqc29uIiwiZXhhbXBsZSI6eyJzeW1ib2wiOiJCVEMtVVNEIiwiYmFzZSI6IkJUQyIsInF1b3RlIjoiVVNEIiwicHJpY2UiOjExMjM0NS42NywiY3VycmVuY3kiOiJVU0QiLCJzb3VyY2UiOiJjb2luYmFzZS1zcG90In19fSwic2NoZW1hIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImlucHV0Ijp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InF1ZXJ5UGFyYW1zIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InN5bWJvbCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJUcmFkaW5nIHBhaXIgQkFTRS1RVU9URSIsImV4YW1wbGUiOiJCVEMtVVNEIn19fX19LCJvdXRwdXQiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZXhhbXBsZSI6eyJzeW1ib2wiOiJCVEMtVVNEIiwiYmFzZSI6IkJUQyIsInF1b3RlIjoiVVNEIiwicHJpY2UiOjExMjM0NS42NywiY3VycmVuY3kiOiJVU0QiLCJzb3VyY2UiOiJjb2luYmFzZS1zcG90In19fX19fX19","x-payment-required":"eyJ4NDAyVmVyc2lvbiI6MSwiZXJyb3IiOiJwYXltZW50X3JlcXVpcmVkIiwiYWNjZXB0cyI6W3sic2NoZW1lIjoiZXhhY3QiLCJuZXR3b3JrIjoiYmFzZSIsIng0MDJWZXJzaW9uIjoxLCJtYXhBbW91bnRSZXF1aXJlZCI6IjEwMDAiLCJyZXNvdXJjZSI6Imh0dHBzOi8vbW9uZXktcmVhY3Rvci5tYWthcjUybm4yMDE2LndvcmtlcnMuZGV2L2FwaS9jcnlwdG8tcHJpY2U/c3ltYm9sPUJUQy1VU0QiLCJkZXNjcmlwdGlvbiI6IkxpdmUgQlRDLVVTRCBzcG90IHByaWNlIGluIFVTRCDigJQgQ29pbmJhc2UgcHVibGljIHNvdXJjZSwgZWRnZS1jYWNoZWQgdXAgdG8gMzBzIiwibWltZVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIiwicGF5VG8iOiIweGY0N2I3ZTU5MTJGZDQyMThhQzRjOTkyQ2RjNkZBRTA0ZTFmRjUxMkUiLCJhc3NldCI6IjB4ODMzNTg5ZkNENmVEYjZFMDhmNGM3QzMyRDRmNzFiNTRiZEEwMjkxMyIsIm1heFRpbWVvdXRTZWNvbmRzIjo2MCwiZXh0cmEiOnsibmFtZSI6IlVTRCBDb2luIiwidmVyc2lvbiI6IjIifX1dfQ=="},"reachable":true,"status_code":402},"x402_manifest":{"bazaar_metadata":false,"body":{"_truncated":true,"top_level_keys":["$schema","x402Version","service","resources","free","mcp"]},"reachable":true,"service_count":0,"status_code":200,"valid_json":true,"well_formed":false}},"grade":"close","integrity":{"algorithm":"Ed25519","canonical_sha256":"575dd0d459eac175799243e3e9a6bb52f52f48379b8ac6b4fdc781450b0aabe6","canonicalization":"json-sort-keys-no-integrity-v1","key_id":"ed25519:67e5239d2bfa367d","public_key":"t3nUNaV3/SIMUb0XIBCazNFdToM3hHEQHReQ71v40wU=","signature":"NqJNXUWy0rV89hU5vGT26ONhtkKug0CaCqId/mszttRb/QIiq0A+5W7pm5CoySDsPs6plQ/1JiJM0BuIMdkwBA==","signed_by":"ontario-protocol"},"max_score":100,"normalized_base":"https://money-reactor.makar52nn2016.workers.dev","provider_listing_next_step":{"endpoint":"https://money-reactor.makar52nn2016.workers.dev/api/crypto-price?symbol=BTC-USD","free_validation":{"charged_now":false,"method":"POST","stores_listing":false,"url":"https://ontarioprotocol.com/api/x402/list-service/validate"},"grade":"close","publication":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","listing_page":"https://ontarioprotocol.com/listings?report_id=vrf_e11dc81cf6c2724f&endpoint=https%3A%2F%2Fmoney-reactor.makar52nn2016.workers.dev%2Fapi%2Fcrypto-price%3Fsymbol%3DBTC-USD#submit-service","method":"POST","network":"eip155:8453","price_usdc":"0.50","url":"https://ontarioprotocol.com/api/x402/list-service","value":"One canonical provider profile, machine-readable JSON twin, badge, live readiness evidence, 30 days of included automatic freshness maintenance, and conditional fresh ready-grade eligibility in strict discovery and Ontario's task-to-tool buyer search."},"ready_for_listing_preflight":false,"recommended_action":{"id":"remediate_before_publication","label":"Fix readiness warnings and re-run the free verifier","payment_recommended_now":false,"reason":"This report is not ready-grade. Publication does not override readiness or strict-discovery eligibility.","url":"https://ontarioprotocol.com/verify"},"report_id":"vrf_e11dc81cf6c2724f","schema":"ontario.provider_listing_next_step.v1","sequence":["Fix readiness warnings until a fresh report is ready-grade.","Validate the complete provider listing payload without payment.","Probe the publication endpoint and inspect its HTTP 402 challenge.","The publication endpoint returns a 0.50 USDC Base USDC x402 challenge."],"signed_evidence_boundary":"This commercial handoff is added after report signing and is not part of the signed readiness evidence.","status":"fix_before_listing","trust_boundary":"Publication processing does not buy a readiness grade, ranking, traffic, leads, purchases, safety, listing acceptance, or future availability."},"readiness_score":72,"recommendations":[{"detail":"The manifest should be JSON and include a services array with endpoint, method, price, network, and asset metadata.","docs_url":"https://ontarioprotocol.com/.well-known/x402.json","id":"x402_malformed","title":"Fix the x402 manifest shape"},{"detail":"Name, description, category, tags, owner URL, and contact fields make services usable in agent marketplaces.","docs_url":"https://ontarioprotocol.com/listings","id":"bazaar_metadata_missing","title":"Add listing metadata for Bazaar-style catalogs"}],"report_id":"vrf_e11dc81cf6c2724f","report_url":"https://ontarioprotocol.com/verify/report/vrf_e11dc81cf6c2724f","signals":{"accepts_entries":true,"bazaar_metadata":false,"endpoint_reachable":true,"facilitator_metadata":false,"homepage_reachable":true,"https":true,"manifest_fresh":false,"network_consistent":true,"openapi_schema":true,"payment_challenge":true,"price_format_valid":true,"robots_present":true,"schema_org_present":true,"x402_manifest_present":true,"x402_manifest_well_formed":false},"status":"ok","submitted_url":"https://money-reactor.makar52nn2016.workers.dev/api/crypto-price?symbol=BTC-USD","target_url":"https://money-reactor.makar52nn2016.workers.dev/api/crypto-price?symbol=BTC-USD","verified_at":"2026-10-27T17:19:52.935093+00:00","verifier":"ontario.x402-readiness.v1","warning_penalty":8,"warnings":[{"detail":"Expose facilitator details plus asset, payTo, scheme, timeout, and resource fields so clients can verify and settle payments deterministically.","docs_url":"https://ontarioprotocol.com/docs#facilitator","evidence":{"issues":["manifest.facilitator or service.facilitator is missing"]},"id":"facilitator_metadata_gap","severity":"warning","title":"Publish facilitator and settlement metadata"},{"detail":"A stale or missing manifest timestamp makes agents doubt whether prices, networks, and facilitator metadata still describe the live endpoint.","docs_url":"https://ontarioprotocol.com/.well-known/x402.json","evidence":{"issue":"manifest has no generated_at, updated_at, last_updated, or dateModified timestamp"},"id":"manifest_stale","severity":"warning","title":"Refresh the x402 manifest timestamp"}]}
