{"_id":"agent402-tollbooth","_rev":"29-13ffb2f52d0bfebcd32ca1172d797f23","name":"agent402-tollbooth","dist-tags":{"latest":"0.10.4"},"versions":{"0.1.0":{"name":"agent402-tollbooth","version":"0.1.0","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","self-hosted","mcp","ai-agents"],"author":{"url":"https://github.com/MikeyPetrillo","name":"Mikey Petrillo"},"license":"MIT","_id":"agent402-tollbooth@0.1.0","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"2593a0abfa891f6f2de9428551a2ed789cf9c87e","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.1.0.tgz","fileCount":6,"integrity":"sha512-GDBvxh7PiOTHRMlePyfgMLonL7zQUUU1xd/rE8XSAaxxjeEyubuO0afIZM98hv0O9JLA6iWt3AdvQsFXVJBfJQ==","signatures":[{"sig":"MEQCICzlj2U2CTa/vftgwwj0Gn3eoRYv+5fgakvujsir9oUwAiBKY0H1cOKX2+FOK4ecyFZJZi4JE8OccNh2FUHsuu7qlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19302},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"c461f4e6d3a782e39ab2ad095dfe5294239e92d9","scripts":{"test":"node test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402, or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no signup.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.1.0_1781454182539_0.5996867170764131","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"agent402-tollbooth","version":"0.1.1","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","self-hosted","mcp","ai-agents"],"author":{"url":"https://github.com/MikeyPetrillo","name":"Mikey Petrillo"},"license":"MIT","_id":"agent402-tollbooth@0.1.1","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"0c471bcb9363e6116d4f8b7ca43edbe0698c23aa","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.1.1.tgz","fileCount":7,"integrity":"sha512-Bt6H/m1sZtA1ps5dPlxFemQ4fRj8aawPSxKwhuwjEL5lx447l2eeeHWGxcCci+E+G3/AvFyv8Mq6rzvnUN18eA==","signatures":[{"sig":"MEQCIHwF8nszqR2aokLGJ85SfUqeOIpiO+lKm1xShT5F7BVTAiAzNbyvq+QYeVEqe5XlrphGV/FMZV7QisrTaDhNP1vlUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23379},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"b0e61bf4edc817227aa696ebc2cced5d5605a153","scripts":{"demo":"node demo.js","test":"node test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402, or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no signup.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.1.1_1781455989480_0.2380613785510819","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"agent402-tollbooth","version":"0.1.2","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents"],"author":{"url":"https://github.com/MikeyPetrillo","name":"Mikey Petrillo"},"license":"MIT","_id":"agent402-tollbooth@0.1.2","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"0e0617e49ca6a6f704fb03cb4993b1ff2e8c70b1","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.1.2.tgz","fileCount":9,"integrity":"sha512-BD5Nn84ZHgHtAV+/YkBp1//w8DEpepLRW2bRdLdJO43Xj4Hm3v5usgB0cwui2iux2YzUpRymYK+BtqglEI5Dnw==","signatures":[{"sig":"MEQCIC8OZiw3dmf3FkeJZFwloNLnN5wl4SNgBceIHk2uweU+AiALw2Z44c9+k/2VyZcCHjWXPs0y8wQs+X0S9rPkqJMf/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32728},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"3246b5bdedfa482630fee74255fbc7e83ca12444","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402, or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no signup.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.1.2_1781456549116_0.9751335427121886","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"agent402-tollbooth","version":"0.1.3","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents"],"author":{"url":"https://github.com/MikeyPetrillo","name":"Mikey Petrillo"},"license":"MIT","_id":"agent402-tollbooth@0.1.3","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"3da4393c7c897949c24b98a9f432fbf538a43864","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.1.3.tgz","fileCount":9,"integrity":"sha512-WIEbckzppyfaJxE7uzW1ZTCcW5QfP+72PIgq+YSgLxelvC+WkP1wsSLtLkqCPuNP9h/fjRhT3jTY+xfuZsq/2g==","signatures":[{"sig":"MEQCIENBjG6yyO/GD/u9qpXXcEpHf47lwVXZpT+RBwYOrfguAiAFI9kQUxyMxBK8iE+C58Eseyyyv5iAwGFLw0BE9w5vQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37242},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"b6bb2780d27e36425e86fa1e35d6b6c48c40e51c","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402, or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no signup.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.1.3_1781458284446_0.5851122901513304","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"agent402-tollbooth","version":"0.1.4","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents"],"author":{"url":"https://github.com/MikeyPetrillo","name":"Mikey Petrillo"},"license":"MIT","_id":"agent402-tollbooth@0.1.4","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"a9eef39b7a8f13e675e69f4e27a028874ac5c659","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.1.4.tgz","fileCount":9,"integrity":"sha512-YOyLz2jYSld7lYphyzewSXBPW0enf/JvYvKsNBwCMOYPMpx1pLLKR9otTdieRIcS5KleWJEYTz55mM3iovNRNA==","signatures":[{"sig":"MEYCIQDWIsOr2qYAz7s/i2jBB/AK/az/JMhbyuvL2TcvemClPgIhALbQdcdRBoOc9CM2kekl6oxgMRuVFWhT17WbgKOlamIF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37938},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"8e567f756121fa8762304fd1861de258ca0d25b5","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402, or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no signup.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.1.4_1781464254056_0.3829103562582137","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"agent402-tollbooth","version":"0.2.0","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents"],"author":{"url":"https://github.com/MikeyPetrillo","name":"Mikey Petrillo"},"license":"MIT","_id":"agent402-tollbooth@0.2.0","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"c0ce0727bdb459f79c7ca2d906192973c8de5e52","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.2.0.tgz","fileCount":10,"integrity":"sha512-MR0HZyH0Q1W5/au7UlB2mdzX6LpQJxtrZ7wMDnL49vc/oLc8mN3ma6rb9A04nMFn9FkXOL2m/oLSO3MnUWi2Dw==","signatures":[{"sig":"MEUCIAVUtO3Wm/sfCphCbq8rkeFKhHEOEUrQYIjd/JA98XS1AiEAhkESUavpYzWZBq+pOmvpP3Mk2rzJ0cPcLsSqygpphfM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47148},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"738f89c38dee57cddcb7ad907a02635a4a9dc6c8","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402, or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no signup.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.2.0_1781555996588_0.08425944688553844","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"agent402-tollbooth","version":"0.3.0","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents"],"author":{"url":"https://github.com/MikeyPetrillo","name":"Mikey Petrillo"},"license":"MIT","_id":"agent402-tollbooth@0.3.0","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"ea6a068bb93caeae7a7d1732200f0e9c53cf66ff","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.3.0.tgz","fileCount":11,"integrity":"sha512-lJ7P4OUsgCcQD5TiraQmkzG/wFABGheb8Q903EqnkuKw/l/s9EbfZGOhJr3VaZv+PVDxkQNONJ50CqI5BH0FKQ==","signatures":[{"sig":"MEUCIQDOG67pb4wmvo6qP+6eBzLEx4e0wfJVol+Wmhryv4etkQIgFMnBr+Wniq7FiD2Pn78InFFjxoMvaG4NnuvOAEPD/eg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62009},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./edge":"./edge.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"7e234a09826f7d2cccd9362456b15ca069a9bfc6","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402, or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no signup.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.3.0_1781579487374_0.3669835818982381","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"agent402-tollbooth","version":"0.3.1","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents"],"author":{"url":"https://github.com/MikeyPetrillo","name":"Mikey Petrillo"},"license":"MIT","_id":"agent402-tollbooth@0.3.1","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"a91d11cf29e2c3a90bf2949c4c536e4f326cac27","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.3.1.tgz","fileCount":11,"integrity":"sha512-pjD8qRaFgwRDWbCit5wS4qZggY4EAOHyuHBWFmCq6s44fQmT6OBJoroAX4ZoVSMvrfHWXAaYYcBttZ0EjUV5VQ==","signatures":[{"sig":"MEQCIEknKHlt0t5j6otYaShK8WAh1zXT47hL/wUfHY2hgsEKAiBEdsow/Rk8FDlxpsO8XC3ovmxLWtfFLHMUasPeGPDWxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64930},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./edge":"./edge.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"996a5bfc0134b032dcbb50a90b76fa538f4b5fa0","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402, or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no signup.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.3.1_1781581057049_0.3711386113074162","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"agent402-tollbooth","version":"0.4.0","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg"],"author":{"url":"https://github.com/MikeyPetrillo","name":"Mike Petrillo","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.4.0","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"922756a9f4708af0c9452edf5eae1dc82a28749d","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.4.0.tgz","fileCount":11,"integrity":"sha512-Xr1bXBovMWoKd4W0ynmp9Q7m1iU/+8iZaae2kSKOM4pHbUkbVPEO+ew/wF5aQ1UPT27Qw7pxPYD+ee4uGSV4ig==","signatures":[{"sig":"MEYCIQD6y5WfRT4yrU33K3EYACBVUyQj1NFwvi7o06Sgdv9RAAIhAO71Djcl22ulRRg431S7Xh+Gp7PGYxpd+itTABP5XCMp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":81645},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./edge":"./edge.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"34d56f401d08cf1510d424e401f6ab9804fda829","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402 — or USDG on Robinhood Chain — or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no s","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.4.0_1783045672681_0.9145030469221107","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"agent402-tollbooth","version":"0.4.1","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg"],"author":{"url":"https://github.com/MikeyPetrillo","name":"Mike Petrillo","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.4.1","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"32125a2d5092e1b8c4dc922c36466dd4f8383554","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.4.1.tgz","fileCount":11,"integrity":"sha512-nYEBMuDwUUKL3xGLRTmkcmPtKks/O801X9h7FJxb9p/nhulR1MIeTUYE+x6msoXSDGsb7zRef7whlvgr3BUi+Q==","signatures":[{"sig":"MEUCIAa8+tjcDQAjceahxRFDaIS/38TY8Nt8frhSWdtV1BGJAiEAmcKJBN0emzN175rgrnDXMSYagmwbUKIDsTfalshEH4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":81688},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./edge":"./edge.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"62a2a1a771d546ca0cb2753487cd95ef91383ab2","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402 — or USDG on Robinhood Chain — or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no s","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.4.1_1783097011732_0.10849079094878511","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"agent402-tollbooth","version":"0.4.2","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.4.2","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"fbd69ba0de4e6db66241b3d6a246efe9393d91c6","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.4.2.tgz","fileCount":12,"integrity":"sha512-PsK/acQV/XEaVfMjKQlSHqp5ET1kf0Nkg7BHY6R2qpLCaQIulJH90MDb2+35G5z9Oi6PCrx/83j80gRyN/xkAQ==","signatures":[{"sig":"MEUCIQCo+0q16PT7/Gg+suHCXu2kZuP3xcXlHQA9X8mcsG27EwIgcJlgbnFzJCYxhlZgAzAOqU3WnSs20qj69K0AWa8h5Lo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":83362},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./edge":"./edge.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"35f54f811ead9774c255deb74d0632b4bea6de08","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402 — or USDG on Robinhood Chain — or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no s","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.4.2_1783373831319_0.7891250234177329","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"agent402-tollbooth","version":"0.4.3","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.4.3","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"e2336fa1c658eeae651ac0d853d0fb1dea568741","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.4.3.tgz","fileCount":12,"integrity":"sha512-7Ov/ao9Y6l4ETBuX3o1qSYRn2wrW5sdYzXlzo0R5rN8d/GuD67e4yS1bUZ7wzZ5XAaTod0ZwqPIb9Em3xetodg==","signatures":[{"sig":"MEUCIDaD631fiqwrDuf0sCq+OXNWVsknEGBejNVDT1oVc4NJAiEA7AP3SfEEDXwpiw0U7r3YOE1mblZcUeGwP3j4vVrfny0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":83908},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./edge":"./edge.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"6332571e61f33e8cff68dce7722028d44aeeb530","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402 — or USDG on Robinhood Chain — or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no s","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.4.3_1784347611028_0.6289517633526764","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"agent402-tollbooth","version":"0.5.0","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.5.0","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"2f13d7d7d323ab00acf6891b5cd441b02a89b948","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.5.0.tgz","fileCount":12,"integrity":"sha512-5GrN2PMFIXufI2xiLttdNc7k1GfXAyzlNN56fVt3XFxkYz+SmTHDCL2itKqMzpXNtT5dFSr41TXx6yYjCHSLbA==","signatures":[{"sig":"MEUCIQCFKVVk2oVPmxlMj0FRKyE3UOYaTWd6yhj0JYRKJqXVswIgIDpveL9ZcM9lc1aJv1CIAVHHt7cg6dsr/F3n8mc7nOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":95424},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./edge":"./edge.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"9e48a10c04e89f1ee144f3d6751c782f09235965","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402 — or USDG on Robinhood Chain — or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no s","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.5.0_1785410364249_0.0346806085505178","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"agent402-tollbooth","version":"0.6.0","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.6.0","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"1461d9c20f5be6eb2396ed0352f6f56b459e48bd","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.6.0.tgz","fileCount":13,"integrity":"sha512-sIoAuAPpSfcJjFLf8sjPNTlXt/Ea0lLPVlR/Mmb3/5aYBHqRZzrugU1OXqZ7C02wrA/0pOjfltGvaf/mY8e2Ag==","signatures":[{"sig":"MEUCIQDScQMGIkbNBGSkGz1L8iNgT5sa/0cQmb/zJqHqzHxXvgIgee0d7nmpdrh/oPQ9A3JZD2WO0utYHQS4k0I2S2cJCXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115902},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./edge":"./edge.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"ccc11f545fbe981043ad3cfe04f555c59f35307f","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402 — or USDG on Robinhood Chain — or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no s","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.6.0_1785420913152_0.16089652505608631","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"agent402-tollbooth","version":"0.6.1","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.6.1","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"68abb5800e130c4fff814869c3d787b6b6445d92","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.6.1.tgz","fileCount":13,"integrity":"sha512-JbeD/bCNnD5rkNSpaQET7RnWO7dGjtT++YU3glvXkKeo6YaUPl5E0sh3e4pBkNovCh4ttyG8SkLvTCRTs1Sj+w==","signatures":[{"sig":"MEYCIQDjl2OpLvbNJZX/yTFQcffXP1MZp29TbXlLOnOJ7J+KlQIhAPShdbwyzuUp5zE3Yhcy96TQYCCsBA9s32xRKU/zQN3D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":119848},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./edge":"./edge.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"23106a00b83984d89f9cf0bbe5dd76cfb660ef59","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402 — or USDG on Robinhood Chain — or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no s","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.6.1_1785422971808_0.2543132622361539","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"agent402-tollbooth","version":"0.6.2","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.6.2","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"f1f712a682313be982b66f6db26957d5d16a3c66","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.6.2.tgz","fileCount":13,"integrity":"sha512-8wtXVgNT+mbdDwBLlxLYoNqMb3tvQEKPZ6Jt4TrSh72KFtq0Yt408Qel2bKmUU6pxFU4V4HdTge4pd/Z+Pt1Qw==","signatures":[{"sig":"MEUCIQCXPxQW/5o2cGoPKj8/N3rgzkSDl/bQAbD1AwYNGS39cQIgIboCyyvl5Mq0GwWUHK5ZiY+5oEH4OiB73hsy9x+y0rk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120993},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./edge":"./edge.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"a3f71ee0623196010cabda0bcc33162ce073339b","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"agenttools1775","email":"lost.me@icloud.com"},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"10.9.8","description":"Open-source, self-hostable x402 pay-per-crawl tollbooth: charge AI bots per request (USDC via x402 — or USDG on Robinhood Chain — or free proof-of-work) while humans browse free. Drop-in Express middleware or reverse proxy — no Cloudflare, no Stripe, no s","directories":{},"_nodeVersion":"22.23.1","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.6.2_1785450392713_0.04370821587956275","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"agent402-tollbooth","version":"0.7.0","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.7.0","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"eafc5f89917ef0051b17bac1525366a6a08311c5","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.7.0.tgz","fileCount":14,"integrity":"sha512-K+QfSsh2UyyrvAWj4nBUBw/OuBrmcqoJ4TT6/ZO1ZUC5apLuUi/8Lw/QEgGSp7FnCCo7lxUrb6mJHS/0RRG8aA==","signatures":[{"sig":"MEYCIQDhgmDMNorAE3dHSylZDvolmekg5x8Hqyve3dY48mRCOwIhAJ7dFME3VeQhEqFZWcn0ZI4lc4yJbKG+u7kBL1vuaVFs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":144333},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"18edd2be35a480e3371ab50dd35af97581ef4691","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Open-source, self-hostable pay-per-crawl tollbooth for x402 AND MPP: charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, or free proof-of-work) while humans browse fr","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.7.0_1787061019444_0.5051823722899955","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"agent402-tollbooth","version":"0.8.0","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.8.0","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"615d5c9d1ef5346059daf1b9c5a0738bb008e82e","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.8.0.tgz","fileCount":14,"integrity":"sha512-9jUZeQAdkWfATN19Lf3a+mdKXI/e4vQgig2L1gJqcU4hpYLjLMR2Bo6a5kj4lnnB9VfNdTUJuywiXOt585eaXw==","signatures":[{"sig":"MEUCIHE4jEMpc811w+uLr/RgG8c7Fqf+D/vVhOO1FSSD1lgGAiEAiEagECnDmtFxc0NDOzs41wMnh5wTR1Vwri6HXJ8G/nc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":152106},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"e585a785cbdc44baa65171605284fba0d9d2f8d0","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agentic Finance (AIFI) sell side: open-source, self-hostable pay-per-crawl tollbooth for x402 AND MPP: charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, or free pro","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.8.0_1787075033656_0.2587936165996201","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"agent402-tollbooth","version":"0.8.1","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.8.1","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"2b7a8adb7ae816efb0a2fb1adf2df75142e15e97","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.8.1.tgz","fileCount":14,"integrity":"sha512-+gn7yvoHzD+ewSykSvXJ4wZa4qlk/CTuk/KOgFb+fjr5ExWKu7VHZYOjGXJPnfl1VN32Gyq6AlIfTkxYQ0tSQg==","signatures":[{"sig":"MEQCIAiTxY6nm+FFI57o99jw1knAAOyzamm9tWm4jkcbM8cYAiB9j3//IwIdRu+Q9RjWMuhVfNsTwG7LU72SOhEG4NLHfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":152298},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"e8a407ca6739f7da62860d2f26958b03866c4e84","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agentic Finance (AIFI) sell side: open-source, self-hostable pay-per-crawl tollbooth for x402 AND MPP: charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, or free pro","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.8.1_1787080656773_0.13288335731785716","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"agent402-tollbooth","version":"0.8.2","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.8.2","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"ccd62245cf053480ace350565b53380d87e2f57e","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.8.2.tgz","fileCount":14,"integrity":"sha512-rQmKYPgPPs/uNNKKr7WAtdgSC4nxyU4fk0TWzaX3QUNF/MnS55LcYeAxCHH2cF3yiXtzZ0cE17CjJ1i4gHCvzw==","signatures":[{"sig":"MEQCIGLx8WnATUHGQ3OgOr9TIoqPJtLfT+1uhJjFWiMsvBjpAiBYXfKAbIpZJaUYNXgdT7qXg3Jm/j53oVKxQAAAD1O+Uw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":152302},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"4cf38ee4a3a27aa387c9c0aa82a9ec285c7fe9e3","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.8.2_1787088255072_0.9984751288802836","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"agent402-tollbooth","version":"0.9.0","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.9.0","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"e438d57cb40e0807e38ee5fe9e8c7f2c2c10baeb","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.9.0.tgz","fileCount":15,"integrity":"sha512-hRLCE7qs4HCNqgBB5YlVjZj4IkHt7lSo9ZDuHv3CU1aqVGohO83TuDuueIffzKdmnjY0lp5UNOsctIpkbiafQg==","signatures":[{"sig":"MEUCIHWNyFzX54vwva1mLxYMfXUrTJF5i0GTGFlXnMXBolQmAiEA8Z9h71bsL48jR92SoWv9HP7WeVUMHhLPyEz9K2MN7aQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175594},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"fba013e0586c704c16710be5b650fa3a51163977","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.9.0_1787169388774_0.6553326004498969","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"agent402-tollbooth","version":"0.9.1","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.9.1","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"f778572c1479b0f03faaa03cb22b3f822ee1cede","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.9.1.tgz","fileCount":15,"integrity":"sha512-PFcHztCB1RJBdK4rDFQ/biutwFWqrDc5659mELiASOzkyC5qMyro/LwblfEhVGCJSSxveJ7yTux0eXWgMeJLAg==","signatures":[{"sig":"MEUCIB7SiGTxGi/JyI4kzJYn8quY/V9fWimGRaxTySGhird3AiEA5ygQnrA1aR/bYGIjNLg88mpHJFNPdIjUzkNMxAKLfcQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":177105},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"45233590f34441bd991e1c604d4f180725af0e22","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.9.1_1787171660671_0.6158903696235456","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"agent402-tollbooth","version":"0.9.2","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.9.2","maintainers":[{"name":"agenttools1775","email":"lost.me@icloud.com"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"bf1dc51848743447a7e7aecfd22ee9030c1da194","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.9.2.tgz","fileCount":15,"integrity":"sha512-otUNlp23v0/RMQXBO3r1N4XCBjavFWp7YpEs8KnEpHkHlt7xbny6kFqxZOSg5ljmsJEZ2O5C3PsCF7JUtRjQSg==","signatures":[{"sig":"MEUCIFfDkEzQbboKztzwp/HZod9h32UO7Okkm4AUWnnQjMXkAiEA1J44IJyowhYHU/HJYZ1rrwjFEIMu3wwRmISuqt563nQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":186695},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"44c1174964d7fda04037ab3552aba7a2a8eb2ea7","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.9.2_1787198640586_0.26740008172402097","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"agent402-tollbooth","version":"0.9.3","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.9.3","maintainers":[{"name":"agenttools1775","email":"mike@agent402.tools"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"68304762acbb7c88ef27429344d07b4d248ef60a","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.9.3.tgz","fileCount":15,"integrity":"sha512-nCAkl5So+D2RY8QcA1NE9BKbjrJ352O7t/zcXJ6nwBGYs8I8bwsrAKcE8jumN9Nr16h7Jt5kDsKm20DWm18nfA==","signatures":[{"sig":"MEQCIBaXy9pkj/lrNyJPr2Wm6cjgl/gziDmloKzpSTBFFEs8AiBWcLQsVi0rhudKba9Sj0qG0n2T9av84qmmNd56vJ1X7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.9.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190877},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./dashboard.js":"./dashboard.js"},"gitHead":"e95783d17c66ade88f7a0b257ad218f50826e16a","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0","@coinbase/x402":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true},"@coinbase/x402":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.9.3_1787794170537_0.7628685891194784","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"agent402-tollbooth","version":"0.10.0","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.10.0","maintainers":[{"name":"agenttools1775","email":"mike@agent402.tools"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"da3be07774e770b6a2705227752fb8d3f6ff7c1b","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.10.0.tgz","fileCount":17,"integrity":"sha512-jPh7iQCVUsu7TSGct9Jf9J5b4HwlXEXBxpCrG4oNa7ilgmEYtDQtonvANyaLyBwojdOcvQeus/LMe1zy5Epjvg==","signatures":[{"sig":"MEYCIQCVZNisdcGayGf2/zbx8WBydCLCJBUMkSaGqq20hlUuIgIhAJhrzJ9nHoLEDMzSQmG/OKeZxo8HnA13ldP/iq12agHt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":208307},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./edge-mpp":"./edge-mpp.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./edge-mpp.js":"./edge-mpp.js","./dashboard.js":"./dashboard.js","./mpp-codec.js":"./mpp-codec.js"},"gitHead":"4a51645699d821a2f88000f7c0b257e2f4820237","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0","@coinbase/x402":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true},"@coinbase/x402":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.10.0_1788367100822_0.1201735703005733","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"agent402-tollbooth","version":"0.10.1","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.10.1","maintainers":[{"name":"agenttools1775","email":"mike@agent402.tools"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"2144e5e9e86872e2a201c323a486e134eaf1e026","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.10.1.tgz","fileCount":17,"integrity":"sha512-4QqSOjevkyeqvhM2nsSnChgPn5AmccBbN9WY+28FiKJaHhLC1CsrhqfTzKW7sQ+myvm3EIwar+YDr70jj3CUVA==","signatures":[{"sig":"MEUCIAIlJkHhB47I9vjapTPARrXrS1ZLGDy9/N3oQtWIeMvtAiEAgN8b4jkpshidvbJdNUOUU8a//F/6EFzivS2QBCj7ikk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC3cVSVCjQPBtmNonoDQJta9SagI7TjrspgfA3hSy3CKAIgaJ65ORYyp9ohsoXr/wgXRr3tntW8edGrDUj32mthAh4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209084},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./edge-mpp":"./edge-mpp.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./edge-mpp.js":"./edge-mpp.js","./dashboard.js":"./dashboard.js","./mpp-codec.js":"./mpp-codec.js"},"gitHead":"9dd7afc4ff3727088f32882b3f09668d25459f8b","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0","@coinbase/x402":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true},"@coinbase/x402":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.10.1_1789316719779_0.48261260560505437","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"agent402-tollbooth","version":"0.10.2","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.10.2","maintainers":[{"name":"agenttools1775","email":"mike@agent402.tools"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"f2968fd28720d32ec5c8eda5599af2bbb6128631","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.10.2.tgz","fileCount":17,"integrity":"sha512-iVj+2ntD4jdb7f/iKZUFBL7KUK/RNQMyKT1I5iC+iopMxo7czDtn0NyOLznBI0tpKdF4kGh/Fwz1O/Vgp4AcsQ==","signatures":[{"sig":"MEUCIGpVSGRbQo+nZ7CHkAlkIcJwyKOKxNfkVndkbY9BqxV3AiEA1B3E/pS+K1A9WNPeidGlXLs+nd8xoax02DDbY3K4qv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEQRQS1zKqstQ05lMq7R5njMLroplHebPjwCovW+tpntAiEAoyeCYXkyLVOi+60u37vlQvHo2cenjodkWYnhROatWsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.10.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210056},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./edge-mpp":"./edge-mpp.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./edge-mpp.js":"./edge-mpp.js","./dashboard.js":"./dashboard.js","./mpp-codec.js":"./mpp-codec.js"},"gitHead":"260bad714da82472b6bac8e11104f45683cf61b3","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js && node tempo.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","directories":{},"_nodeVersion":"22.23.2","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0","@coinbase/x402":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true},"@coinbase/x402":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.10.2_1790283223831_0.19385219903799622","host":"s3://npm-registry-packages-npm-production"}},"0.10.3":{"name":"agent402-tollbooth","version":"0.10.3","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","_id":"agent402-tollbooth@0.10.3","maintainers":[{"name":"agenttools1775","email":"mike@agent402.tools"}],"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"bin":{"agent402-tollbooth":"index.js"},"dist":{"shasum":"69e1dbf48095d4c659a9ade9a4c2ca66c71c2c35","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.10.3.tgz","fileCount":17,"integrity":"sha512-uuU71Z9x2eXloOpYCmjP292MJOGr0Vg+fR8jso4Vjmc6d+fLV+wgPk3dzgt2bmugOYPF9u74rmXLYLtgUrQzzA==","signatures":[{"sig":"MEUCIEbfs9jO9tHi1AMVkURQbwSNntMiri//uSv9Zz7EdJBGAiEAxwP0zuX9h1xXe9to3QeDQxhrYoE056lZBKcC5ZkicQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDBWdmQ4vPaD4TBcghhRSrsmGBNfGpYw4AVazgaLFUA8gIhANr4GanJqwHZHB6QBHD0rSbeoOeTem2SLfhwFxEn3DXJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.10.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210069},"main":"index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./edge-mpp":"./edge-mpp.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./edge-mpp.js":"./edge-mpp.js","./dashboard.js":"./dashboard.js","./mpp-codec.js":"./mpp-codec.js"},"gitHead":"e58a0bd3821bf1741b4a8527da378255700f9379","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js && node tempo.test.js","example":"node example.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","directories":{},"_nodeVersion":"22.23.3","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0","@coinbase/x402":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true},"@coinbase/x402":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent402-tollbooth_0.10.3_1790965923803_0.5682289728314975","host":"s3://npm-registry-packages-npm-production"}},"0.10.4":{"_id":"agent402-tollbooth@0.10.4","bin":{"agent402-tollbooth":"index.js"},"bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"dist":{"shasum":"8d0ab16b604191099c90a257d8435387f975e5f4","tarball":"https://registry.npmjs.org/agent402-tollbooth/-/agent402-tollbooth-0.10.4.tgz","fileCount":17,"integrity":"sha512-o5hKdiJ/L7SfYIZwzS4h5U2fZWkn/w66lvC8D1P06lRon03RF4D+X+nox5KM4Mdr6brEZjfmc/cUSQ6PUJxa3Q==","signatures":[{"sig":"MEQCIC2LlTNZC08C0LqcTCNQrs37neWoOFcASACbIIsP6fc+AiBVb7WpTQz+QxCBczZcmSnOeQ+WzpRh3NexoB3IIlFwWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDFrbhSKhHKl0p46sc9fJLGga/PJxCz8INpMeMkGK/nDAiEAhmUDxc/0VTO4kc+/urgTIpLBU3u38dJkMPMRgVpXzss="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/agent402-tollbooth@0.10.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210327},"main":"index.js","name":"agent402-tollbooth","type":"module","author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"engines":{"node":">=20"},"exports":{".":"./index.js","./mpp":"./mpp.js","./edge":"./edge.js","./mpp.js":"./mpp.js","./replay":"./replay.js","./worker":"./worker.js","./edge.js":"./edge.js","./edge-mpp":"./edge-mpp.js","./sinks.js":"./sinks.js","./replay.js":"./replay.js","./worker.js":"./worker.js","./edge-mpp.js":"./edge-mpp.js","./dashboard.js":"./dashboard.js","./mpp-codec.js":"./mpp-codec.js"},"gitHead":"f548aeaf60643902c654b606c86797f28fcc5147","license":"MIT","scripts":{"demo":"node demo.js","test":"node test.js && node edge.test.js && node features.test.js && node tempo.test.js","example":"node example.js"},"version":"0.10.4","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"dbd9e18e-1265-41bb-8490-bcba06a5c797"}},"homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"_npmVersion":"11.19.0","description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","directories":{},"maintainers":[{"name":"agenttools1775","email":"mike@agent402.tools"}],"_nodeVersion":"22.23.3","dependencies":{"express":"^5.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"@x402/evm":">=2.0.0","@x402/core":">=2.0.0","@x402/express":">=2.0.0","@coinbase/x402":">=2.0.0"},"peerDependenciesMeta":{"@x402/evm":{"optional":true},"@x402/core":{"optional":true},"@x402/express":{"optional":true},"@coinbase/x402":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent402-tollbooth_0.10.4_1790988205822_0.45837540990735226"}}},"time":{"created":"2026-06-14T16:23:02.384Z","modified":"2026-10-03T00:43:26.260Z","0.1.0":"2026-06-14T16:23:02.686Z","0.1.1":"2026-06-14T16:53:09.634Z","0.1.2":"2026-06-14T17:02:29.264Z","0.1.3":"2026-06-14T17:31:24.580Z","0.1.4":"2026-06-14T19:10:54.211Z","0.2.0":"2026-06-15T20:39:56.721Z","0.3.0":"2026-06-16T03:11:27.512Z","0.3.1":"2026-06-16T03:37:37.181Z","0.4.0":"2026-07-03T02:27:52.825Z","0.4.1":"2026-07-03T16:43:31.854Z","0.4.2":"2026-07-06T21:37:11.463Z","0.4.3":"2026-07-18T04:06:51.190Z","0.5.0":"2026-07-30T11:19:24.395Z","0.6.0":"2026-07-30T14:15:13.305Z","0.6.1":"2026-07-30T14:49:32.057Z","0.6.2":"2026-07-30T22:26:32.858Z","0.7.0":"2026-08-18T13:50:19.567Z","0.8.0":"2026-08-18T17:43:53.801Z","0.8.1":"2026-08-18T19:17:36.935Z","0.8.2":"2026-08-18T21:24:15.232Z","0.9.0":"2026-08-19T19:56:28.927Z","0.9.1":"2026-08-19T20:34:20.826Z","0.9.2":"2026-08-20T04:04:00.721Z","0.9.3":"2026-08-27T01:29:30.687Z","0.10.0":"2026-09-02T16:38:21.018Z","0.10.1":"2026-09-13T16:25:19.922Z","0.10.2":"2026-09-24T20:53:43.942Z","0.10.3":"2026-10-02T18:32:03.891Z","0.10.4":"2026-10-03T00:43:25.954Z"},"bugs":{"url":"https://github.com/MikeyPetrillo/Agent402/issues"},"author":{"url":"https://agent402.tools","name":"Havok Holdings LLC","email":"mike@agent402.tools"},"license":"MIT","homepage":"https://github.com/MikeyPetrillo/Agent402/tree/main/tollbooth","keywords":["x402","pay-per-crawl","ai-bots","ai-crawler","bot-monetization","http-402","402-payment-required","proof-of-work","replay-protection","usdc","reverse-proxy","express-middleware","cloudflare-workers","nextjs","edge","self-hosted","mcp","ai-agents","agent402","tollbooth","base","robinhood-chain","usdg","mpp","machine-payments-protocol","payment-auth","agentic-finance","aifi","agentic-payments"],"repository":{"url":"git+https://github.com/MikeyPetrillo/Agent402.git","type":"git","directory":"tollbooth"},"description":"Agent402 tollbooth: open-source, self-hostable pay-per-crawl for x402 AND MPP (the sell side of Agentic Finance): charge AI bots per request (USDC via x402, or MPP - the Machine Payments Protocol - through the same settlement, or USDG on Robinhood Chain, ","maintainers":[{"name":"agenttools1775","email":"mike@agent402.tools"}],"readme":"# agent402-tollbooth\n\nPart of [Agent402](https://agent402.tools), the open-source paid door for AI agents.\n\n**Open-source, self-hostable pay-per-crawl for x402 and MPP. Put it in front of\nany site or API: humans browse free, AI crawlers and agents pay per request** -\nin USDC over the [x402 protocol](https://x402.org), over\n[MPP](https://mpp.dev) (the Machine Payments Protocol `Payment` HTTP auth\nscheme, settled through the same stack), or for free by solving a\nproof-of-work. No platform lock-in, no card processor required, no Merchant-of-Record, no signup.\nA self-hostable pay-per-crawl gate that speaks both wires on one 402 -\nthe sell side of [Agentic Finance](https://agent402.tools/agentic-finance),\nwhere agents pay and sites get paid, per request, with no account in between.\n\nTollbooth is an **open-source monetization gateway**: MIT-licensed, running in\nfront of *any* origin (Express, a reverse proxy, Next.js, a Cloudflare Worker),\nnon-custodial (you hold the wallet, no signup or Merchant-of-Record), settling\nover x402 and MPP on one 402 - including native MPP on Tempo with split\npayments - and with a **proof-of-work free tier** so a walletless agent still\nhas a path through. Built on the same hardened 402 + proof-of-work machinery as\n[Agent402](https://github.com/MikeyPetrillo/Agent402).\n\n## See it work (one command)\n\n```bash\nnpx agent402-tollbooth   # then, in the repo:  npm run --prefix tollbooth demo\n```\n\n```text\nagent402-tollbooth - live pay-per-crawl demo\n\n① A human opens the page (normal browser)\n   → HTTP 200 FREE  \"📄 The Future of Machine Payments - full article text…\"\n   Humans are never charged.\n\n② An AI crawler hits the same page (ClaudeBot)\n   → HTTP 402 Payment Required\n   pay with USDC: $0.002 USDC on base → 0x…\n   …or free with proof-of-work: a 18-bit sha256 puzzle\n\n③ The crawler has no wallet, so it spends CPU instead\n   solved in 0.32s (nonce=100208)\n   → HTTP 200 OK (paid via pow)  \"📄 The Future of Machine Payments - full article text…\"\n\n✓ Pay-per-crawl, end to end - humans free, bots pay (USDC or compute).\n```\n\n## Install\n\n```bash\nnpm install agent402-tollbooth\n```\n\n## Use it as Express middleware\n\n```js\nimport express from \"express\";\nimport { createTollbooth } from \"agent402-tollbooth\";\n\nconst app = express();\n\n// Humans pass through; known AI crawlers get 402 and must pay or solve a PoW.\n// payTo puts a USDC quote in the 402 (or set TOLLBOOTH_PAYTO); without it the\n// 402 offers proof-of-work only.\napp.use(createTollbooth({ price: \"$0.002\", payTo: \"0xYourWallet\" }));\n\napp.get(\"/article\", (_req, res) => res.send(\"…your content…\"));\napp.listen(3000);\n```\n\n```bash\ncurl -A \"Mozilla/5.0\" localhost:3000/article     # human  -> 200, free\ncurl -A \"ClaudeBot/1.0\" localhost:3000/article   # bot    -> 402 Payment Required\n```\n\nThe 402 body advertises both rails:\n\n```jsonc\n{\n  \"error\": \"Payment Required\",\n  \"message\": \"…humans browse free; bots pay in USDC via x402 or by solving a proof-of-work.\",\n  \"accepts\": [{ \"scheme\": \"exact\", \"network\": \"base\", \"maxAmountRequired\": \"$0.002\", \"asset\": \"USDC\", \"payTo\": \"0x…\", \"resource\": \"http://localhost:3000/article\" }],\n  \"proofOfWork\": { \"algorithm\": \"sha256\", \"challenge\": \"…\", \"difficulty\": 18, \"token\": \"…\", \"rule\": \"Find a nonce so sha256(challenge+\\\":\\\"+nonce) has >= 18 leading zero bits; resend with header X-Pow-Solution: <token>:<nonce>\" }\n}\n```\n\nA crawler that can't (or won't) pay USDC solves the puzzle and retries with\n`X-Pow-Solution: <token>:<nonce>` - sub-second of CPU, single-use, bound to that\nexact URL.\n\n## Use it as a reverse proxy (any language/framework)\n\nPoint it at your existing site - no code changes there:\n\n```bash\nTOLLBOOTH_UPSTREAM=https://your-site.com \\\nTOLLBOOTH_PAYTO=0xYourWallet \\\nTOLLBOOTH_FACILITATOR_URL=https://x402.org/facilitator \\\nnpx agent402-tollbooth          # listens on :4021, proxies humans free, charges bots\n```\n\nWith `TOLLBOOTH_PAYTO` **and** `TOLLBOOTH_FACILITATOR_URL` set, the proxy\nsettles real money over **both wires** from env alone (0.8.0): it builds the\nstandard `@x402/express` v2 stack in-process (verify, proxy the request, settle\nonly on a successful response, exactly once) and mints MPP challenges on the\nsame 402, so a stock `@x402/fetch` client and a stock `mppx` client both pay.\nInstall the x402 packages next to it once (`npm i @x402/express @x402/core\n@x402/evm`; they are optional peers so the package stays dependency-free\notherwise) and pick a facilitator that settles your network - keyless free\ntiers exist for mainnet chains, and `https://x402.org/facilitator` covers\nbase-sepolia for a dry run. USDC on the EVM chains in `TOLLBOOTH_NETWORK`'s\nlist (`base` default); other assets and rails use the library API below.\n`TOLLBOOTH_PAYTO` alone still only *advertises* a quote (nothing can verify or\nsettle it, every paid request is refused) and now says so loudly at boot.\n\n## Run on the edge (Cloudflare Workers, Next.js, Deno, Bun)\n\nThe same gate is also built on the Web Crypto + Fetch APIs (`edge.js`), so it runs\nanywhere - no Node required. The gate returns a `402 Response` when the client\nmust pay, or `null` to let it through.\n\n**Ready-to-deploy templates** (copy a folder, don't assemble from docs):\n\n- **Cloudflare Workers** → [`deploy/cloudflare/`](deploy/cloudflare/) - a ready\n  `wrangler.toml` + a 3-step deploy guide.\n- **Next.js / Vercel** → [`deploy/nextjs/`](deploy/nextjs/) - a drop-in\n  `middleware.js` + a 3-step deploy guide.\n- **Docker** → [`deploy/docker/`](deploy/docker/) - a `Dockerfile` +\n  `docker-compose.yml` to run the reverse proxy in front of any site with\n  `docker compose up -d` (includes the live `/__tollbooth` dashboard).\n\nThe short version of each:\n\n```toml\n# wrangler.toml  (full template: deploy/cloudflare/wrangler.toml)\nname = \"tollbooth\"\nmain = \"node_modules/agent402-tollbooth/worker.js\"\ncompatibility_date = \"2026-01-01\"\n[vars]\nTOLLBOOTH_UPSTREAM = \"https://your-origin.example.com\"\nTOLLBOOTH_PAYTO    = \"0xYourWallet\"   # optional: advertise a USDC x402 quote\n# npx wrangler secret put TOLLBOOTH_SECRET\n# optional single-use replay store:  [[kv_namespaces]] binding = \"TOLLBOOTH_KV\"\n```\n\n```js\n// middleware.js  (full template: deploy/nextjs/middleware.js)\nimport { NextResponse } from \"next/server\";\nimport { createEdgeTollbooth } from \"agent402-tollbooth/edge\";\nconst gate = createEdgeTollbooth({ secret: process.env.TOLLBOOTH_SECRET });\n\nexport async function middleware(req) {\n  return (await gate(req)) ?? NextResponse.next();\n}\nexport const config = { matcher: [\"/((?!_next/static|_next/image|favicon.ico).*)\"] };\n```\n\n**Any Fetch-API runtime** (Deno, Bun, custom): `const gate = createEdgeTollbooth({ secret }); const blocked = await gate(request); return blocked ?? fetch(request);`\n\n> On the edge, pass a stable `secret` (PoW tokens are HMAC-signed). For\n> single-use replay protection across stateless invocations, supply a `store`\n> (e.g. a Cloudflare KV wrapper - the Worker entry wires this for you).\n> The `x402:` middleware mode and the native Tempo rail are Node/Express\n> features; the edge gate offers proof-of-work plus the `verifyX402` callback,\n> and since 0.10.0 **MPP on that same verifier**: with `secret`, `payTo` and\n> `verifyX402` set, every 402 also carries a `WWW-Authenticate: Payment`\n> evm/charge challenge for the quote, and an `Authorization: Payment`\n> credential (HMAC-bound to our challenge, unexpired, minted for that exact\n> resource) is translated to `PAYMENT-SIGNATURE` and handed to `verifyX402` as\n> if an x402 client had sent it. `mpp:false` turns it off; `mppAssetAddress` +\n> `mppAssetName` name a token outside the built-in USDC table (Base, Celo,\n> Polygon, Arbitrum, Optimism, Avalanche, Sei).\n\n## Accepting USDC: x402 and MPP on the same 402\n\nThe proof-of-work rail works with **zero config**. To also settle real money,\nhand the gate your standard, audited x402 middleware (`@x402/express` v2) as\n`x402:` - the gate never reinvents settlement, it delegates to it:\n\n```js\nimport { createTollbooth } from \"agent402-tollbooth\";\nimport { paymentMiddleware } from \"@x402/express\";\nimport { HTTPFacilitatorClient, x402ResourceServer } from \"@x402/core/server\";\nimport { ExactEvmScheme } from \"@x402/evm/exact/server\";\n\nconst server = new x402ResourceServer(new HTTPFacilitatorClient({ url: \"https://x402.org/facilitator\" }))\n  .register(\"eip155:8453\", new ExactEvmScheme());\nconst x402 = paymentMiddleware(\n  { \"GET /*\": { accepts: [{ scheme: \"exact\", network: \"eip155:8453\", price: \"$0.001\", payTo: \"0xYourWallet\" }] } },\n  server,\n);\n\napp.use(createTollbooth({ payTo: \"0xYourWallet\", x402 }));\n```\n\nWhat you get on every charged request:\n\n- **x402 v2 clients pay.** The gate lifts the middleware's `PAYMENT-REQUIRED`\n  header onto its own 402, so a stock `@x402/fetch` client negotiates and pays\n  as if the middleware were mounted bare. Verify, your handler, and settlement\n  run in the middleware's own order (v2 settles after the handler ends the\n  response) - exactly once.\n- **MPP clients pay** (default on when `x402` is set; `mpp: false` to turn off).\n  The same 402 gains `WWW-Authenticate: Payment` challenges (`evm`/`charge`,\n  one per EVM chain the middleware advertises among `mppNetworks`, default\n  Base + Celo). An inbound `Authorization: Payment` credential whose challenge\n  id HMAC-verifies is re-encoded as `PAYMENT-SIGNATURE` and settled by the\n  same middleware; the settled response carries a `Payment-Receipt`. A stock\n  [`mppx`](https://www.npmjs.com/package/mppx) client works unmodified. The\n  codec is dependency-free (no mppx on the server side) and byte-compatible\n  with the reference client - proven in the parent repo's CI by a real mppx\n  purchase through this package.\n- **Proof-of-work first**, unchanged: a walletless agent always has a free path.\n\nSet a stable `TOLLBOOTH_SECRET` (or `mppSecret`) so MPP challenge ids verify\nacross workers - the same caveat as proof-of-work tokens.\n\n### `verifyX402` (legacy, deprecated in 0.7.0)\n\nOlder versions took a verify-only callback (`verifyX402(req, opts) => boolean`)\nand shipped `x402VerifierFromExpress()` to build one from a payment middleware.\n**With `@x402/express` v2 that helper grants on verify and never settles**: v2\nsettles after the handler ends the response, and the helper handed it a stub\nresponse the real handler never ended, so buyers were served and never charged\n(measured in the parent repo's test suite). It only ever settled with v1\nmiddlewares that settled before calling `next()`. It still works for those and\nfor custom verifiers you wrote yourself, and now warns once at construction;\neveryone else should pass the middleware as `x402:` above. `verifyX402` still\nreceives `opts.signal` (aborted on `TOLLBOOTH_VERIFY_TIMEOUT_MS`).\n\n## Native MPP on Tempo (0.9.0)\n\nTollbooth can charge crawlers in USDC.e **natively on Tempo** - MPP's own\npayment method - with no x402 facilitator at all, and (optionally) split every\npayment with a platform fee in the same on-chain transaction:\n\n```js\napp.use(createTollbooth({\n  price: \"$0.001\",\n  tempo: {\n    apiKey: process.env.TEMPO_API_KEY,        // Tempo API key with the mpp:write scope\n    recipient: \"0xYourTempoPayTo\",\n    // currency: defaults to USDC.e on Tempo mainnet; currencies: [...] to offer more than one\n    splits: [{ recipient: \"0xPlatform\", amount: \"0.0002\" }], // optional, up to 10, total < price\n  },\n}));\n```\n\nThe `tempo` object takes `apiKey` (required), `recipient` (required, your\nTempo payTo), `currency` or `currencies` (TIP-20 token addresses; default USDC.e\n`0x20C000000000000000000000b9537d11c60E8b50`, one challenge minted per currency,\nfirst = preferred), `splits` (up to 10, total below the price, same transaction),\n`chainId` (default 4217, Tempo mainnet), `apiBaseUrl` (relay, default\n`https://api.tempo.xyz`), `decimals` (6), `timeoutSeconds` (300), plus the\nconfirm knobs below. A bad config throws at construction - the gate never boots\nminting unpayable challenges.\n\nOr from env on the CLI: `TOLLBOOTH_TEMPO_API_KEY`, `TOLLBOOTH_TEMPO_RECIPIENT`\n(defaults to `TOLLBOOTH_PAYTO`), optional `TOLLBOOTH_TEMPO_CURRENCY` (CSV of\ntoken addresses), `TOLLBOOTH_TEMPO_SPLITS=\"0xabc:0.0002,0xdef:0.0001\"`,\n`TOLLBOOTH_TEMPO_API_BASE` (relay override), `TOLLBOOTH_TEMPO_RPC_URL` (confirm\nRPC override). Tempo works with NO x402 middleware at all (a Tempo-only\ntollbooth) and next to one.\n\nEvery 402 then carries a `WWW-Authenticate: Payment` tempo/charge challenge\n(next to any evm challenges from the x402 rail, if you run both); a stock\n`mppx` client with `tempo.charge({ account })` pays it. The gate validates the\ncredential with Tempo's relay BEFORE your handler runs, buffers the response,\nand broadcasts ONLY after a successful (<400) response - the same\nsettle-after-handler discipline as the x402 rail - then replays the response\nwith a `Payment-Receipt` header and `X-Tollbooth-Paid: mpp-tempo`. A refused\ncredential gets a 402 with fresh challenges and an RFC 9457 `problem` in the\nbody. Challenges are HMAC-bound to your `TOLLBOOTH_SECRET`; each credential is\nsingle-use (share a `replayStore` across workers). No new dependency: the\nrelay is spoken to over plain `fetch`.\n\n**Chain-truth confirm (0.9.2):** a relay can report settlement failure for a\npayment that actually landed - measured live: a buyer whose packed signature\nends with a yParity-style v byte (0x00/0x01) gets normalized by the Tempo\nnode, so the canonical txid stops matching the hash of the submitted bytes\nand the relay's post-broadcast check refuses a settled payment; the buyer is\ntold 402 and retries into a double charge. On any broadcast failure the gate\nnow derives the only txids the credential's own signed bytes could have\nlanded under (submitted form + v-swapped twin - the txid commits to the\nbytes, so the binding is exact) and, if one of them succeeded on-chain paying\nyour recipient at least the challenge amount in the challenge currency,\nserves the response as paid. Verification only - nothing is re-broadcast, so\nit can never double-charge; every uncertainty fails closed to the 402.\nOptions: `confirm: false` disables, `confirmRpcUrl` overrides the Tempo RPC\n(default `https://rpc.tempo.xyz`, env `TOLLBOOTH_TEMPO_RPC_URL`). Still\ndependency-free (keccak-256 is implemented in-package and pinned against the\nlive incident transaction in the tests).\n\n## Configuration\n\n| Option | Default | What |\n|---|---|---|\n| `price` | `\"$0.001\"` | Advertised price per request (x402 quote) |\n| `payTo` | – | Wallet address; set to advertise a USDC x402 quote |\n| `network` | `\"base\"` | x402 network |\n| `pow` | `true` | Enable the free proof-of-work rail |\n| `powDifficulty` | `18` | PoW difficulty in leading zero bits (~0.1–0.5s of CPU) |\n| `mode` | `\"bots\"` | Who pays: `\"bots\"` (AI-crawler UAs) · `\"all\"` (everyone but `free()`) · `\"strict\"` (anything that isn't a real-browser request) |\n| `adaptive` | `false` | Raise PoW difficulty as charged-request load climbs (anti-abuse under traffic spikes) |\n| `maxDifficulty` | `base+6` | Ceiling for adaptive difficulty |\n| `adaptivePerBit` | `300` | +1 difficulty bit per N charged requests/min |\n| `botUserAgents` | `AI_BOTS` | User-agents to charge in `\"bots\"` mode |\n| `charge(req)` | mode | Custom \"should this client pay?\" predicate (wins over `mode`) |\n| `free(req)` | – | Custom force-allow predicate (wins over everything) |\n| `x402` | – | Your `@x402/express` `paymentMiddleware(...)`: owns verify + settle; enables x402 v2 clients and (by default) MPP |\n| `mpp` | `true` when `x402` set | Accept MPP (`WWW-Authenticate: Payment` / `Authorization: Payment`) through the `x402` middleware |\n| `mppSecret` | `powSecret` / `TOLLBOOTH_SECRET` | HMAC secret binding MPP challenge ids (stable across workers) |\n| `mppNetworks` | `[8453, 42220]` | EVM chain ids to offer as MPP challenges (`\"all\"` = every EVM chain the middleware advertises) |\n| `tempo` | env (`TOLLBOOTH_TEMPO_*`) or off | Native MPP on Tempo (0.9.0): `{ apiKey, recipient, currency \\| currencies, splits, chainId, apiBaseUrl, decimals, timeoutSeconds, confirm, confirmRpcUrl }` - mints `tempo/charge` challenges, validates with Tempo's relay before the handler, broadcasts after a <400 response. Works with or without `x402` |\n| `tempo.confirm` | `true` | Chain-truth confirm (0.9.2): on a relay broadcast failure, check the chain for the credential's own txid before answering 402; `false` disables |\n| `tempo.confirmRpcUrl` | `https://rpc.tempo.xyz` (`TOLLBOOTH_TEMPO_RPC_URL`) | Tempo JSON-RPC used by the confirm step |\n| `verifyX402(req, opts)` | – | Legacy verify-only USDC check (deprecated for settle-after-handler middlewares; see above) |\n| `resourceBaseUrl` | `\"\"` | Absolute base used for the `resource` field / PoW binding |\n| `observe` | `false` | Observe-only: classify and count, but never 402. For pre-launch traffic measurement. |\n| `statsSink` | in-memory | Durable stats backend. Built-ins: `memorySink`, `kvStatsSink(kv)`, `httpStatsSink(url)`. |\n| `replayStore` | **this process's memory** | Shared single-use record for solved proof-of-work tokens. Required for multi-worker / multi-instance / serverless. Built-ins: `sqliteReplayStore(db)`, `redisReplayStore(client)`. See below. |\n\n### Environment variables\n\nRead by the bundled proxy / Express entry point (`index.js`):\n\n| env | default | meaning |\n|---|---|---|\n| `TOLLBOOTH_UPSTREAM` | – | Origin the built-in reverse proxy forwards to |\n| `TOLLBOOTH_PAYTO` | – | Wallet address; advertises a USDC x402 quote (and, with `TOLLBOOTH_FACILITATOR_URL`, settles it) |\n| `TOLLBOOTH_FACILITATOR_URL` | – | x402 facilitator that settles your network. With `TOLLBOOTH_PAYTO` the CLI builds a real `@x402/express` middleware and takes payment over x402 **and** MPP (0.8.0). Needs `@x402/express @x402/core @x402/evm` installed; refuses to start without them |\n| `TOLLBOOTH_FACILITATOR_HEADERS` | – | Optional JSON object of auth headers sent on the facilitator's `/verify`, `/settle`, `/supported` (e.g. `{\"X-API-Key\":\"…\"}`) |\n| `TOLLBOOTH_CDP_API_KEY_ID` + `TOLLBOOTH_CDP_API_KEY_SECRET` | – | Settle through Coinbase's facilitator (CDP) instead of a URL. Needs `npm i @coinbase/x402`. This is how a Coinbase Business account gets paid by agents: `TOLLBOOTH_PAYTO` = the account's USDC (Base) receive address. |\n| `TOLLBOOTH_PRICE` | `\"$0.001\"` | Advertised price per request |\n| `TOLLBOOTH_NETWORK` | `\"base\"` | x402 network. CLI settlement mode accepts `base`, `base-sepolia`, `polygon`, `arbitrum`, `optimism`, `avalanche`, `celo`, `sei`, `monad`, or a raw `eip155:<id>` |\n| `TOLLBOOTH_MPP` | on when `x402` set | `false` to switch MPP off |\n| `TOLLBOOTH_MPP_SECRET` | `TOLLBOOTH_SECRET` | HMAC secret for MPP challenge ids |\n| `TOLLBOOTH_MPP_NETWORKS` | `8453,42220` | CSV of EVM chain ids to offer as MPP challenges, or `all` |\n| `TOLLBOOTH_TEMPO_API_KEY` | – | Tempo API key (`mpp:write` scope). Presence switches on the native Tempo rail (0.9.0) |\n| `TOLLBOOTH_TEMPO_RECIPIENT` | `TOLLBOOTH_PAYTO` | Tempo payTo (0x address) |\n| `TOLLBOOTH_TEMPO_CURRENCY` | USDC.e on Tempo | CSV of TIP-20 token addresses to offer (one challenge each, first = preferred) |\n| `TOLLBOOTH_TEMPO_SPLITS` | – | `0xabc:0.0002,0xdef:0.0001` - split recipients + USD amounts paid in the same transaction (≤10, total below the price) |\n| `TOLLBOOTH_TEMPO_API_BASE` | `https://api.tempo.xyz` | Tempo relay base URL override |\n| `TOLLBOOTH_TEMPO_RPC_URL` | `https://rpc.tempo.xyz` | Tempo JSON-RPC for the chain-truth confirm step (0.9.2) |\n| `TOLLBOOTH_ASSET` | `\"USDC\"` | Asset symbol in the quote (`USDG` charges in USDG on Robinhood Chain) |\n| `TOLLBOOTH_POW_BITS` | `18` | Proof-of-work difficulty in leading zero bits |\n| `TOLLBOOTH_MODE` | `\"bots\"` | Who pays: `bots` · `all` · `strict` |\n| `TOLLBOOTH_ADAPTIVE` | `false` | Raise PoW difficulty as charged-request load climbs |\n| `TOLLBOOTH_ADAPTIVE_PER_BIT` | `300` | +1 difficulty bit per N charged requests/min |\n| `TOLLBOOTH_SECRET` | random | HMAC secret binding PoW challenges (set it to survive restarts / run multiple instances) |\n| `TOLLBOOTH_REPLAY_SQLITE` | – | Path to a SQLite file every process shares as the single-use PoW record. Set it whenever more than one process serves the same `TOLLBOOTH_SECRET`. Needs Node 22.5+ (built-in `node:sqlite`) or an installed `better-sqlite3`; refuses to start if neither can open the file |\n| `TOLLBOOTH_RESOURCE_BASE` | `TOLLBOOTH_UPSTREAM` | Absolute base used for the `resource` field / PoW binding |\n| `TOLLBOOTH_VERIFY_TIMEOUT_MS` | `10000` | Abort an x402 settlement check after this long |\n| `TOLLBOOTH_OBSERVE` | `false` | Observe-only: classify and count, never 402 |\n| `TOLLBOOTH_ADMIN_TOKEN` | – | Token gating the `/__tollbooth` dashboard **and** `/__tollbooth/stats`. Unset logs a warning and leaves the dashboard publicly reachable (aggregate counts only) |\n| `TOLLBOOTH_STATS_TOKEN` | – | Legacy token gating `/__tollbooth/stats` only |\n| `PORT` | `4021` | Listen port |\n\nCloudflare Worker only (`worker.js`, bound in `wrangler.toml`):\n\n| binding / env | meaning |\n|---|---|\n| `TOLLBOOTH_REPLAY` | Durable Object binding giving **atomic**, strict single-use PoW replay protection across isolates. Required in enforcing mode |\n| `TOLLBOOTH_ALLOW_NON_ATOMIC_REPLAY` | `\"true\"` explicitly accepts non-atomic (KV or per-isolate) replay protection instead of a Durable Object. Without it, enforcing mode refuses to start |\n| `TOLLBOOTH_KV` | KV namespace for durable stats |\n| `TOLLBOOTH_STATS_BUCKET` | Stats bucket name within `TOLLBOOTH_KV` (default `\"default\"`) |\n\n## How it decides who pays\n\nBy default (`mode: \"bots\"`) it charges requests whose `User-Agent` matches a known\n**AI/LLM crawler** (GPTBot, ClaudeBot, CCBot, PerplexityBot, Bytespider,\nGoogle-Extended, Amazonbot, …). Classic search indexers (Googlebot, Bingbot) are\nintentionally **not** charged so your SEO indexing stays free.\n\n**Don't want to play whack-a-mole with bot detection?** That's the point of the\nother modes - you stop trying to *identify* bots and instead make access *cost\nsomething*:\n- `mode: \"all\"` charges every client (except a `free()` match). A \"more\n  sophisticated\" bot gains nothing by disguising itself - everyone pays or solves\n  a proof-of-work.\n- `mode: \"strict\"` charges anything that isn't a real-browser request (browser-like\n  UA **and** an HTML `Accept`), letting genuine human page-loads through free.\n  Heads-up: that's a heuristic, not a security boundary - a bot that sets\n  `User-Agent: Mozilla/5.0 …` + `Accept: text/html` gets the same free pass a\n  human gets. Use `mode: \"all\"` (or your own `charge:` predicate) for hard\n  guarantees.\n- `adaptive: true` makes proof-of-work **harder as load climbs**, so a high-volume\n  scraper pays escalating CPU per request regardless of how it looks - detection is\n  cat-and-mouse, economics isn't.\n\n## Observe before charging\n\nDon't want to flip a meter on cold? **Run the gate in observe-only mode for a\nweek first** - every request is still classified (bot vs. human) and counted,\nbut nothing ever gets a 402:\n\n```js\napp.use(createTollbooth({ observe: true })); // or: TOLLBOOTH_OBSERVE=true\n```\n\nOn the edge / Cloudflare Worker / Next.js: set `TOLLBOOTH_OBSERVE=true` in env.\n\nThe dashboard grows a **\"Would charge\"** counter so you can show your team -\nor your client - exactly how much of their traffic is AI bots **before** you\nstart returning 402s. Removing the flag flips on enforcement with no other\nchanges. Bots see a `X-Tollbooth-Observed: would-charge` header in observe mode\n(handy for log filtering); humans see nothing.\n\n## Analytics\n\nThe middleware keeps aggregate counters (no per-request data):\n- `gate.stats()` → sync, in-process mirror: `{ requests, freeAllowed, wouldCharge, charged, powSolved, x402Paid, mppPaid, tempoPaid, difficultyNow, observe }`.\n- `gate.snapshot()` → async, reads from the configured durable sink (defaults to memory).\n- `gate.flush()` → flush any buffered deltas to the durable sink (call inside `ctx.waitUntil` on edge runtimes).\n\nThe reverse-proxy CLI exposes them as JSON at **`/__tollbooth/stats`** and as a\nlive **dashboard at `/__tollbooth`** - requests, how many were charged,\nproof-of-work solves, USDC collected, and what share of your traffic is bots.\n\n## Durable stats (survive restart, aggregate across instances)\n\nBy default, stats live in process memory - fine for single-instance Node,\nuseless across multiple replicas or on the edge. Pass a `statsSink` to make\nthem survive:\n\n```js\n// Cloudflare Workers: aggregate across all isolates using the same KV namespace\n// that holds the PoW single-use store.\nimport { createEdgeTollbooth, kvStatsSink } from \"agent402-tollbooth/edge\";\nconst gate = createEdgeTollbooth({\n  secret: env.TOLLBOOTH_SECRET,\n  statsSink: kvStatsSink(env.TOLLBOOTH_KV, { bucket: \"default\" }),\n});\n// inside fetch():\nctx.waitUntil(gate.flush()); // make sure deltas land in KV after the response\n```\n\n```js\n// Any Node deploy: POST batched deltas to a tiny collector (Vercel KV /\n// Upstash / your own API).\nimport { createTollbooth, httpStatsSink } from \"agent402-tollbooth\";\napp.use(createTollbooth({\n  statsSink: httpStatsSink(process.env.TOLLBOOTH_STATS_URL, {\n    token: process.env.TOLLBOOTH_STATS_TOKEN,\n  }),\n}));\n```\n\nSink interface (build your own - e.g. a Cloudflare Durable Object for strict\nconsistency):\n\n```ts\ntype StatsSink = {\n  incr(field: string, n?: number): void;        // fire-and-forget\n  flush?(): Promise<void>;                       // optional explicit flush\n  snapshot(): Promise<Record<string, number>>;   // aggregated view\n};\n```\n\n## Single-use proof-of-work across workers and instances (`replayStore`)\n\n**The default single-use record lives in ONE PROCESS'S MEMORY.** Read that\nsentence twice if you run more than one process, because the two settings\ninteract:\n\n- A stable `TOLLBOOTH_SECRET` is what makes a token minted by worker 1 verify on\n  worker 2. Without it, multi-process deploys reject every solution.\n- With it, and with no shared replay store, each process keeps its own\n  \"already used\" list. One 18-bit solve is then redeemable **once per process**\n  inside the token's 5-minute TTL, and again after a worker recycles. Four\n  workers means four requests for one solve.\n\nPass a `replayStore` and every process claims against the same record:\n\n```js\n// Several Node workers on one host (cluster, pm2, one container with N processes).\nimport Database from \"better-sqlite3\";                 // or node:sqlite on Node 22.5+\nimport { createTollbooth, sqliteReplayStore } from \"agent402-tollbooth\";\n\nconst db = new Database(\"/var/lib/tollbooth/replay.db\");\ndb.pragma(\"journal_mode = WAL\");     // concurrent writers\ndb.pragma(\"busy_timeout = 5000\");    // wait for the write lock instead of throwing\n\napp.use(createTollbooth({ replayStore: sqliteReplayStore(db) }));\n```\n\n```js\n// Instances across hosts, or a serverless runtime that can reach Redis.\nimport { createClient } from \"redis\";\nimport { createTollbooth, redisReplayStore } from \"agent402-tollbooth\";\n\nconst redis = createClient({ url: process.env.REDIS_URL });\nawait redis.connect();\napp.use(createTollbooth({ replayStore: redisReplayStore(redis) }));\n```\n\n`redisReplayStore` also accepts an ioredis client (their `SET` signatures differ;\nthe factory detects which one it was handed). Neither driver is a dependency of\nthis package: you pass a client you already opened, so the tollbooth still\ninstalls with nothing but Express.\n\nThe bundled reverse proxy takes the SQLite path from the environment, so the CLI\nneeds no code:\n\n```bash\nTOLLBOOTH_SECRET=$(openssl rand -hex 32) \\\nTOLLBOOTH_REPLAY_SQLITE=/var/lib/tollbooth/replay.db \\\nTOLLBOOTH_UPSTREAM=https://your-origin.example \\\nnpx agent402-tollbooth\n```\n\nStore interface (build your own against Postgres, DynamoDB, a Durable Object -\nthis is the same contract the edge gate's `store` option uses, so an\nimplementation ports between the two unchanged):\n\n```ts\ntype ReplayStore = {\n  // MUST be atomic: true only the first time this token is seen, false after.\n  claim(token: string, expiresAtMs: number): boolean | Promise<boolean>;\n};\n```\n\nThree things worth knowing before you write one:\n\n- **It may be async.** `claim` can return a promise; `verify()` then returns a\n  promise too, and the gate awaits it. A synchronous store keeps the gate\n  synchronous, so existing single-process deploys are unaffected.\n- **A throw is a refusal, not a pass.** If `claim` throws or rejects, the gate\n  answers `402` with `X-Pow-Error: replay store unavailable`. Let your store\n  throw when its backend is unreachable - guessing \"probably unused\" would hand\n  out exactly the free passes the store exists to stop.\n- **Non-atomic is not enough.** A separate \"read, then write\" pair lets two\n  concurrent redemptions of one token both see \"unseen\" and both pass. SQLite's\n  `INSERT OR IGNORE` on a primary key and Redis `SET NX` are atomic; a plain\n  eventually-consistent key/value `get` + `put` is not.\n\nScope note: the SQLite store's guarantee is per **database file**, which covers\nmany processes sharing a disk. It does not cover hosts sharing a network\nfilesystem (SQLite locking is not reliable there) - use Redis or Postgres for\nthat shape.\n\n## Edge analytics (Cloudflare Worker / Next.js)\n\nThe Cloudflare Worker entry (`worker.js`) auto-mounts both the dashboard and\nJSON endpoint, BEFORE the gate so they're never paywalled:\n\n- **`/__tollbooth`** → live dashboard\n- **`/__tollbooth/stats`** → JSON snapshot (gate with `TOLLBOOTH_STATS_TOKEN` for bearer-auth)\n\nWith a `TOLLBOOTH_KV` namespace bound, the stats aggregate across all isolates\nof all Cloudflare colos serving the Worker - one consistent view.\n\nOn Next.js / Vercel Edge, middleware can't mount dashboards itself (it'd gate\nthem), so a companion **route handler** at `app/__tollbooth/stats/route.js`\nserves the JSON; a static **page** at `app/__tollbooth/page.jsx` renders the\ndashboard HTML. Both are in [`deploy/nextjs/middleware.js`](deploy/nextjs/middleware.js)\nas drop-in copyable snippets.\n\n## Production checklist (read this)\n\n- **Set a stable `TOLLBOOTH_SECRET`.** Required for any multi-process/clustered\n  Node deploy and for all edge deploys - without it, proof-of-work tokens use a\n  random per-process secret and are rejected across restarts/workers/isolates.\n- **If more than one process shares that secret, supply a `replayStore`.** The\n  default single-use record is per process, so a stable secret plus no shared\n  store means one solve buys one free request per worker within its TTL. Node:\n  `replayStore: sqliteReplayStore(db)` / `redisReplayStore(client)`, or\n  `TOLLBOOTH_REPLAY_SQLITE=<path>` for the bundled proxy\n  ([details](#single-use-proof-of-work-across-workers-and-instances-replaystore)).\n- **For serverless/edge, supply a durable replay `store`** (bind a Durable Object\n  as `TOLLBOOTH_REPLAY` for atomic claims; KV is eventually consistent and the\n  Worker entry refuses to enforce on it without an explicit override). The\n  in-memory default is per-isolate, so a solved token could otherwise be reused\n  across isolates within its TTL.\n- **The reverse proxy pins the host** to your configured upstream (a client can't\n  redirect it elsewhere) and **strips client-forged trust/forwarding headers**\n  (`X-Tollbooth-Paid`, `X-Forwarded-Host`, etc.) before forwarding.\n- **UA matching is the default, not a security boundary** - a bot can forge a\n  human UA to get the *same free access a human gets* (it gains nothing more). To\n  stop relying on detection entirely, use `mode: \"all\"` / `mode: \"strict\"`, and\n  turn on `adaptive` so high-volume abuse pays escalating proof-of-work.\n\n## Notes\n\n- Proof-of-work tokens are HMAC-signed, expiry-checked, single-use, and bound to\n  the exact resource (path + query, dots and all) - a solution for one URL can't\n  be replayed or reused on another. Single-use is recorded **per process** unless\n  you pass a `replayStore`.\n- MIT licensed. Part of [Agent402](https://github.com/MikeyPetrillo/Agent402).\n\n## Charge in USDG on Robinhood Chain\n\nThe quote's network and asset are operator-configured, so the gate can charge\ncrawlers in **USDG (Global Dollar) on Robinhood Chain** (chain id 4663)\ninstead of USDC:\n\n```bash\nTOLLBOOTH_PAYTO=0xYourWallet \\\nTOLLBOOTH_NETWORK=eip155:4663 \\\nTOLLBOOTH_ASSET=USDG \\\nnpx agent402-tollbooth          # advertises the USDG quote; settle it via the library API below\n```\n\n(The CLI's built-in settlement mode - `TOLLBOOTH_FACILITATOR_URL` - registers\nthe exact **USDC** scheme only and refuses to start with another asset rather\nthan advertise a quote it cannot settle.) In code: `createTollbooth({ payTo, network: \"eip155:4663\", asset: \"USDG\", x402 })`,\nwhere `x402` is a `@x402/express` middleware whose facilitator settles chain\n4663 (advertise `eip155:4663` in its `accepts`). Defaults are unchanged (USDC\non Base). MPP challenges are only minted for chains in `mppNetworks` (Base +\nCelo by default - what a stock mppx client can sign); add `4663` there or pass\n`\"all\"` if your buyers' MPP clients can sign USDG on Robinhood Chain.\n\n## Legal\n\nUse of the hosted instance at agent402.tools is subject to its [Terms of Service](https://agent402.tools/terms) (acceptable-use policy included) and [Privacy Policy](https://agent402.tools/privacy). This package is MIT-licensed; the hosted server is AGPL-3.0. Both are provided as-is without warranty, and self-hosted deployments are their operator's responsibility.\n\n## Get paid into a Coinbase Business account\n\nCoinbase Business accounts receive x402 payments from AI agents directly. The\ntollbooth is the \"integrate x402 into your API\" step: point `TOLLBOOTH_PAYTO`\nat the account's USDC receive address on Base and settle through Coinbase's\nfacilitator with a CDP API key.\n\n```bash\nnpm i agent402-tollbooth @x402/express @x402/core @x402/evm @coinbase/x402\nTOLLBOOTH_PAYTO=0xYourCoinbaseBusinessBaseAddress \\\nTOLLBOOTH_CDP_API_KEY_ID=... TOLLBOOTH_CDP_API_KEY_SECRET=... \\\nTOLLBOOTH_PRICE='$0.005' TOLLBOOTH_UPSTREAM=http://localhost:8080 \\\nnpx agent402-tollbooth\n```\n\nLoad the three values from a `.env` or a secret store rather than typing the\nkey on the command line. Live-proven 2026-08-27 with real USDC through\nCoinbase's facilitator ([tx](https://basescan.org/tx/0x8175178ac4e2229dfd9385a3c78c491ffe554b08fdf52cf92f99425c983ec5d1));\nnote the facilitator refuses a payer paying itself (`self_send_not_allowed`),\nso test from a second wallet. Every paid request settles as USDC into the Coinbase Business account; humans\nbrowse your site normally. Full walkthrough with an Express example:\nhttps://agent402.tools/guides/coinbase-business-get-paid-by-agents\n\n","readmeFilename":"README.md"}