isitagentready.com readiness benchmark, launching our unified HTTP 402 Payment Required Agent Payment Gateway (/api/v1) over the Bitcoin Lightning Network.402 challenge-response cycle - with zero accounts, zero KYC, and zero server-side private key custody.| Capability | Endpoint / Header | Standard |
|---|---|---|
| API Catalog | https://tunnelsats.com/.well-known/api-catalog | RFC 9727 (application/linkset+json) |
| Link Discovery Headers | Link: </.well-known/api-catalog>; rel="api-catalog", </openapi.json>; rel="service-desc"... | RFC 8288 |
| Markdown Content Negotiation | Accept: text/markdown -> Content-Type: text/markdown; charset=utf-8 + x-markdown-tokens | RFC 9110 (Vary: Accept) |
| Content Signals & AI Rules | Content-Signal: ai-train=no, search=yes, ai-input=yes + robots.txt | AI Input & Search Policy |
| OpenAPI + L402 Discovery | https://tunnelsats.com/openapi.json | OpenAPI 3.0.3 + x-service-info & x-l402-payment-info |
| Agent Auth Guide | https://tunnelsats.com/auth.md | Machine-readable Auth (Bearer, NIP-98 Nostr, L402/x402) |
| LLM Documentation Index | https://tunnelsats.com/llms.txt & https://api.tunnelsats.com/llms.txt | llms.txt Specification |
402 Agent Gateway (/api/v1)/api/public/v1/subscription/create -> /claim) used by StartOS, Umbrel, and custom node dashboards, we have launched a unified HTTP 402 Payment Required gateway at https://tunnelsats.com/api/v1:GET /api/v1)GET https://tunnelsats.com/api/v1 returns 200 OK with machine-readable discovery metadata and step-by-step instructions. Passive agent probes never trigger unpaid invoice spam or receive placeholder BOLT11 strings.POST /api/v1 -> HTTP 402)POST https://tunnelsats.com/api/v1 with { "serverId": "eu-de", "duration": 1, "wgPublicKey": "<44-char-base64>" } and no Authorization header, TunnelSats:lnbc) BOLT11 invoice via LNbits and cryptographically validates its secp256k1 recoverable signature, paymentHash, amountSats, and active expiry (expiresAt > now).libmacaroons / gopkg.in/macaroon.v2 wire format) with the 66-byte L402 identifier (uint16be(0) || paymentHash[32] || tokenId[32]), signed by a unique encrypted per-order 32-byte root key (HKDF-SHA256 + AES-256-GCM).order_id, server_id, duration, amount_sats, tunnelsats_valid_until, and wg_public_key) and supports client-side first-party caveat attenuation (SatisfyPrevious subset narrowing on tunnelsats_valid_until, services, tunnelsats_capabilities, and tunnelsats_action).HTTP 402 Payment Required with:WWW-Authenticate: L402 macaroon="<base64_v2_macaroon>", invoice="lnbc..."PAYMENT-REQUIRED: <base64_json> - an experimental x402 v2 discovery adapter envelope (x402Version: 2, scheme: "l402", CAIP-2 Bitcoin mainnet network: "bip122:000000000019d6689c085ae165831e93", asset: "SAT", extra.adapterRole: "discovery").Authorization: L402 <macaroon>:<preimage> -> HTTP 200)preimage (SHA256(preimage) == paymentHash). The agent replays POST https://tunnelsats.com/api/v1 with:SHA256(preimage) === paymentHash, confirms invoice settlement, provisions the WireGuard peer on the target VPN server, and returns 200 OK with the tunnel configuration (server, peer, vpnPort, subscriptionEnd).maxTimeoutSeconds), while the L402 macaroon's tunnelsats_valid_until caveat grants an additional 24-hour redemption grace window (invoiceExpiresAt + 86400). Even after 24 hours, any settled invoice remains permanently claimable via Claim WireGuard Configuration After Payment Settlement (POST /api/public/v1/subscription/claim with { "paymentHash": "<64-char-hex>", "wgPublicKey": "<base64_pubkey>" }).402 gateway is built around client-held WireGuard keys:wg genkey / wg pubkey).wgPublicKey is sent in POST /api/v1 and bound into the L402 macaroon (wg_public_key=<base64_pubkey>).server + peer + vpnPort parameters (config: null). Your private key never touches our servers or network logs.curl + lncli) implementations.GET /api/v1) and Autonomous Agent HTTP 402 Gateway (POST /api/v1).Bearer), Nostr Auth (NIP-98), and Agent Payments (L402 / x402).