{"_id":"@profullstack/x402-gateway","_rev":"10-37f63fc24d53e613bfa3819211d62b8b","name":"@profullstack/x402-gateway","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@profullstack/x402-gateway","version":"0.1.0","keywords":["x402","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"author":{"name":"Profullstack, LLC"},"license":"MIT","_id":"@profullstack/x402-gateway@0.1.0","maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"homepage":"https://github.com/profullstack/x402-gateway#readme","bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"dist":{"shasum":"36666f6ed2d17f54c6bee96795e3f9e3b40cff26","tarball":"https://registry.npmjs.org/@profullstack/x402-gateway/-/x402-gateway-0.1.0.tgz","fileCount":12,"integrity":"sha512-B7tWvWk/bIEoqyec6UoyRF1pO7X/+b+wFRv2ZFIClqskmEpyxoA559ZgdTvnxqAIvuDeE9v56nVpYRQ+lmOZQQ==","signatures":[{"sig":"MEQCIB7DrYeqEPKuExl/LqQU+mdaowGNLJ2HuQ93o0Sl5bYhAiA5a1SXnWut+ti9E39ZRgxEoWJFeSwYvzxR0Pq03p8ocQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46661},"type":"module","types":"./index.d.ts","engines":{"node":">=20.11"},"exports":{".":{"types":"./index.d.ts","import":"./src/index.js"},"./hono":{"types":"./index.d.ts","import":"./src/hono.js"},"./next":{"types":"./index.d.ts","import":"./src/next.js"},"./agents":{"types":"./index.d.ts","import":"./src/agents.js"},"./robots":{"types":"./index.d.ts","import":"./src/robots.js"}},"gitHead":"cd48222f3e2cee2a59f09eb23754c07322c8bb83","scripts":{"test":"node --test"},"_npmUser":{"name":"moshcoder","email":"anthony@chovy.com"},"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"_npmVersion":"11.16.0","description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, and a robots.txt that keeps search crawlers welcome.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x402-gateway_0.1.0_1788624712747_0.27794571893008024","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@profullstack/x402-gateway","version":"0.2.0","keywords":["x402","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"author":{"name":"Profullstack, LLC"},"license":"MIT","_id":"@profullstack/x402-gateway@0.2.0","maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"homepage":"https://github.com/profullstack/x402-gateway#readme","bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"dist":{"shasum":"66b4e6e1b9b0c816df38b3f722adaf243ab0d8b2","tarball":"https://registry.npmjs.org/@profullstack/x402-gateway/-/x402-gateway-0.2.0.tgz","fileCount":13,"integrity":"sha512-qjlBysJl9xopKDYP/6J1DV86NUlxNXiLrIFXW41E9McPArVb6CRgltmoCLQFzI2XEipKgI3pgy9ZVnoSekX2Dg==","signatures":[{"sig":"MEYCIQDnUr1uB6Rkr1pBe+McgVu8BpPRNPQAhfKCG6kAmi8hcAIhAPRh5gyENnmT7nmZG5FXiQA1/alxWXSoLtuTkD7zK8m6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53720},"type":"module","types":"./index.d.ts","engines":{"node":">=20.11"},"exports":{".":{"types":"./index.d.ts","import":"./src/index.js"},"./edge":{"types":"./index.d.ts","import":"./src/edge.js"},"./hono":{"types":"./index.d.ts","import":"./src/hono.js"},"./next":{"types":"./index.d.ts","import":"./src/next.js"},"./agents":{"types":"./index.d.ts","import":"./src/agents.js"},"./robots":{"types":"./index.d.ts","import":"./src/robots.js"}},"gitHead":"14e62d6adecb84d291aab2de120dc6e2b06e1904","scripts":{"test":"node --test"},"_npmUser":{"name":"moshcoder","email":"anthony@chovy.com"},"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"_npmVersion":"11.16.0","description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, and a robots.txt that keeps search crawlers welcome.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x402-gateway_0.2.0_1788627858223_0.15647723157803406","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@profullstack/x402-gateway","version":"0.2.1","keywords":["x402","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"author":{"name":"Profullstack, LLC"},"license":"MIT","_id":"@profullstack/x402-gateway@0.2.1","maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"homepage":"https://github.com/profullstack/x402-gateway#readme","bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"dist":{"shasum":"8e69ebaf5d782d3eccc6e1165c84496096191c7b","tarball":"https://registry.npmjs.org/@profullstack/x402-gateway/-/x402-gateway-0.2.1.tgz","fileCount":13,"integrity":"sha512-GNTQUepJjo8NlPAm5bsHvKf0/VlccRkxcMm0DTB7DQJbu7PuhOupcucwLuTEOEHI+1SAJbuNxu+2PgANmsBGww==","signatures":[{"sig":"MEYCIQD9UV2yXY8ma7T9pXniuqCoWCDP2VRer5Ekej90TCPu2wIhAKi7ItSlDoyL+1aIL4FNDEctV/Xc/S/5uNQR6cLDRzCH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54182},"type":"module","types":"./index.d.ts","engines":{"node":">=20.11"},"exports":{".":{"types":"./index.d.ts","import":"./src/index.js"},"./edge":{"types":"./index.d.ts","import":"./src/edge.js"},"./hono":{"types":"./index.d.ts","import":"./src/hono.js"},"./next":{"types":"./index.d.ts","import":"./src/next.js"},"./agents":{"types":"./index.d.ts","import":"./src/agents.js"},"./robots":{"types":"./index.d.ts","import":"./src/robots.js"}},"gitHead":"ff3711ee1481b22602c11752cc0c00893e644de0","scripts":{"test":"node --test"},"_npmUser":{"name":"moshcoder","email":"anthony@chovy.com"},"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"_npmVersion":"11.16.0","description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, and a robots.txt that keeps search crawlers welcome.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x402-gateway_0.2.1_1788627938093_0.8195082114539101","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@profullstack/x402-gateway","version":"0.2.2","keywords":["x402","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"author":{"name":"Profullstack, LLC"},"license":"MIT","_id":"@profullstack/x402-gateway@0.2.2","maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"homepage":"https://github.com/profullstack/x402-gateway#readme","bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"dist":{"shasum":"044e5a1fb15d0340c0d559a50f0d949b11052147","tarball":"https://registry.npmjs.org/@profullstack/x402-gateway/-/x402-gateway-0.2.2.tgz","fileCount":13,"integrity":"sha512-oAbe4AuJzNEoLcb+8fhR5u9ce7i9h3XuyoaFjuXlgTxTSXkfdAWOfYFZq1aFplVWvZNRW3da7fYCv7nkQdujXA==","signatures":[{"sig":"MEUCIEdjIyy+SRTXxeEgKMKRiLHaqh2RS3Yc3FLVYVQcV1qrAiEA4FgBcl1tO/bZpuEZ3mv0Gr9fMo866Pe0OvG6BJpaOQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54797},"type":"module","types":"./index.d.ts","engines":{"node":">=20.11"},"exports":{".":{"types":"./index.d.ts","import":"./src/index.js"},"./edge":{"types":"./index.d.ts","import":"./src/edge.js"},"./hono":{"types":"./index.d.ts","import":"./src/hono.js"},"./next":{"types":"./index.d.ts","import":"./src/next.js"},"./agents":{"types":"./index.d.ts","import":"./src/agents.js"},"./robots":{"types":"./index.d.ts","import":"./src/robots.js"}},"gitHead":"e5c111badf6081b439dab49852f40f5b6d9f5f92","scripts":{"test":"node --test"},"_npmUser":{"name":"moshcoder","email":"anthony@chovy.com"},"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"_npmVersion":"11.16.0","description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, and a robots.txt that keeps search crawlers welcome.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x402-gateway_0.2.2_1788628262726_0.25949452897521885","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@profullstack/x402-gateway","version":"0.3.0","keywords":["x402","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"author":{"name":"Profullstack, LLC"},"license":"MIT","_id":"@profullstack/x402-gateway@0.3.0","maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"homepage":"https://github.com/profullstack/x402-gateway#readme","bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"dist":{"shasum":"2160d12316d6b05d118c28e593a6bbfdfa8ab294","tarball":"https://registry.npmjs.org/@profullstack/x402-gateway/-/x402-gateway-0.3.0.tgz","fileCount":13,"integrity":"sha512-aaSMdtVInaAD6te/RnNnnqZW2+oo/dUsOTFTJCl0hOn58s85Yw3vZGk3KCtZmjrwV2O2rdTjKlZjbKp3CGgntw==","signatures":[{"sig":"MEUCIEKKO5L8xe9sT2xKVd0mJjz5CYNBV90BRSk4+NctErAVAiEAqB7U5D7YLvLexPpqfM+Dvx8KwlZjiL6KSyMRgjFMw5U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@profullstack%2fx402-gateway@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60424},"type":"module","types":"./index.d.ts","engines":{"node":">=20.11"},"exports":{".":{"types":"./index.d.ts","import":"./src/index.js"},"./edge":{"types":"./index.d.ts","import":"./src/edge.js"},"./hono":{"types":"./index.d.ts","import":"./src/hono.js"},"./next":{"types":"./index.d.ts","import":"./src/next.js"},"./agents":{"types":"./index.d.ts","import":"./src/agents.js"},"./robots":{"types":"./index.d.ts","import":"./src/robots.js"}},"gitHead":"8f9d4ec448b5aede1a778d6680e8cefa45f75802","scripts":{"test":"node --test"},"_npmUser":{"name":"moshcoder","email":"anthony@chovy.com"},"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"_npmVersion":"11.19.0","description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, and a robots.txt that keeps search crawlers welcome.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x402-gateway_0.3.0_1788633177088_0.06645385610464993","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@profullstack/x402-gateway","version":"0.3.1","keywords":["x402","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"author":{"name":"Profullstack, LLC"},"license":"MIT","_id":"@profullstack/x402-gateway@0.3.1","maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"homepage":"https://github.com/profullstack/x402-gateway#readme","bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"dist":{"shasum":"279f2d88a2267f309f5145f442f26a9549821d41","tarball":"https://registry.npmjs.org/@profullstack/x402-gateway/-/x402-gateway-0.3.1.tgz","fileCount":13,"integrity":"sha512-RtfM0WH9xZRKIpELPd85nI6bHbxxnD2ITXDGTXqFU99oFUETk/mBEio2RyzA2ern1NxWsu6FMEXpay1moAOWuw==","signatures":[{"sig":"MEUCIQCcc7m8EUo9jNTwpGylxY3N/wR5MIVHVvUZR173rGKEMAIgKHu6QCM49gd9js8/kN7OFphc8gJfstSMXKfBNKnzCPc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@profullstack%2fx402-gateway@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60620},"type":"module","types":"./index.d.ts","engines":{"node":">=20.11"},"exports":{".":{"types":"./index.d.ts","import":"./src/index.js"},"./edge":{"types":"./index.d.ts","import":"./src/edge.js"},"./hono":{"types":"./index.d.ts","import":"./src/hono.js"},"./next":{"types":"./index.d.ts","import":"./src/next.js"},"./agents":{"types":"./index.d.ts","import":"./src/agents.js"},"./robots":{"types":"./index.d.ts","import":"./src/robots.js"}},"gitHead":"ab54efdd1ea4999363bb6f9491da747ca80be102","scripts":{"test":"node --test"},"_npmUser":{"name":"moshcoder","email":"anthony@chovy.com"},"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"_npmVersion":"11.19.0","description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, and a robots.txt that keeps search crawlers welcome.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x402-gateway_0.3.1_1788664287736_0.07753604414910953","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@profullstack/x402-gateway","version":"0.4.0","keywords":["x402","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"author":{"name":"Profullstack, LLC"},"license":"MIT","_id":"@profullstack/x402-gateway@0.4.0","maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"homepage":"https://github.com/profullstack/x402-gateway#readme","bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"dist":{"shasum":"2c4cf6793cc25162de1ce3550cedb1cf2bd6807b","tarball":"https://registry.npmjs.org/@profullstack/x402-gateway/-/x402-gateway-0.4.0.tgz","fileCount":14,"integrity":"sha512-Rk3dtpwgi5rOIcHvsRqv7XvbT8rEHyhN/d3zdtsPe8zQfhhYWEjuFuvd/2bIWoWZ6fILQRQOCbejOe2VCRlsNg==","signatures":[{"sig":"MEQCIAkR1gQLxdDlMC6YmXSn26AAFOlIlWfNFfyjf752xF+HAiBoEc+66YB3dYgXbh9FzpWoEQTfVsLNzGfPeon/YfYG1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@profullstack%2fx402-gateway@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":75269},"type":"module","types":"./index.d.ts","engines":{"node":">=20.11"},"exports":{".":{"types":"./index.d.ts","import":"./src/index.js"},"./edge":{"types":"./index.d.ts","import":"./src/edge.js"},"./hono":{"types":"./index.d.ts","import":"./src/hono.js"},"./next":{"types":"./index.d.ts","import":"./src/next.js"},"./agents":{"types":"./index.d.ts","import":"./src/agents.js"},"./robots":{"types":"./index.d.ts","import":"./src/robots.js"}},"gitHead":"95ad70391df07ec1bff4c645408c4edacb7dbc28","scripts":{"test":"node --test"},"_npmUser":{"name":"moshcoder","email":"anthony@chovy.com"},"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"_npmVersion":"11.19.0","description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, and a robots.txt that keeps search crawlers welcome.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x402-gateway_0.4.0_1788675332464_0.46724530059285563","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@profullstack/x402-gateway","version":"0.5.0","keywords":["x402","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"author":{"name":"Profullstack, LLC"},"license":"MIT","_id":"@profullstack/x402-gateway@0.5.0","maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"homepage":"https://github.com/profullstack/x402-gateway#readme","bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"dist":{"shasum":"ad0153769e74b5696c5f8d24342140a0d0dc62bd","tarball":"https://registry.npmjs.org/@profullstack/x402-gateway/-/x402-gateway-0.5.0.tgz","fileCount":14,"integrity":"sha512-QnSDRKXbVbswB6lQ9eSdDUUt64A90Tmd1U2tuDFgqAtgJtTr/CoXDHHzXcJWJxv5f3f8FafdoxwO+/bgl0MhtQ==","signatures":[{"sig":"MEYCIQCcMkrqZc6ifa9dUoJySM1on3lFJS7cYRih45CSls56zwIhAMwdJBuBy1WYl6GM41I2cItiBkqHn0L4q5Ep7YQSiyE/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77190},"type":"module","types":"./index.d.ts","engines":{"node":">=20.11"},"exports":{".":{"types":"./index.d.ts","import":"./src/index.js"},"./edge":{"types":"./index.d.ts","import":"./src/edge.js"},"./hono":{"types":"./index.d.ts","import":"./src/hono.js"},"./next":{"types":"./index.d.ts","import":"./src/next.js"},"./agents":{"types":"./index.d.ts","import":"./src/agents.js"},"./robots":{"types":"./index.d.ts","import":"./src/robots.js"}},"gitHead":"ffea26c478b6038cf12bd0e7003fccd8c159ce62","scripts":{"test":"node --test"},"_npmUser":{"name":"moshcoder","email":"anthony@chovy.com"},"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"_npmVersion":"11.16.0","description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, and a robots.txt that keeps search crawlers welcome.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x402-gateway_0.5.0_1788971287017_0.7638887083675034","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@profullstack/x402-gateway","version":"0.6.0","keywords":["x402","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"author":{"name":"Profullstack, LLC"},"license":"MIT","_id":"@profullstack/x402-gateway@0.6.0","maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"homepage":"https://github.com/profullstack/x402-gateway#readme","bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"dist":{"shasum":"bb4c6e1d256b9789e713c4753ef4aa1e423a9aa1","tarball":"https://registry.npmjs.org/@profullstack/x402-gateway/-/x402-gateway-0.6.0.tgz","fileCount":14,"integrity":"sha512-n9/7NixIM9wVOMGWDc+3RtFsGABG+HAYfkZ11JxoEIlF/FDRGEXbvHFlNL/M97RNy01964FhAbQp34OMJoxqZg==","signatures":[{"sig":"MEUCIQCi+/avEW4ShAJKPlE8LNdZ679YQIZXRIHQehxGyiKw2wIgRnI6FcMuReAj9hOJqbA2oWBvAz311tPZ2U0KAyVkICU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78149},"type":"module","types":"./index.d.ts","engines":{"node":">=20.11"},"exports":{".":{"types":"./index.d.ts","import":"./src/index.js"},"./edge":{"types":"./index.d.ts","import":"./src/edge.js"},"./hono":{"types":"./index.d.ts","import":"./src/hono.js"},"./next":{"types":"./index.d.ts","import":"./src/next.js"},"./agents":{"types":"./index.d.ts","import":"./src/agents.js"},"./robots":{"types":"./index.d.ts","import":"./src/robots.js"}},"gitHead":"8fec5eeeb5757a4577f0f28794aac8167459c2fe","scripts":{"test":"node --test"},"_npmUser":{"name":"moshcoder","email":"anthony@chovy.com"},"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"_npmVersion":"11.16.0","description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, and a robots.txt that keeps search crawlers welcome.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/x402-gateway_0.6.0_1788972616629_0.4705505546982165","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"_id":"@profullstack/x402-gateway@0.7.0","bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"dist":{"shasum":"4ddef57083ee8430381b8dc795c897904c46126e","tarball":"https://registry.npmjs.org/@profullstack/x402-gateway/-/x402-gateway-0.7.0.tgz","fileCount":14,"integrity":"sha512-xsZRWHdOD9Y9EuRS4PsRmykVS2geOu/luY0jBlliOF3SEgxiLhgmx7ks+2jOUtGlq+cIfSonnk5eEObRGCOJ9w==","signatures":[{"sig":"MEUCIQCDGeu5wM7e3A/pkt7BEm0n7uCdXlqKD3bLm9Wumz4MUwIgUm3epfheCMracjznIc9Wt7EXKYRz7emq0rOMY/csQgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHn6JbYd3Sif6In1EBCFXbk/xoT4UEq1bzpE81PaLnJPAiEAxlvFHqHud4ChCWi5crC9zLe95wL5fVki590PvEIz0+s="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@profullstack%2fx402-gateway@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":82273},"name":"@profullstack/x402-gateway","type":"module","types":"./index.d.ts","author":{"name":"Profullstack, LLC"},"engines":{"node":">=20.11"},"exports":{".":{"types":"./index.d.ts","import":"./src/index.js"},"./edge":{"types":"./index.d.ts","import":"./src/edge.js"},"./hono":{"types":"./index.d.ts","import":"./src/hono.js"},"./next":{"types":"./index.d.ts","import":"./src/next.js"},"./agents":{"types":"./index.d.ts","import":"./src/agents.js"},"./robots":{"types":"./index.d.ts","import":"./src/robots.js"}},"gitHead":"3ebcf6bded44917438ec70750e474c2d16125ff7","license":"MIT","scripts":{"test":"node --test"},"version":"0.7.0","_npmUser":{"name":"moshcoder","email":"anthony@chovy.com"},"homepage":"https://github.com/profullstack/x402-gateway#readme","keywords":["x402","power-key","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"_npmVersion":"11.19.0","description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, Profullstack Power Keys honoured as a pass, and a robots.txt that keeps search crawle","directories":{},"maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@profullstack/keys":"^0.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/x402-gateway_0.7.0_1790070810051_0.8805750774384964"}}},"time":{"created":"2026-09-05T16:11:52.539Z","modified":"2026-09-22T09:53:30.462Z","0.1.0":"2026-09-05T16:11:52.877Z","0.2.0":"2026-09-05T17:04:18.355Z","0.2.1":"2026-09-05T17:05:38.219Z","0.2.2":"2026-09-05T17:11:02.897Z","0.3.0":"2026-09-05T18:32:57.221Z","0.3.1":"2026-09-06T03:11:27.863Z","0.4.0":"2026-09-06T06:15:32.598Z","0.5.0":"2026-09-09T16:28:07.158Z","0.6.0":"2026-09-09T16:50:16.784Z","0.7.0":"2026-09-22T09:53:30.146Z"},"bugs":{"url":"https://github.com/profullstack/x402-gateway/issues"},"author":{"name":"Profullstack, LLC"},"license":"MIT","homepage":"https://github.com/profullstack/x402-gateway#readme","keywords":["x402","power-key","402","payment-required","crawler","ai-crawler","gptbot","claudebot","meta-externalagent","robots.txt","coinpay","usdc","hono","nextjs","middleware","paywall"],"repository":{"url":"git+https://github.com/profullstack/x402-gateway.git","type":"git"},"description":"Sell crawl access to AI training crawlers by the day over x402, settled by CoinPay. One middleware: 402 with an offer, a sales page with CLI instructions, signed passes, Profullstack Power Keys honoured as a pass, and a robots.txt that keeps search crawle","maintainers":[{"name":"moshcoder","email":"anthony@chovy.com"},{"name":"devpreshy","email":"devpreshy@gmail.com"}],"readme":"# @profullstack/x402-gateway\n\nSell crawl access to AI training crawlers, by the day, over [x402](https://x402.org), settled by [CoinPay](https://coinpayportal.com).\n\nPeople read your site free. So do search engines and the retrieval crawlers behind AI answers, because they send readers back. A crawler that copies pages into a training corpus sends nobody back, so it pays: every page answers `402 Payment Required` with an x402 offer, paying the offer returns a signed pass, and the pass opens the site for a day.\n\nA crawler that wants longer buys more days in one payment. `?days=7` on the sales page quotes seven days at the daily price, and the days a proof buys are read off the value it authorizes, so paying seven times the price — however it was asked for — returns a pass that expires seven days out. `maxDays` caps how many one proof can buy.\n\nOne middleware. No database. Runs in Node, Bun and at the edge.\n\n```\nnpm install @profullstack/x402-gateway\n```\n\n## What it does\n\n| Visitor | Gets |\n| --- | --- |\n| A person, Googlebot, Bingbot, Applebot, OAI-SearchBot, Claude-SearchBot, PerplexityBot… | the site, untouched |\n| GPTBot, ClaudeBot, CCBot, meta-externalagent, Bytespider, Applebot-Extended… | `402` with an x402 offer, or the HTML sales page if it asked for HTML |\n| Anyone at `/crawl` | the sales page (HTML) or the offer (JSON), and the place to pay |\n| A request with a valid pass | the site |\n\nThe sales page explains the price, how to pay with an x402 client, and how to pay with the CoinPay CLI:\n\n```\nnpm install -g @profullstack/coinpay\ncoinpay x402 pay https://your-site.com/crawl --output pass.json\ncurl -H \"x-crawl-pass: $(node -p \"require('./pass.json').pass\")\" https://your-site.com/\n```\n\n## Hono\n\n```js\nimport { Hono } from 'hono';\nimport { createGateway } from '@profullstack/x402-gateway';\nimport { x402Gateway } from '@profullstack/x402-gateway/hono';\n\nconst gateway = createGateway({\n  siteUrl: 'https://your-site.com',\n  coinpay: { apiKey: process.env.COINPAY_X402_KEY },\n  payTo: process.env.CRAWL_PAY_TO,\n});\n\nconst app = new Hono();\napp.use('*', x402Gateway(gateway));\napp.get('/robots.txt', (c) => c.text(gateway.robotsTxt({ disallow: ['/login', '/api/'] })));\n```\n\n## Next.js\n\n`src/proxy.ts` on Next 16, `middleware.ts` before that. One per app; if you already have one, compose.\n\n```ts\nimport { createGateway } from '@profullstack/x402-gateway';\nimport { x402Proxy } from '@profullstack/x402-gateway/next';\n\nexport const gateway = createGateway({\n  siteUrl: 'https://your-site.com',\n  coinpay: { apiKey: process.env.COINPAY_X402_KEY },\n  payTo: process.env.CRAWL_PAY_TO,\n});\n\nexport const proxy = x402Proxy(gateway);\nexport const config = { matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'] };\n```\n\n```ts\n// app/robots.txt/route.ts\nimport { robotsRoute } from '@profullstack/x402-gateway/next';\nimport { gateway } from '../../proxy';\nexport const GET = robotsRoute(gateway, { disallow: ['/login', '/api/'] });\n```\n\n## Anything else\n\n`gateway.handle(request)` takes a Fetch `Request` and resolves to a `Response` to send, or `null` to carry on. Wrap it in ten lines for whatever you run.\n\n## Options\n\n| Option | Default | |\n| --- | --- | --- |\n| `siteUrl` | required | canonical origin, no trailing slash |\n| `coinpay.apiKey` | | a **scoped** CoinPay key (`cp_live_…`, from the business's API Keys tab) with `payments:create`. The legacy business key is refused by CoinPay's x402 routes. |\n| `payTo` | | EVM address that receives the USDC, on Base, Polygon and Ethereum alike |\n| `priceCents` | `100` | |\n| `passMinutes` | `1440` | a day: the term one price buys |\n| `maxDays` | `30` | the most terms one proof may buy at once |\n| `header` | `x-crawl-pass` | where the pass goes; `Authorization: Bearer` works too |\n| `path` | `/crawl` | the sales page |\n| `openPaths` | `[]` | extra paths a refused crawler may read (`robots.txt`, the sales page, `security.txt` and `.well-known/` always are) |\n| `isPaidAgent` | training list | `(userAgent) => boolean` |\n| `training`, `retrieval` | the lists in `./agents` | |\n| `secret` | the CoinPay key | pass signing secret |\n| `page` | built in | `(ctx) => html` |\n| `contact` | | mailto: or URL for bulk deals |\n| `onSale` | | `({ payer, ref, token, expiresAt, userAgent, priceCents, currency }) => …`, for accounting |\n\n| `denyCidrs` | `[]` | IPv4 ranges answered with a tiny `403` before anything else. For a VPS fleet that spoofs a browser: hosting ranges serve no readers. |\n| `chargeSpoofedBrowsers` | `false` | charge a request that claims `Chrome/…` but sends no `Sec-Fetch-Mode`. Every Chromium since 76, headless included, sends it on every request and no script or extension can remove it, so its absence means an HTTP client with a copied string. Firefox and Safari are not judged. |\n| `exempt` | | `(request) => boolean`, never charged: e.g. a request carrying your signed-in cookie |\n| `powerKeys` | Profullstack's | Power Keys honoured as a pass, kid to public key. `false` switches it off. See below. |\n| `revokedKeys` | | Power Key subjects no longer honoured |\n\nWithout `coinpay.apiKey` and `payTo` the gateway still answers training crawlers with 402 and the page says payments are off. Nothing is sold, but nothing is given away either.\n\n## One key for every site\n\nA day pass opens one site for a day. A [Power Key](https://profullstack.com/shop) is bought once and opens every Profullstack property for good: no crawler paywall, no allowance, no per-site pass. It is an Ed25519-signed token from [`@profullstack/keys`](https://www.npmjs.com/package/@profullstack/keys), and the gateway verifies it offline with the public key that package ships, so a site honours it with no configuration and no call to anyone.\n\nA client sends it as `Authorization: Bearer pfs_...`, in `x-power-key`, or as `x-api-key`. `passFrom` reads it and `verifyPass` verifies it, so a throttle built on the gateway skips it the same way it skips a day pass. The 402 body carries `powerKey: { shop, header }` and the sales page says where to buy one.\n\nRunning the gateway somewhere that is not a Profullstack property? Pass `powerKeys: false`, or your own `{ kid: publicKey }` map to sell keys of your own with `mintKey` from the same package.\n\n## A free allowance that sells instead of refusing\n\nNamed crawlers are one problem. The other is an ordinary client hammering the\nsite far past what a reader would. The usual answer is `429 Too Many Requests`,\nwhich tells them to go away. That is the right answer when you have nothing to\nsell. Here you do.\n\n```js\ncreateGateway({\n  siteUrl: 'https://your-site.com',\n  coinpay: { apiKey: process.env.COINPAY_X402_KEY },\n  payTo: process.env.CRAWL_PAY_TO,\n\n  freeQuota: 100,                    // 100 requests a minute, free, no account\n  benefits: [\n    'No rate limit',\n    'Bulk export endpoint',\n    'Every field, not just the summary',\n  ],\n});\n```\n\nPast the allowance the gateway answers `402` with the offer, the RateLimit\nheaders, and a body that says what ran out, when it comes back, and what a pass\ncosts. The moment a caller runs out of free requests is the best sales pitch the\nsite will ever get: it has just demonstrated it wants more than the free tier\nand is still holding the request.\n\n`freeQuota` takes `{ requests, windowSeconds, paths, identify, store }`. A pass\nis checked before the allowance, so a paying caller is never metered. The sales\npage, `robots.txt` and `.well-known/` stay reachable when the allowance is gone,\nbecause being unable to reach the page that sells the fix would be the worst\npossible failure of a throttle that exists to sell something.\n\n### On rotating addresses to get around it\n\nThe default identity is the caller's address, and a proxy rotation defeats it.\nThat is not a hole to be patched, because the arithmetic already argues for\npaying:\n\n- Residential proxy bandwidth is sold **by the gigabyte**, and a crawl big\n  enough to be worth rotating for passes a dollar on the first day.\n- A rotation still fetches every page one at a time. It buys no speed.\n- A pass is a flat price with nothing to maintain and nothing to keep working.\n\nSo the throttled page makes that case in as many words rather than pretending to\nbe undefeatable. Detection is a race you re-run every time someone changes\ntactics. Price is not: the better your free tier and the clearer your paid one,\nthe less anyone bothers. Set `benefits` to the things a rotation genuinely\ncannot get, a bulk endpoint above all, and evasion stops being worth the effort\nrather than being blocked.\n\nWhere you *can* identify a caller properly, do: pass `identify` and key on an API\nkey or an account, and the allowance becomes exact.\n\n## Crawlers that do not say who they are\n\nThe lists catch crawlers that name themselves. Two do not: a VPS fleet wearing a browser string, and a residential-proxy rotation cycling a few Chrome strings across hundreds of addresses. `denyCidrs` handles the first (`['51.38.0.0/16', '54.38.0.0/16', …]` for one provider's ranges); `chargeSpoofedBrowsers` handles both by asking a question only a browser can answer. A request that answers it is left alone. One that cannot gets the same 402 as GPTBot, which costs the site a hash instead of a render.\n\n## How the money moves\n\nThe offer is x402 v2 in CoinPay's dialect: USDC under the `exact` scheme on Base, Polygon or Ethereum, EIP-3009 `transferWithAuthorization`. The buyer signs, the gateway sends the proof to CoinPay's `/api/x402/verify` and `/api/x402/settle`, and CoinPay's relayer broadcasts the transfer, paying the gas. The USDC goes straight to `payTo`.\n\nA pass is `cp_<payload>.<hmac>`: its own expiry and the payment's nonce, signed with HMAC-SHA256. Verifying one is a hash, not a query. A proof is single-use; retrying with the same proof returns a pass bounded by the proof's own validity window, so a lost response is not a lost dollar and a replayed header is not a free day.\n\n## Who is on which list\n\n`TRAINING_AGENTS` is the documented corpus-crawl token of each operator; `RETRIEVAL_AGENTS` the search half of the same pairs: GPTBot / OAI-SearchBot, ClaudeBot / Claude-SearchBot, meta-externalagent / Meta-ExternalFetcher, Applebot-Extended / Applebot. Google-Extended stays welcome because Google documents it as also gating Gemini app grounding. Matching is a substring of the user agent, which identifies a self-declared crawler and nothing more: a crawler wearing a browser's user agent walks past this, and that one needs blocking at the edge.\n\n## Licence\n\nMIT\n","readmeFilename":"README.md"}