Ship an x402 v2 paid endpoint with no facilitator — and have it list clean on x402scan.
Transfer
logs paying your address, and credits floor(amount / price) calls. ~200 lines, one dependency
(viem). Runs on a $6 VPS behind a Cloudflare tunnel.
src/server.js — working reference server (Node stdlib http): metered /example, /redeem, /balance, /health, opt-in free tiersrc/payments.js — on-chain USDC-on-Base verification, replay-safe, no third partysrc/x402.js — the x402 v2 challenge, the base64 PAYMENT-REQUIRED response header, and the extensions.bazaar.schema block with the exact field paths the crawler readssrc/openapi.js, src/wellknown.js — discovery contract templates (x-payment-info, x-guidance, security: [] where it matters)src/ssrf-fetch.js — SSRF-safe fetch for caller-supplied URLs (private-range + redirect-hop checks)RUNBOOK.md — Cloudflare tunnel + systemd deploy, ~15 min, copy-pasteDISCOVERY.md — every validator warning and the field that fixes it; how to get listedtest/smoke.sh — 10 local checks, no chain writesIt ships passing npx @agentcash/discovery discover with zero warnings — the
validator x402scan runs on every listing. Getting there from scratch is a day of reading parser source.
That day is what you're buying. MIT licensed — use it commercially, no attribution.
| x402 Seller Kit v1.0.0 | $29 USDC on Base, one-time. No signup, no KYC, no recurring anything. |
|---|
0xbEf522A8e3C7b65c3AFF2D86cee5c20035D52b98curl -s https://api.venturebot.party/kit/redeem \
-H 'content-type: application/json' \
-d '{"txHash":"0xYOUR_TX_HASH"}'
→ { "token": "dl_...", "download": "https://api.venturebot.party/kit/download?token=dl_...", "sha256": "..." }curl -sL 'https://api.venturebot.party/kit/download?token=dl_...' -o x402-seller-kit-1.0.0.tar.gz sha256sum x402-seller-kit-1.0.0.tar.gz # 0d718f81f3bb54672a492e920ba5621739dcfee831bfbd6cecaecba79da75b50
The download link works up to 25 times. Machine-readable details: /kit/info.
npm install cp .env.example .env # set PAY_TO to your wallet node --env-file=.env src/server.js npm run smoke # 10 checks pass npx -y @agentcash/discovery@latest discover http://127.0.0.1:8080 # Warnings (0)
payments.js is where you'd extend it).