{"name":"Node Scorecard API","summary":"Independent measurement and scoring of the Sentinel dVPN network. Pay per call in USDC over x402 — no account, no API key, no signup.","version":"1.0.0","base_url":"https://nodescorecard.xyz","payment":{"protocol":"x402","x402_version":2,"networks":[{"network":"eip155:8453","network_name":"Base mainnet","asset_symbol":"USDC","asset_address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","asset_decimals":6,"pay_to":"0x0fcc5724d2dddf79ce1af1f091a823fd6438ef73"},{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","network_name":"Solana mainnet","asset_symbol":"USDC","asset_address":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","asset_decimals":6,"pay_to":"7KjmSaLhpJJScHEdmUV2CDR47FVxR7jv7DV8QEMszhDi","note":"The facilitator sponsors the transaction fee, so no SOL is needed to pay."},{"network":"eip155:137","network_name":"Polygon mainnet","asset_symbol":"USDC","asset_address":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","asset_decimals":6,"pay_to":"0x0fcc5724d2dddf79ce1af1f091a823fd6438ef73"},{"network":"eip155:42161","network_name":"Arbitrum One","asset_symbol":"USDC","asset_address":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","asset_decimals":6,"pay_to":"0x0fcc5724d2dddf79ce1af1f091a823fd6438ef73"},{"network":"eip155:43114","network_name":"Avalanche C-Chain","asset_symbol":"USDC","asset_address":"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E","asset_decimals":6,"pay_to":"0x0fcc5724d2dddf79ce1af1f091a823fd6438ef73"}],"network":"eip155:8453","network_name":"Base mainnet","asset_symbol":"USDC","asset_address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","asset_decimals":6,"pay_to":"0x0fcc5724d2dddf79ce1af1f091a823fd6438ef73","facilitator":"https://facilitator.payai.network","how_it_works":"Call any paid endpoint. The 402 response carries a PAYMENT-REQUIRED header with the full x402 payload. Sign and retry with the PAYMENT header. Failed requests (HTTP >= 400) are never settled."},"chain_registry_example":{"registered_total":null,"active_on_chain":1254,"active_pct":null,"measured_at":"2026-09-08T19:06:09Z","live":true},"data_source":{"collector":"superpios/node-scorecard","method":"Independent collector polling every active node API directly, plus on-chain state. Not self-reported by node operators.","refresh":"hourly","response_cache_seconds":600},"free_endpoints":[{"method":"GET","path":"/","description":"This page (HTML for browsers, JSON for agents)."},{"method":"GET","path":"/manifest","description":"This document."},{"method":"GET","path":"/llms.txt","description":"Plain-text summary."},{"method":"GET","path":"/scorecard/health","description":"Liveness and configuration."},{"method":"POST","path":"/mcp","description":"Model Context Protocol server (stateless, 2026-07-28 and 2025-11-25). Free tools: sentinel_network_overview, sentinel_node_lookup, sentinel_top_nodes."}],"paid_endpoints":[{"method":"GET","path":"/scorecard/network-stats","price_usd":0.01,"description":"Network-wide Sentinel dVPN health report: ASN concentration and HHI index, verified residential share, protocol mix, censorship-resistance mix, country distribution, SLA speed percentiles, P2P price percentiles. Also returns chain_registry: lifetime node registrations on the Sentinel chain versus nodes currently in active status, counted directly on-chain — the gap shows how much of the advertised network is actually alive. Pass network=akash for the Akash DePIN compute aggregate instead, which also returns trends_summary: how many providers are improving or declining in score over the tracked history.","query_params":{"network":{"type":"string","enum":["sentinel","akash"],"default":"sentinel","description":"Which network's stats: 'sentinel' (default) or 'akash' (DePIN compute aggregate: GPU capacity, country distribution, score percentiles). For akash, the response also includes a historical trend block (score, uptime and free GPU over time, with direction and delta)."}}},{"method":"GET","path":"/scorecard/recommend","price_usd":0.01,"description":"Ranked node recommendations for a stated need, diversified across ASNs and countries so the result is not concentrated on one provider. Returns one recommendation plus three alternatives.","query_params":{"need":{"type":"string","description":"Free text describing the requirement, e.g. \"privacy residential\" or \"speed europe\". Matched case-insensitively."},"country":{"type":"string","description":"Restrict candidates to a single country, exact name, case-insensitive, e.g. \"Germany\"."}}},{"method":"GET","path":"/scorecard/nodes","price_usd":0.005,"description":"Snapshot of nodes with composite score, reliability, uptime, SLA speed, price, ASN, jurisdiction freedom and residential verification. Returns active nodes by default. Pass network=akash for DePIN compute providers (Akash).","query_params":{"all":{"type":"string","enum":["1"],"description":"Set to 1 to return every tracked node instead of only the active ones."},"network":{"type":"string","enum":["sentinel","akash"],"default":"sentinel","description":"Which network to score: 'sentinel' (dVPN nodes, default) or 'akash' (DePIN compute providers; native GPU/uptime/audit shape, online providers only)."}}},{"method":"GET","path":"/scorecard/nodes/top","price_usd":0.005,"description":"Top nodes by composite score, with filtering and anti-concentration controls. Pass network=akash for top DePIN compute providers (Akash).","query_params":{"n":{"type":"integer","default":5,"minimum":1,"maximum":50,"description":"How many nodes to return. Values outside the range are clamped."},"max_per_asn":{"type":"integer","default":2,"minimum":1,"description":"Anti-concentration cap: maximum number of returned nodes sharing one ASN."},"min_score":{"type":"number","default":0,"description":"Minimum composite score, 0 to 100."},"country":{"type":"string","description":"Exact country name, case-insensitive."},"protocol":{"type":"string","enum":["v2ray","wireguard","xray","openvpn","hysteria2","amneziawg"],"description":"Filter by protocol. Also matches multi-protocol nodes that advertise it."},"sla_only":{"type":"string","enum":["true"],"description":"Set to true to return only nodes that passed the SLA speed test."},"network":{"type":"string","enum":["sentinel","akash"],"default":"sentinel","description":"Which network to score: 'sentinel' (dVPN nodes, default) or 'akash' (DePIN compute providers; native GPU/uptime/audit shape, online providers only)."}}},{"method":"GET","path":"/scorecard/node/:address","price_usd":0.003,"description":"Full scorecard for a single node, addressed by its sentnode1... bech32 (Sentinel) or akash1... owner (Akash) address. For akash the response also carries a trends block: score, uptime and free-GPU history for that provider, with direction, delta, min and max over the tracked window, so an agent can tell whether it is improving or declining before committing spend.","query_params":{"network":{"type":"string","enum":["sentinel","akash"],"default":"sentinel","description":"Which network to score: 'sentinel' (dVPN nodes, default) or 'akash' (DePIN compute providers; native GPU/uptime/audit shape, online providers only)."}}}],"capabilities":{"receipts":{"supported":true,"lookup":"/receipt/{requestId}","hash_algorithm":"sha-256","canonicalization":"JCS/RFC8785","note":"Every paid response carries an X-Receipt-Id header. GET /receipt/{requestId} returns a verifiable receipt binding the payment to a hash of the exact bytes served: the bytes you pay for are the bytes you get."},"mcp":{"endpoint":"/mcp","transport":"stateless"}}}