{"_id":"@curless/agentbank-mcp-pay","_rev":"15-0f8a9e82ad37cad34215b2fe803a0836","name":"@curless/agentbank-mcp-pay","dist-tags":{"latest":"0.6.8"},"versions":{"0.1.0":{"name":"@curless/agentbank-mcp-pay","version":"0.1.0","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.1.0","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"dist":{"shasum":"4522ad18cfd11a72934a6edfe2c33312be26bdc8","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.1.0.tgz","fileCount":22,"integrity":"sha512-RgM8UTxsRzGmgSHgn4MTT+RjocP1dmaSjjonFp67AH344q7nlAcxe5kdJQI514wR8pg4yxe9qSGW7osqBx3uDw==","signatures":[{"sig":"MEUCIQCvSqI76qPr2PloByJ0OYeoLiExjlp2veHj+WnPSuig0wIga7dIa4Y4722bI7kI/m2+y5/ylisUwe/RJOeIE9OhFxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25245},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.1.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/tmp/claude-501/182104bef986c69082dfd65c5f5ebaa4/curless-agentbank-mcp-pay-0.1.0.tgz","_integrity":"sha512-RgM8UTxsRzGmgSHgn4MTT+RjocP1dmaSjjonFp67AH344q7nlAcxe5kdJQI514wR8pg4yxe9qSGW7osqBx3uDw==","deprecated":"Security: upgrade to >=0.6.2 — versions <=0.6.0 leak the agent bearer to a merchant-controlled payEndpoint (CVE-class credential exfiltration, fixed in 0.6.1/0.6.2).","_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. Wrap a tool handler with withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), and the call runs once payment is verified. Settles down to agentbank's ledger + ","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.1.0_1780482401804_0.3770443792941742","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@curless/agentbank-mcp-pay","version":"0.2.0","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.2.0","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"dist":{"shasum":"236c1c776262e2c2f9d5592e0d64c285fe99b05a","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.2.0.tgz","fileCount":22,"integrity":"sha512-DvgkcK3p6Fij7ParY+R+oQvScmiyBcXXHdPpP7a6r3317RAVHBngDzAas6map5iJVdkS1T795L10u7ZqGe1S2Q==","signatures":[{"sig":"MEUCIGc3LZZZLzZ4nkyaXMOEAqhkduPkNflmsy2rsnn8bO3kAiEAxgPPpYW+Zzo2kQMM1c0QL9aXu1x3jDlLiV1IgZoLyH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27382},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.2.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/tmp/claude-501/9c68b4911fb1cd16ea72840dbc8ef346/curless-agentbank-mcp-pay-0.2.0.tgz","_integrity":"sha512-DvgkcK3p6Fij7ParY+R+oQvScmiyBcXXHdPpP7a6r3317RAVHBngDzAas6map5iJVdkS1T795L10u7ZqGe1S2Q==","deprecated":"Security: upgrade to >=0.6.2 — versions <=0.6.0 leak the agent bearer to a merchant-controlled payEndpoint (CVE-class credential exfiltration, fixed in 0.6.1/0.6.2).","_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. Wrap a tool handler with withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), and the call runs once payment is verified. Settles down to agentbank's ledger + ","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.2.0_1780488386438_0.3709849288902398","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@curless/agentbank-mcp-pay","version":"0.3.0","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.3.0","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"dist":{"shasum":"a37012b70015d3c736f149403e1c1a7faf08fa9e","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.3.0.tgz","fileCount":22,"integrity":"sha512-rsLTSOJ2HeJLDq1r+YveWBOGdN2kqrbjBikJsK0gt/gHzJOuW0UoPL51iSNUdlXL5hlZW2xog5ARrtaG9Xz8PQ==","signatures":[{"sig":"MEUCIEKetu1wNAmMUNFUuI6xxG/nKLCJ/Wws0EnQmS9zd/euAiEA/KhAUDDbhF5lCxP1iuDe7Ipz4rw+CcLy+Bya20KPRao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36407},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/tmp/claude-501/2cbf12460ffc35768c0550252b044484/curless-agentbank-mcp-pay-0.3.0.tgz","_integrity":"sha512-rsLTSOJ2HeJLDq1r+YveWBOGdN2kqrbjBikJsK0gt/gHzJOuW0UoPL51iSNUdlXL5hlZW2xog5ARrtaG9Xz8PQ==","deprecated":"Security: upgrade to >=0.6.2 — versions <=0.6.0 leak the agent bearer to a merchant-controlled payEndpoint (CVE-class credential exfiltration, fixed in 0.6.1/0.6.2).","_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.3.0_1780570685032_0.42130711945123345","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@curless/agentbank-mcp-pay","version":"0.4.0","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.4.0","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"dist":{"shasum":"5ebe9c44b9cba1fde7e443be5be32b06f333080b","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.4.0.tgz","fileCount":22,"integrity":"sha512-4ab4uEBniqX/83+UWp7q+PS52oHPfucvs5pXsU3yyB+SJ2Yg5+q0yD+T1WuPeOxYN6BX4aU0RmYuaPiWRJ9W/w==","signatures":[{"sig":"MEUCIDgDvXK/gmZfONz2fW8uCzoisgUdxGM780+bCAh5UAteAiEAp5Sj8CMclP6ttUKJx4r2RfP4p9gjuyqeZmaGoh9P1TQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40362},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.4.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/tmp/claude-501/a38f3175c2dd0e85f200cdd04f218149/curless-agentbank-mcp-pay-0.4.0.tgz","_integrity":"sha512-4ab4uEBniqX/83+UWp7q+PS52oHPfucvs5pXsU3yyB+SJ2Yg5+q0yD+T1WuPeOxYN6BX4aU0RmYuaPiWRJ9W/w==","deprecated":"Security: upgrade to >=0.6.2 — versions <=0.6.0 leak the agent bearer to a merchant-controlled payEndpoint (CVE-class credential exfiltration, fixed in 0.6.1/0.6.2).","_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.4.0_1780578901363_0.6130041262273016","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@curless/agentbank-mcp-pay","version":"0.5.0","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.5.0","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"dist":{"shasum":"e2aad9fd05f07ccbfba464086d531e9e3da71122","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.5.0.tgz","fileCount":22,"integrity":"sha512-ebWH0rlVwwwlqjY5RE+GvzJTUsjuwPyOxOOcRE2a0GgBu+uVnzOLlP6KmIqlsitQhNn/+MV6W67bEAED/NlZjQ==","signatures":[{"sig":"MEUCIQC9uiuA6bvAL75R8gOSSaD39QyDXV9pscDzxG2G1pxdZgIgJgddu4bZ/9yWrpVmgyEJmHhfVv3BsbODyzkMYL82/dk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42451},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.5.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/tmp/claude-501/19069ba46b3df24d9aaec3be1821afa6/curless-agentbank-mcp-pay-0.5.0.tgz","_integrity":"sha512-ebWH0rlVwwwlqjY5RE+GvzJTUsjuwPyOxOOcRE2a0GgBu+uVnzOLlP6KmIqlsitQhNn/+MV6W67bEAED/NlZjQ==","deprecated":"Security: upgrade to >=0.6.2 — versions <=0.6.0 leak the agent bearer to a merchant-controlled payEndpoint (CVE-class credential exfiltration, fixed in 0.6.1/0.6.2).","_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.5.0_1780666543578_0.3956681742971615","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@curless/agentbank-mcp-pay","version":"0.6.0","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.6.0","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"dist":{"shasum":"2361d132b82f8590879dd3e3a160a8fa11cfe682","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.6.0.tgz","fileCount":22,"integrity":"sha512-wiBHEiyX2qQclEjP39718qd03LhjpdcmQhebMpVyb6agdcTPZSxWyV5kOYG4sifH+uzUeVzUl6WiVii3XP/dHw==","signatures":[{"sig":"MEUCIQC4B1/9KmHNUGFb5T8khGIXo89E0AsH1U9mz/mNzpnLtgIgaNhZ6mNK9AfuYZ8N97pFvAIHHyqXk/ytmM+CJXVTtsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42741},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.6.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/tmp/claude-501/c0ad8eafe0439cef79eecbb7bed7b84d/curless-agentbank-mcp-pay-0.6.0.tgz","_integrity":"sha512-wiBHEiyX2qQclEjP39718qd03LhjpdcmQhebMpVyb6agdcTPZSxWyV5kOYG4sifH+uzUeVzUl6WiVii3XP/dHw==","deprecated":"Security: upgrade to >=0.6.2 — versions <=0.6.0 leak the agent bearer to a merchant-controlled payEndpoint (CVE-class credential exfiltration, fixed in 0.6.1/0.6.2).","_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","typescript":"^5.6.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.6.0_1780907172176_0.6373774296755657","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@curless/agentbank-mcp-pay","version":"0.6.2","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"author":{"name":"robin"},"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.6.2","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"homepage":"https://gitlab.com/robin-ruan/agentbank#readme","bugs":{"url":"https://gitlab.com/robin-ruan/agentbank/issues"},"dist":{"shasum":"a6ef4cf3023a9a3d80ae7d70fbebe76bc0d85de0","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.6.2.tgz","fileCount":22,"integrity":"sha512-c0qN/2NV4L5H0T7G6oXKc34wuxF4xhOKvqYyM5YZZNJHffdgk1VasbnsC5afr7rA7NfDfolArjwy0ky2yE5bGg==","signatures":[{"sig":"MEQCIHX7D/P/WzKpiGDZu13lQ9DEK0AoiWz5WRbLemprwtRBAiB04C7Dp5oTAFpv+hbIQY8tjLa7weOKZi9lUOQOdV7PcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43146},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.6.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/var/folders/6_/jg5_2xjd5bb51q9ffct_qlk00000gn/T/8350a2517c845c9161c694bf50ce7449/curless-agentbank-mcp-pay-0.6.2.tgz","_integrity":"sha512-c0qN/2NV4L5H0T7G6oXKc34wuxF4xhOKvqYyM5YZZNJHffdgk1VasbnsC5afr7rA7NfDfolArjwy0ky2yE5bGg==","repository":{"url":"git+https://gitlab.com/robin-ruan/agentbank.git","type":"git","directory":"packages/mcp-pay"},"_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.6.2_1781072291586_0.6634662150292017","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@curless/agentbank-mcp-pay","version":"0.6.3","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"author":{"name":"robin"},"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.6.3","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"homepage":"https://gitlab.com/robin-ruan/agentbank#readme","bugs":{"url":"https://gitlab.com/robin-ruan/agentbank/issues"},"dist":{"shasum":"b9c19b9cb86e8e40336fa8993cce803f50aa2534","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.6.3.tgz","fileCount":22,"integrity":"sha512-DDh6x1GL108iCe3jdDTA61JWydnKp/bDBBDQUkX+5sFv20tWB5DbDXm2Fw4WWaxdX1XgwerzUJsOjQaSEvDpJA==","signatures":[{"sig":"MEQCIAObJfFqRPR95BqfBmW/kZphGxaJLAqkNkk9T/y5qFbYAiBgZHWioHel6maj/G33bpwracpXS48UuuWPKAaOMUJqtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44896},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.6.3.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/var/folders/6_/jg5_2xjd5bb51q9ffct_qlk00000gn/T/212e2f7e63c6bb60fe7ef4fe60e473d5/curless-agentbank-mcp-pay-0.6.3.tgz","_integrity":"sha512-DDh6x1GL108iCe3jdDTA61JWydnKp/bDBBDQUkX+5sFv20tWB5DbDXm2Fw4WWaxdX1XgwerzUJsOjQaSEvDpJA==","repository":{"url":"git+https://gitlab.com/robin-ruan/agentbank.git","type":"git","directory":"packages/mcp-pay"},"_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.3","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.6.3_1781142591780_0.25858129579851563","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@curless/agentbank-mcp-pay","version":"0.6.4","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"author":{"name":"robin"},"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.6.4","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"homepage":"https://gitlab.com/robin-ruan/agentbank#readme","bugs":{"url":"https://gitlab.com/robin-ruan/agentbank/issues"},"dist":{"shasum":"6d0382068ad697bf4577cb250c9cd188b6d2c805","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.6.4.tgz","fileCount":22,"integrity":"sha512-LLJSg+Kd1x1kjBrpzCJcynkZF1bB/GiVIm82ifMtlvRbWxDpabeim1oXIT5dXkFYxU7tKWqJqRjyhTbOXphcqw==","signatures":[{"sig":"MEUCIDXlGAGQ+FHmx/l9lQNnEbJUvHDlrBm/qaiwF79ElAbuAiEA36Omtc5e83TcG4zHlfDPVjUUXILSLua+RDSPY7RaznU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44778},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.6.4.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/var/folders/6_/jg5_2xjd5bb51q9ffct_qlk00000gn/T/8fb719dd143a58c5f52d36f12971a9b1/curless-agentbank-mcp-pay-0.6.4.tgz","_integrity":"sha512-LLJSg+Kd1x1kjBrpzCJcynkZF1bB/GiVIm82ifMtlvRbWxDpabeim1oXIT5dXkFYxU7tKWqJqRjyhTbOXphcqw==","repository":{"url":"git+https://gitlab.com/robin-ruan/agentbank.git","type":"git","directory":"packages/mcp-pay"},"_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.3","@types/node":"^22.10.1","@modelcontextprotocol/sdk":"^1.0.4"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.6.4_1781196171300_0.5630831668328844","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@curless/agentbank-mcp-pay","version":"0.6.5","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"author":{"name":"robin"},"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.6.5","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"homepage":"https://gitlab.com/robin-ruan/agentbank#readme","bugs":{"url":"https://gitlab.com/robin-ruan/agentbank/issues"},"dist":{"shasum":"2e66ba80af9583cc1dad4aa1516b3fb4863456d0","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.6.5.tgz","fileCount":22,"integrity":"sha512-cY7mNYK2ntyV6Ds4rF0V+fmyRIAEX9I575jlBksQ8cL4HsZX1oQ89XB7HdkvJ/JtWTupz9zaJQuw6Gf2ulJ7uA==","signatures":[{"sig":"MEUCIEUDnGDtwsgPHkq7KyVY0i9bY/v+IlKFoG2qhrEa68X4AiEA9fmtpncUpSdiLZ20cZtYLk2WjLXy/dWL5eXe0BFCEvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48352},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.6.5.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/var/folders/6_/jg5_2xjd5bb51q9ffct_qlk00000gn/T/b3d6d0d83b1b0b58b69904dd06597403/curless-agentbank-mcp-pay-0.6.5.tgz","_integrity":"sha512-cY7mNYK2ntyV6Ds4rF0V+fmyRIAEX9I575jlBksQ8cL4HsZX1oQ89XB7HdkvJ/JtWTupz9zaJQuw6Gf2ulJ7uA==","repository":{"url":"git+https://gitlab.com/robin-ruan/agentbank.git","type":"git","directory":"packages/mcp-pay"},"_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.3","@types/node":"^22.10.1","@modelcontextprotocol/sdk":"^1.0.4"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.6.5_1781635586154_0.8627357094970813","host":"s3://npm-registry-packages-npm-production"}},"0.6.6":{"name":"@curless/agentbank-mcp-pay","version":"0.6.6","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"author":{"name":"robin"},"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.6.6","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"homepage":"https://gitlab.com/robin-ruan/agentbank#readme","bugs":{"url":"https://gitlab.com/robin-ruan/agentbank/issues"},"dist":{"shasum":"b4f47b9f50c84efda36a7d050562ce9fb70367c1","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.6.6.tgz","fileCount":22,"integrity":"sha512-sRU1ft0r6RYCF6gqjwWim3GXutxS/5cPKHE9Kn9vNCkocQ3Qdy/AM2Bu9MJjy8gtMYVkFLsxWQnYag9OHlnU4w==","signatures":[{"sig":"MEQCIAhftr5UNAjfeu+evAx2rxp3xP89zVPIz3XUInq+6mYGAiBizFmvJ87WhYYgXQyCWWkqBCZVOZy8OGlb1wKpBTreTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49099},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.6.6.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/var/folders/6_/jg5_2xjd5bb51q9ffct_qlk00000gn/T/c22758a11ac8d122cf9b6d6a992d0d3f/curless-agentbank-mcp-pay-0.6.6.tgz","_integrity":"sha512-sRU1ft0r6RYCF6gqjwWim3GXutxS/5cPKHE9Kn9vNCkocQ3Qdy/AM2Bu9MJjy8gtMYVkFLsxWQnYag9OHlnU4w==","repository":{"url":"git+https://gitlab.com/robin-ruan/agentbank.git","type":"git","directory":"packages/sdks/mcp-pay"},"_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"^0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.3","@types/node":"^22.10.1","@modelcontextprotocol/sdk":"^1.0.4"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.6.6_1784261230919_0.7488577373810092","host":"s3://npm-registry-packages-npm-production"}},"0.6.7":{"name":"@curless/agentbank-mcp-pay","version":"0.6.7","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"author":{"name":"robin"},"license":"MIT","_id":"@curless/agentbank-mcp-pay@0.6.7","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"homepage":"https://mcp.curless.ai/doc/sdks/mcp-pay/","bugs":{"url":"https://gitlab.com/curless-group1/agentbank/issues"},"dist":{"shasum":"928b1c0ce4047b9d49d156a8f1e33bf329b0088e","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.6.7.tgz","fileCount":22,"integrity":"sha512-I/n4tTttYog7kndo+wRGPa4DOQArVuywqXDkUPS8Ld/u9VHSUxLd4LGCmXt4XxmxdgvXLsMLT7QSTWREBMlRMQ==","signatures":[{"sig":"MEUCIBfx6smUU3k3ydCeR0+qk511mO/PDPze8wnJzDRkczJBAiEAndL40GsIivNqtCFY5todEmk2JwgarpNei2l0817bWY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49161},"main":"dist/index.js","type":"module","_from":"file:curless-agentbank-mcp-pay-0.6.7.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"_resolved":"/private/var/folders/6_/jg5_2xjd5bb51q9ffct_qlk00000gn/T/126011c1f3e02dad3be8820192cd98d3/curless-agentbank-mcp-pay-0.6.7.tgz","_integrity":"sha512-I/n4tTttYog7kndo+wRGPa4DOQArVuywqXDkUPS8Ld/u9VHSUxLd4LGCmXt4XxmxdgvXLsMLT7QSTWREBMlRMQ==","repository":{"url":"git+https://gitlab.com/curless-group1/agentbank.git","type":"git","directory":"packages/sdks/mcp-pay"},"_npmVersion":"10.9.4","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@curless/agentbank-core":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.3","@types/node":"^22.10.1","@modelcontextprotocol/sdk":"^1.0.4"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agentbank-mcp-pay_0.6.7_1787567621664_0.5865487696888281","host":"s3://npm-registry-packages-npm-production"}},"0.6.8":{"name":"@curless/agentbank-mcp-pay","version":"0.6.8","description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","license":"MIT","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./agent":{"types":"./dist/agent.d.ts","default":"./dist/agent.js"}},"dependencies":{"@curless/agentbank-core":"^0.8.0"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"publishConfig":{"access":"public"},"devDependencies":{"@modelcontextprotocol/sdk":"^1.0.4","@types/node":"^22.10.1","typescript":"^5.6.3","vitest":"^3.2.6"},"engines":{"node":">=18"},"keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"homepage":"https://mcp.curless.ai/doc/sdks/mcp-pay/","repository":{"type":"git","url":"git+https://gitlab.com/curless-group1/agentbank.git","directory":"packages/sdks/mcp-pay"},"author":{"name":"robin"},"scripts":{"build":"tsc","typecheck":"tsc --noEmit","test":"vitest run","clean":"rm -rf dist"},"_id":"@curless/agentbank-mcp-pay@0.6.8","bugs":{"url":"https://gitlab.com/curless-group1/agentbank/issues"},"_integrity":"sha512-zdZKjwiyxgbiF9yTmXXbUHxvJ464X0GzdO8ApvD9lYKxpNdmCIN+Ff146Jn/zsgXjhdsRcpjST+gIp2g4ppA+w==","_resolved":"/private/var/folders/6_/jg5_2xjd5bb51q9ffct_qlk00000gn/T/4760fa76f8fce384f195856821ea4136/curless-agentbank-mcp-pay-0.6.8.tgz","_from":"file:curless-agentbank-mcp-pay-0.6.8.tgz","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-zdZKjwiyxgbiF9yTmXXbUHxvJ464X0GzdO8ApvD9lYKxpNdmCIN+Ff146Jn/zsgXjhdsRcpjST+gIp2g4ppA+w==","shasum":"3d843d72da3ad5fd36e8f66895fb978e8621a301","tarball":"https://registry.npmjs.org/@curless/agentbank-mcp-pay/-/agentbank-mcp-pay-0.6.8.tgz","fileCount":22,"unpackedSize":49161,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDau4sXdufmhASHCoLKOyc6LpmHxaCNiwJ5pQVBNQ6LDwIgJOy1Qwk5Kq4wb+zi4DkWQsXaouHJfWKfTwk/vpUwc2Q="}]},"_npmUser":{"name":"robin_curless","email":"robin@curless.ai"},"directories":{},"maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agentbank-mcp-pay_0.6.8_1788507293863_0.38664486743267323"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-03T10:26:41.639Z","modified":"2026-09-04T07:34:54.199Z","0.1.0":"2026-06-03T10:26:41.945Z","0.2.0":"2026-06-03T12:06:26.564Z","0.3.0":"2026-06-04T10:58:05.160Z","0.4.0":"2026-06-04T13:15:01.503Z","0.5.0":"2026-06-05T13:35:43.716Z","0.6.0":"2026-06-08T08:26:12.315Z","0.6.2":"2026-06-10T06:18:11.726Z","0.6.3":"2026-06-11T01:49:51.921Z","0.6.4":"2026-06-11T16:42:51.438Z","0.6.5":"2026-06-16T18:46:26.309Z","0.6.6":"2026-07-17T04:07:11.047Z","0.6.7":"2026-08-24T10:33:41.772Z","0.6.8":"2026-09-04T07:34:53.996Z"},"bugs":{"url":"https://gitlab.com/curless-group1/agentbank/issues"},"author":{"name":"robin"},"license":"MIT","homepage":"https://mcp.curless.ai/doc/sdks/mcp-pay/","keywords":["agentbank","curless","agent","mcp","paywall","x402","mpp","monetize"],"repository":{"type":"git","url":"git+https://gitlab.com/curless-group1/agentbank.git","directory":"packages/sdks/mcp-pay"},"description":"Paywall an MCP tool / API so AI agents pay per call. withPaywall(): unpaid calls return a payment gate, the agent pays via agentbank (MPP/HTTP-402), the call runs once verified. withMeteredPaywall(): sub-cent usage accrues against a meter that settles one","maintainers":[{"name":"sparkyu","email":"spark@curless.ai"},{"name":"robin_curless","email":"robin@curless.ai"}],"readme":"# @curless/agentbank-mcp-pay\n\nPaywall an MCP tool (or any API) so **AI agents pay per call**. Wrap a tool\nhandler with `withPaywall()`: an unpaid call returns a payment **gate**, the\nagent pays via agentbank's MPP HTTP-402 endpoint, and the call runs once the\npayment is verified — single-use. Settlement happens on agentbank's\ndouble-entry ledger + rails (card / stablecoin / Curless); this package only\ngates the tool on a verified, not-yet-used payment.\n\nBecause MCP (especially stdio) has no HTTP layer to return a `402` on, the gate\nis a normal tool result carrying the terms in `structuredContent`\n(the SolvaPay / ATXP pattern).\n\n## Seller side\n\n```ts\nimport { withPaywall, createHttpBackend } from '@curless/agentbank-mcp-pay';\n\nconst backend = createHttpBackend({\n  baseUrl: 'https://api.agentbank…',\n  apiKey: process.env.AGENTBANK_KEY!, // agent:execute; verifies via merchant-scoped /verify\n});\n\nserver.tool(\n  'deep_search',\n  schema,\n  withPaywall(deepSearch, { backend, merchantId: 'curless_mch_…', price: 200, currency: 'USD', sku: 'deep_search' }),\n);\n// unpaid call → { structuredContent: { payment_required: { amount: 200, … } } }\n// paid retry  → runs deepSearch, returns its result + a receipt\n```\n\n`price` is in minor units (cents / token base units).\n\n**One-time-use store (production red line).** The single-use claim that stops a\npaid gate being replayed must be server-authoritative across instances. In\nproduction `withPaywall` **throws** if you don't pass a `consumed` store —\nthe in-process default is single-instance only and would let two replicas each\nhonor the same payment. Pass `httpConsumedStore` (the server-authoritative\n`POST /mpp/:merchantId/redeem` claim — what the scaffolded templates wire up by\ndefault), or a Redis `SET NX` / unique-DB-insert backed store:\n\n```ts\nimport { withPaywall, createHttpBackend, httpConsumedStore } from '@curless/agentbank-mcp-pay';\n\nconst consumed = httpConsumedStore({ baseUrl, apiKey, merchantId });\nserver.tool('deep_search', schema, withPaywall(deepSearch, { backend, consumed, merchantId, price: 200, currency: 'USD', sku: 'deep_search' }));\n```\n\n## Sub-cent pricing — `withMeteredPaywall()`\n\nA per-call payment can't be a fraction of a minor unit, so `withPaywall` can't\nprice below one cent. For micro-priced tools (e.g. **$0.0002 / call**), meter\nusage instead: each call **accrues** against a meter (priced in a high-precision\nasset like USDC, 6 dp) and **one aggregate PaymentIntent settles** when the\nbalance crosses a threshold. Post-paid: the call runs on the authenticated\nagentbank key's credit, so use it where the caller is trusted (your own metered\nAPI) — the aggregate settles through the agent's rail.\n\n```ts\nimport { withMeteredPaywall, createHttpBackend } from '@curless/agentbank-mcp-pay';\n\nconst backend = createHttpBackend({ baseUrl: 'https://api.agentbank…', apiKey: process.env.AGENTBANK_KEY! });\n\n// Open a meter once per agent/customer (POST /v1/meters):\nconst { meterId } = await backend.openMeter({\n  merchantId: 'curless_mch_…',\n  currency: 'USDC',        // settle the aggregate in a 6-dp asset\n  thresholdMinor: 1_000_000, // flush at $1.00 (1e6 USDC base units)\n});\n\nserver.tool('embed', schema, withMeteredPaywall(embed, {\n  backend,\n  meterId,\n  unitPriceMinor: 200,     // $0.0002 / call, exact — never rounded\n  idempotencyKey: (args) => String(args.requestId), // retried call won't double-meter\n}));\n// each call → runs + { structuredContent: { metered: { accruedMinor, settledPaymentIntentId } } }\n```\n\nOnly successful (non-error) calls meter; a metering transport error is reported\nin the `metered` block, not masked over the handler's result. Flush an open tab\nearly with `backend.flushMeter(meterId)`.\n\n**Post-paid vs prepaid.** The above is *post-paid* (credit) — fine for your own /\ntrusted metered APIs. For **untrusted agents**, open a `prepaid` meter (backed by\nan `@agentbank/pay` budget hold) and pass `prepaid: true`: usage is reserved\n*before* the call runs and **rejected past the funded budget**, so the agent can\nnever consume beyond what it funded. An exhausted budget returns a top-up gate\n(`structuredContent.payment_required.status === 'insufficient_budget'`) and the\nhandler doesn't run; a metering error fails closed (also gates). Settlement is a\nsingle capture at close (agent budget → merchant).\n\n```ts\nconst { meterId } = await backend.openMeter({ merchantId, currency: 'USDC', thresholdMinor: 0,\n  // open prepaid via the API: POST /v1/meters { prepaid: { agentId, budgetMinor } }\n});\nserver.tool('embed', schema, withMeteredPaywall(embed, { backend, meterId, unitPriceMinor: 200, prepaid: true }));\n```\n\n## Agent side\n\n```ts\nimport { payMcpGate } from '@curless/agentbank-mcp-pay/agent';\n\nconst r1 = await callTool('deep_search', { q: '…' });\nconst gate = r1.structuredContent.payment_required;\nconst { paymentIntentId } = await payMcpGate(gate, {\n  baseUrl: 'https://api.agentbank…',\n  token: agentAccessToken, // agent:execute\n  source: 'did:agent:buyer-1',\n});\nconst r2 = await callTool('deep_search', { q: '…', _agentbankPayment: { paymentIntentId } });\n```\n\nMIT\n","readmeFilename":"README.md"}