{"_id":"@grantex/mcp-auth","_rev":"9-92087d3edcf751e835c73ce01440b068","name":"@grantex/mcp-auth","dist-tags":{"latest":"4.1.0"},"versions":{"0.1.0":{"name":"@grantex/mcp-auth","version":"0.1.0","keywords":["grantex","mcp","oauth","pkce","authorization-server"],"license":"Apache-2.0","_id":"@grantex/mcp-auth@0.1.0","maintainers":[{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"}],"homepage":"https://github.com/mishrasanjeev/grantex#readme","bugs":{"url":"https://github.com/mishrasanjeev/grantex/issues"},"dist":{"shasum":"8ee63d719c16c38a67e0a1b8ccc1fb033f4d2229","tarball":"https://registry.npmjs.org/@grantex/mcp-auth/-/mcp-auth-0.1.0.tgz","fileCount":41,"integrity":"sha512-LK4PdZBbhqb3gTmfbresR9u/vmMBn74b5b+Pj7+DeFz8CPtsjebJVfdPPXKvQr06kwoNwq4quGhzuOr/M/Qjhg==","signatures":[{"sig":"MEUCIQCqyBSLP0cORcCJzc7qmKqctwC+cS2cdK11u8T5rcyWCwIgaXYxnsiA0637a+decuYTncb2ma37d3e4jCRhhSIly/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35776},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c82c493d52f7bcdbe31a904d25bb22523e14191b","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"},"repository":{"url":"git+https://github.com/mishrasanjeev/grantex.git","type":"git"},"_npmVersion":"10.9.2","description":"OAuth 2.1 + PKCE authorization server for MCP servers, powered by Grantex","directories":{},"_nodeVersion":"22.14.0","dependencies":{"fastify":"^5.2.1","@grantex/sdk":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.3.1","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-auth_0.1.0_1772379031432_0.3531803702647842","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@grantex/mcp-auth","version":"0.1.1","keywords":["grantex","mcp","oauth","pkce","authorization-server"],"license":"Apache-2.0","_id":"@grantex/mcp-auth@0.1.1","maintainers":[{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"}],"homepage":"https://grantex.dev/for/mcp","bugs":{"url":"https://github.com/mishrasanjeev/grantex/issues"},"dist":{"shasum":"209fe56d682324bb0f663d850f496322eeff13cb","tarball":"https://registry.npmjs.org/@grantex/mcp-auth/-/mcp-auth-0.1.1.tgz","fileCount":41,"integrity":"sha512-IpxKcV03fPe2lBH4vlKjvq8qHvXmnAY5kPJ74cpxyrOLaksoV9SedXsbr+TfwTEV+giMS8zwEbQE2XFfw3BABQ==","signatures":[{"sig":"MEUCICs3mSvrLiNwcoWmPaAb3GLYZqZQbuLxDpDmMcTJW/5CAiEA59y6JUm5wYmNGS1DE2h4dzLaIFsfDHyzkHNdnTlHhBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36608},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b7c76534ccc54447a2ef16c297ae79a16cf74c7b","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"},"overrides":{"esbuild":">=0.25.0"},"repository":{"url":"git+https://github.com/mishrasanjeev/grantex.git","type":"git"},"_npmVersion":"10.9.2","description":"OAuth 2.1 + PKCE authorization server for MCP servers, powered by Grantex","directories":{},"_nodeVersion":"22.14.0","dependencies":{"fastify":"^5.2.1","@grantex/sdk":"^0.1.8","@fastify/rate-limit":"^10.2.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-auth_0.1.1_1772637524154_0.09374857576741014","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@grantex/mcp-auth","version":"0.1.2","keywords":["grantex","mcp","oauth","pkce","authorization-server","model-context-protocol","ai-agents","oauth2.1","claude","cursor"],"license":"Apache-2.0","_id":"@grantex/mcp-auth@0.1.2","maintainers":[{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"}],"homepage":"https://grantex.dev/for/mcp","bugs":{"url":"https://github.com/mishrasanjeev/grantex/issues"},"dist":{"shasum":"7ed56b1bd84e25ed9d93df53ee3a661a34f4d38d","tarball":"https://registry.npmjs.org/@grantex/mcp-auth/-/mcp-auth-0.1.2.tgz","fileCount":41,"integrity":"sha512-54aZOuHqPr2Ctajmh4oL3CAWroTlSmml6DXCRlw2f6RceXDWapdekGgc2RPcuwRS4vz6ELR+UjypScWsi2Tckg==","signatures":[{"sig":"MEUCIQC6vhFAQwCJl+jMwsz94AmuykM3gN6OlVjEm5N7I438dwIgI6XVGNhyTQZGExOFky49ShEujVGH9+96kqOg7gOPsDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36704},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"76829b2f6111d18a490dce1766323a39552b15c7","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"},"overrides":{"esbuild":">=0.25.0"},"repository":{"url":"git+https://github.com/mishrasanjeev/grantex.git","type":"git"},"_npmVersion":"10.9.2","description":"OAuth 2.1 + PKCE authorization server for MCP servers, powered by Grantex","directories":{},"_nodeVersion":"22.14.0","dependencies":{"fastify":"^5.2.1","@grantex/sdk":"^0.1.8","@fastify/rate-limit":"^10.2.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-auth_0.1.2_1774288365729_0.72449870981518","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@grantex/mcp-auth","version":"2.0.0","keywords":["grantex","mcp","oauth","pkce","authorization-server","model-context-protocol","ai-agents","oauth2.1","claude","cursor"],"license":"Apache-2.0","_id":"@grantex/mcp-auth@2.0.0","maintainers":[{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"}],"homepage":"https://grantex.dev/for/mcp","bugs":{"url":"https://github.com/mishrasanjeev/grantex/issues"},"dist":{"shasum":"4b36c9c48831a5f69216834e859901529a3e3f6f","tarball":"https://registry.npmjs.org/@grantex/mcp-auth/-/mcp-auth-2.0.0.tgz","fileCount":58,"integrity":"sha512-HGAP7NpHaAit2RrelGsOWC22IRPxAFWe9OubewXgSZqz5AtwRSCGw6ViI8qvBave48VNdoPhc/Krfh0r/CK0Bw==","signatures":[{"sig":"MEUCIE7No58Q0OjLQaCNQAV9SgMVrWoBFAFHMijBlyMpw/YGAiEAzo1ntdj/uOwW4eaNLB3VuVLwbeP0k89SljV7AeTjvmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98303},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/middleware/hono.d.ts","import":"./dist/middleware/hono.js"},"./express":{"types":"./dist/middleware/express.d.ts","import":"./dist/middleware/express.js"}},"gitHead":"be175538c9f693f704d7070da8b8252c6d1afcfb","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"},"overrides":{"esbuild":">=0.25.0"},"repository":{"url":"git+https://github.com/mishrasanjeev/grantex.git","type":"git"},"_npmVersion":"10.9.2","description":"OAuth 2.1 + PKCE authorization server for MCP servers, powered by Grantex","directories":{},"_nodeVersion":"22.14.0","dependencies":{"jose":"^5.10.0","fastify":"^5.2.1","@grantex/sdk":"^0.1.8","@fastify/rate-limit":"^10.2.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-auth_2.0.0_1775226027938_0.4861779440288829","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@grantex/mcp-auth","version":"2.0.1","keywords":["grantex","mcp","oauth","pkce","authorization-server","model-context-protocol","ai-agents","oauth2.1","claude","cursor"],"license":"Apache-2.0","_id":"@grantex/mcp-auth@2.0.1","maintainers":[{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"}],"homepage":"https://grantex.dev/for/mcp","bugs":{"url":"https://github.com/mishrasanjeev/grantex/issues"},"dist":{"shasum":"22de10a882ba75ecc104b3d74e2ba313c78edc71","tarball":"https://registry.npmjs.org/@grantex/mcp-auth/-/mcp-auth-2.0.1.tgz","fileCount":58,"integrity":"sha512-hcwquHIZ1RlZJF1TnqMX6AD16nuaPCJsVi4Fc0oTYrGfTRGeSp0NjNYK4glL2+Eh2a0HrTDIJWokGBQe9kbqoQ==","signatures":[{"sig":"MEQCICQ9g7QR00XyQjBfoQxM8PQ7oTYyuIm2rG5yfmhPHZ8WAiBnssF6Ei4xNd1k5/WBg8QtixdZ8a/ccf+32tchfyV2yA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98304},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/middleware/hono.d.ts","import":"./dist/middleware/hono.js"},"./express":{"types":"./dist/middleware/express.d.ts","import":"./dist/middleware/express.js"}},"gitHead":"785ec2017c83bc37b73217df60a26d5ccc99deab","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"},"overrides":{"esbuild":">=0.25.0"},"repository":{"url":"git+https://github.com/mishrasanjeev/grantex.git","type":"git"},"_npmVersion":"10.9.2","description":"OAuth 2.1 + PKCE authorization server for MCP servers, powered by Grantex","directories":{},"_nodeVersion":"22.14.0","dependencies":{"jose":"^5.10.0","fastify":"^5.2.1","@grantex/sdk":">=0.1.8","@fastify/rate-limit":"^10.2.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-auth_2.0.1_1775376574539_0.9277059062561201","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@grantex/mcp-auth","version":"2.0.2","keywords":["grantex","mcp","oauth","pkce","authorization-server","model-context-protocol","ai-agents","oauth2.1","claude","cursor"],"license":"Apache-2.0","_id":"@grantex/mcp-auth@2.0.2","maintainers":[{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"}],"homepage":"https://grantex.dev/for/mcp","bugs":{"url":"https://github.com/mishrasanjeev/grantex/issues"},"dist":{"shasum":"33524cd0efad865148f90baf77239d522f5644aa","tarball":"https://registry.npmjs.org/@grantex/mcp-auth/-/mcp-auth-2.0.2.tgz","fileCount":58,"integrity":"sha512-Xc/tUIoD+H3TzH/HsubJE/Lz1PZ/CI0Dr5RJBSURYbjh3cMK17dRoiV/UCgKlcVBKxV0e5QdimFW8m8939iTsQ==","signatures":[{"sig":"MEQCIAjT+KWl+LoiRD8bzHvhvXOy+JAXbwJXJ5uNAe9PUf+aAiB70t6gdwZtzPOrp00FddNfTbP2csK2E/JaznpShRLEbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98301},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/middleware/hono.d.ts","import":"./dist/middleware/hono.js"},"./express":{"types":"./dist/middleware/express.d.ts","import":"./dist/middleware/express.js"}},"gitHead":"a99bb501d0817f2c56e1f5451226040eca5e6c97","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"},"overrides":{"esbuild":">=0.25.0"},"repository":{"url":"git+https://github.com/mishrasanjeev/grantex.git","type":"git"},"_npmVersion":"11.12.1","description":"OAuth 2.1 + PKCE authorization server for MCP servers, powered by Grantex","directories":{},"_nodeVersion":"24.15.0","dependencies":{"jose":"^6.2.3","fastify":"^5.2.1","@grantex/sdk":">=0.1.8","@fastify/rate-limit":"^11.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-auth_2.0.2_1782397717202_0.3804656513450124","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@grantex/mcp-auth","version":"3.0.0","keywords":["grantex","mcp","oauth","pkce","authorization-server","model-context-protocol","ai-agents","oauth2.1","claude","cursor"],"author":{"name":"Sanjeev Kumar","email":"sanjeev@orchestrum.in"},"license":"Apache-2.0","_id":"@grantex/mcp-auth@3.0.0","maintainers":[{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"}],"homepage":"https://grantex.dev/for/mcp","bugs":{"url":"https://github.com/mishrasanjeev/grantex/issues"},"dist":{"shasum":"36e61bcc433976c6be382cfbf644b1942039d72c","tarball":"https://registry.npmjs.org/@grantex/mcp-auth/-/mcp-auth-3.0.0.tgz","fileCount":157,"integrity":"sha512-e5Rtoubl1XxPb43+mykNDA15FO6mk7AgR29XzRpWF71DrhN42KUdkU/AowHl+QZvVhIbT+nokIi1srASGR0A2w==","signatures":[{"sig":"MEUCIQCO9x2yDlPQ1MAN0WphPoAf41apVLMm6hjewWLkzNXBMgIgDXM9idYLd2fVMF9TzUrKjkYJFwADMiYpTEjDre5PU4A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHsSWv29TSNk4xYAj/S7ke+laJToN5kssfM4ByU1+PpXAiEAl5OoEFighrByYoLKV/OZ4BL1VVATK1anGoMgteYXvgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":503123},"type":"module","_from":"file:C:/tmp/grantex-enforcement-artifacts-20260928/npm/grantex-mcp-auth-3.0.0.tgz","engines":{"node":">=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/middleware/hono.d.ts","import":"./dist/middleware/hono.js"},"./redis":{"types":"./dist/redis.d.ts","import":"./dist/redis.js"},"./express":{"types":"./dist/middleware/express.d.ts","import":"./dist/middleware/express.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./postgres":{"types":"./dist/postgres.d.ts","import":"./dist/postgres.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","test:e2e":"vitest run -c vitest.e2e.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:integration":"npm run build && vitest run -c vitest.integration.config.ts"},"_npmUser":{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"},"_resolved":"C:\\tmp\\grantex-enforcement-artifacts-20260928\\npm\\grantex-mcp-auth-3.0.0.tgz","copyright":"Copyright 2026 Orchestrum Technologies LLP. Grantex inventor and owner: Sanjeev Kumar.","overrides":{"esbuild":">=0.25.0"},"_integrity":"sha512-e5Rtoubl1XxPb43+mykNDA15FO6mk7AgR29XzRpWF71DrhN42KUdkU/AowHl+QZvVhIbT+nokIi1srASGR0A2w==","repository":{"url":"git+https://github.com/mishrasanjeev/grantex.git","type":"git"},"_npmVersion":"11.12.1","description":"OAuth 2.1 + PKCE authorization server for MCP servers, powered by Grantex","directories":{},"_nodeVersion":"24.15.0","dependencies":{"jose":"^6.2.3","fastify":"^5.2.1","@grantex/sdk":">=0.8.0 <1","@fastify/rate-limit":"^11.0.0"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","vitest":"^5.0.0","express":"^5.2.1","ioredis":"^6.0.0","postgres":"^3.4.9","@types/pg":"^8.23.1","playwright":"^1.63.0","selfsigned":"^5.5.0","typescript":"^7.0.2","@types/node":"^26.0.0","@grantex/sdk":"file:../sdk-ts","@types/express":"^5.0.6","@axe-core/playwright":"^4.13.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-auth_3.0.0_1790597753787_0.5466579258454036","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@grantex/mcp-auth","version":"4.0.0","keywords":["grantex","mcp","oauth","pkce","authorization-server","model-context-protocol","ai-agents","oauth2.1","claude","cursor"],"author":{"name":"Sanjeev Kumar","email":"sanjeev@orchestrum.in"},"license":"Apache-2.0","_id":"@grantex/mcp-auth@4.0.0","maintainers":[{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"}],"homepage":"https://grantex.dev/for/mcp","bugs":{"url":"https://github.com/mishrasanjeev/grantex/issues"},"dist":{"shasum":"7a1472371ff83268afda276c9b99c6e2e655baef","tarball":"https://registry.npmjs.org/@grantex/mcp-auth/-/mcp-auth-4.0.0.tgz","fileCount":166,"integrity":"sha512-BZyr58p1VDmZyResYvyK3D8NL93YYb88hA9AHUhhNK69sXz3C3lWQD+uBeZpf9VFSoO3jHCR+RXnK1OnDF40eQ==","signatures":[{"sig":"MEUCIQCPqgCYzIVwPzhl3bs/RNHx05YdIaDex8EI/yk+M7ZJUgIgeL/TvCgngmBUHbIaYx75M7byDEvBLb8aLLeyozWB0Bs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHYJnoTl3u6Vo0B3viaNiyEbxJr0z9ZkeF77xjtkz8dRAiEAywgk5Del2GWI5478fHmbOzjgoK0b4XExJUczj2g0c4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":507556},"type":"module","_from":"file:C:/tmp/grantex-sdk-authority-results-20260928/grantex-mcp-auth-4.0.0.tgz","engines":{"node":">=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/middleware/hono.d.ts","import":"./dist/middleware/hono.js"},"./redis":{"types":"./dist/redis.d.ts","import":"./dist/redis.js"},"./express":{"types":"./dist/middleware/express.d.ts","import":"./dist/middleware/express.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./postgres":{"types":"./dist/postgres.d.ts","import":"./dist/postgres.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","test:e2e":"vitest run -c vitest.e2e.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:integration":"npm run build && vitest run -c vitest.integration.config.ts"},"_npmUser":{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"},"_resolved":"C:\\tmp\\grantex-sdk-authority-results-20260928\\grantex-mcp-auth-4.0.0.tgz","copyright":"Copyright 2026 Orchestrum Technologies LLP. Grantex inventor and owner: Sanjeev Kumar.","overrides":{"esbuild":">=0.25.0"},"_integrity":"sha512-BZyr58p1VDmZyResYvyK3D8NL93YYb88hA9AHUhhNK69sXz3C3lWQD+uBeZpf9VFSoO3jHCR+RXnK1OnDF40eQ==","repository":{"url":"git+https://github.com/mishrasanjeev/grantex.git","type":"git"},"_npmVersion":"11.12.1","description":"OAuth 2.1 + PKCE authorization server for MCP servers, powered by Grantex","directories":{},"_nodeVersion":"24.15.0","dependencies":{"jose":"^6.2.3","fastify":"^5.2.1","@grantex/sdk":">=0.8.1 <1","@fastify/rate-limit":"^11.0.0"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","vitest":"^5.0.0","express":"^5.2.1","ioredis":"^6.0.0","postgres":"^3.4.9","@types/pg":"^8.23.1","playwright":"^1.63.0","selfsigned":"^5.5.0","typescript":"^7.0.2","@types/node":"^26.0.0","@grantex/sdk":"file:../sdk-ts","@types/express":"^5.0.6","@axe-core/playwright":"^4.13.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-auth_4.0.0_1790642367821_0.11695666154615925","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"_id":"@grantex/mcp-auth@4.1.0","bugs":{"url":"https://github.com/mishrasanjeev/grantex/issues"},"dist":{"shasum":"47cb4c45ffafb5c591e676fd0bf1246498348b37","tarball":"https://registry.npmjs.org/@grantex/mcp-auth/-/mcp-auth-4.1.0.tgz","fileCount":166,"integrity":"sha512-NYaJJAxrtlY+tfXLmQwnK1dTQmKq8/Eb/QibEmdIYUZTobOw1vPqJJZakPQE1MlcMF0jvKGL2kaHRhqkz1qXoQ==","signatures":[{"sig":"MEUCIAPOHCYFBqEFF2nD7JqyHIhse/nGE5FEM7A0qDmVVhBeAiEAnJ0VBNKELLHCHVmsGiL5JV1QxhfSMFSJIDpQcgkmGHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGCzraWrDZSAiH8kMFHU6M8pmfxSEUJ+XFmvnVgc4FbdAiEAz9Kc8ZC0sTT4sFGnYtYvQds4lBbMAR3oXI0ZEtDCiJc="}],"unpackedSize":508916},"name":"@grantex/mcp-auth","type":"module","_from":"file:C:/tmp/grantex-ci-artifacts-37200358108/npm/grantex-mcp-auth-4.1.0.tgz","author":{"name":"Sanjeev Kumar","email":"sanjeev@orchestrum.in"},"engines":{"node":">=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/middleware/hono.d.ts","import":"./dist/middleware/hono.js"},"./redis":{"types":"./dist/redis.d.ts","import":"./dist/redis.js"},"./express":{"types":"./dist/middleware/express.d.ts","import":"./dist/middleware/express.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./postgres":{"types":"./dist/postgres.d.ts","import":"./dist/postgres.js"}},"license":"Apache-2.0","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","test:e2e":"vitest run -c vitest.e2e.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:integration":"npm run build && vitest run -c vitest.integration.config.ts"},"version":"4.1.0","_npmUser":{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"},"homepage":"https://grantex.dev/for/mcp","keywords":["grantex","mcp","oauth","pkce","authorization-server","model-context-protocol","ai-agents","oauth2.1","claude","cursor"],"_resolved":"C:\\tmp\\grantex-ci-artifacts-37200358108\\npm\\grantex-mcp-auth-4.1.0.tgz","copyright":"Copyright 2026 Orchestrum Technologies LLP. Grantex inventor and owner: Sanjeev Kumar.","overrides":{"esbuild":">=0.25.0"},"_integrity":"sha512-NYaJJAxrtlY+tfXLmQwnK1dTQmKq8/Eb/QibEmdIYUZTobOw1vPqJJZakPQE1MlcMF0jvKGL2kaHRhqkz1qXoQ==","repository":{"url":"git+https://github.com/mishrasanjeev/grantex.git","type":"git"},"_npmVersion":"11.12.1","description":"OAuth 2.1 + PKCE authorization server for MCP servers, powered by Grantex","directories":{},"maintainers":[{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"}],"_nodeVersion":"24.15.0","dependencies":{"jose":"^6.2.3","fastify":"^5.2.1","@grantex/sdk":">=0.8.1 <1","@fastify/rate-limit":"^11.0.0"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","vitest":"^5.0.0","express":"^5.2.1","ioredis":"^6.0.0","postgres":"^3.4.9","@types/pg":"^8.23.1","playwright":"^1.63.0","selfsigned":"^5.5.0","typescript":"^7.0.2","@types/node":"^26.0.0","@grantex/sdk":"file:../sdk-ts","@types/express":"^5.0.6","@axe-core/playwright":"^4.13.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-auth_4.1.0_1791115945478_0.5924043161943326"}}},"time":{"created":"2026-03-01T15:30:31.344Z","modified":"2026-10-04T12:12:25.812Z","0.1.0":"2026-03-01T15:30:31.580Z","0.1.1":"2026-03-04T15:18:44.345Z","0.1.2":"2026-03-23T17:52:45.869Z","2.0.0":"2026-04-03T14:20:28.095Z","2.0.1":"2026-04-05T08:09:34.685Z","2.0.2":"2026-06-25T14:28:37.324Z","3.0.0":"2026-09-28T12:15:54.040Z","4.0.0":"2026-09-29T00:39:27.955Z","4.1.0":"2026-10-04T12:12:25.606Z"},"bugs":{"url":"https://github.com/mishrasanjeev/grantex/issues"},"author":{"name":"Sanjeev Kumar","email":"sanjeev@orchestrum.in"},"license":"Apache-2.0","homepage":"https://grantex.dev/for/mcp","keywords":["grantex","mcp","oauth","pkce","authorization-server","model-context-protocol","ai-agents","oauth2.1","claude","cursor"],"repository":{"url":"git+https://github.com/mishrasanjeev/grantex.git","type":"git"},"description":"OAuth 2.1 + PKCE authorization server for MCP servers, powered by Grantex","maintainers":[{"name":"mishrasanjeev","email":"mishra.sanjeev@gmail.com"}],"readme":"# @grantex/mcp-auth\n\nOAuth authorization and human-confirmed delegation for MCP resources.\n\nVersion 4.1.0 recognizes manifest `risk_tier: high` as requiring a decision\ngrant on every call. Check [Release Status](https://docs.grantex.dev/release-status)\nfor the version currently available on npm.\n\n**Version 4.0.0 is a breaking security upgrade.** Node.js 22.12+ and\n`@grantex/sdk` 0.8.1+ is required. Check\n[release status](https://docs.grantex.dev/release-status) for registry publication.\n\n```bash\n# Check registry availability before installation:\nnpm install @grantex/mcp-auth @grantex/sdk pg\n```\n\nRelease artifacts must be built and validated with the SDK 0.8.1 dependency\nbaseline; an earlier prepared MCP archive does not contain this dependency update. Human identity\nmust still come from the authenticated host principal resolver. See\n[execution authority boundaries](https://docs.grantex.dev/guides/sdk-execution-authority).\n\n## What a human confirms\n\nThe authorization page shows the requesting client, redirect destination,\nresource, purpose, tools, declared limits and duration, with Allow and Deny.\nIt does not call Grantex before approval. Approval is single-use and bound to\nthe browser, CSRF token and authenticated host principal. The same principal\nmust still be authenticated at approval and the upstream callback.\n\nLive Grantex consent additionally requires the principal's passkey. The MCP\npage is not a substitute for that assertion and never auto-enrolls a passkey.\nSee [passkey enrollment](https://docs.grantex.dev/features/fido-webauthn).\n\nDelegation consent permits actions within the grant; it is not blanket\napproval for every sensitive business decision. Mark sensitive tools\n`requires_decision` and configure `grantexDecisionVerifier` to consume the\nhuman's action-bound decision before execution. Four-eyes rules require the\nconfigured independent approvers. Without a verifier, decision-required\ntools fail closed.\n\n## Authenticated human handoff\n\nYour host application owns login and session verification. Supply\n`resolvePrincipal(request)` from that verified session, returning a stable,\ntenant-scoped external principal ID. Never trust `principalId` in request\nparameters, unsigned cookies, client metadata or the OAuth client ID.\n\n```typescript\nimport { Grantex } from '@grantex/sdk';\nimport { createMcpAuthServer } from '@grantex/mcp-auth';\nimport type { PrincipalResolver, McpAuthStorage } from '@grantex/mcp-auth';\n\nexport async function startAuthorizationServer(options: {\n  storage: McpAuthStorage;\n  resolvePrincipal: PrincipalResolver; // Your verified host-session resolver.\n}) {\n  return createMcpAuthServer({\n    grantex: new Grantex({ apiKey: process.env['GRANTEX_API_KEY']! }),\n    agentId: process.env['GRANTEX_AGENT_ID']!,\n    issuer: 'https://auth.example.com',\n    resource: 'https://mcp.example.com/mcp',\n    storage: options.storage,\n    resolvePrincipal: options.resolvePrincipal,\n    scopes: ['tool:payments:read', 'tool:payments:write'],\n    grant: { purpose: 'x-acme.payment-review', duration: '30m' },\n  });\n}\n```\n\nWithout a host session, `/authorize` returns `401 login_required`. Authenticate\nthe human first and resume the validated authorization request. The package\ndoes not invent a login provider or redirect to untrusted return URLs.\nConfigure secure, HTTP-only session cookies with same-site settings appropriate\nfor the cross-origin Grantex callback. Resolver failures return 503; logout or\na changed principal returns 403 at approval/callback and requires a new request.\n\nGrantex's returned internal principal ID is recorded separately from the\nhost's external ID. Token exchange and refresh preserve the internal subject,\nso swapping an upstream code cannot change the human.\n\n## Durable state\n\nUse `PostgresStorage` with `runMigrations` from `@grantex/mcp-auth/postgres`,\nor `RedisStorage` from `@grantex/mcp-auth/redis`. Install the driver separately.\nAll replicas share clients, consent, pending requests, codes, refresh bindings\nand local revocation. Atomic single-use consumption and principal bindings\nsurvive restarts. `InMemoryStorage` from `@grantex/mcp-auth/testing` is\nevaluation-only.\n\n## Enforce before executing tools\n\nUse `createMcpResourceGuard` or Express/Hono middleware on the actual execution\nroute, not just `tools/list`:\n\n```typescript\nimport { createMcpResourceGuard, grantexCurrentGrantVerifier,\n  toolPolicyFromManifests } from '@grantex/mcp-auth';\nimport type { Grantex } from '@grantex/sdk';\nimport type { DecisionVerifier, LoadedManifest, RevocationChecker }\n  from '@grantex/mcp-auth';\n\nexport function guardTools(options: {\n  grantex: Grantex;\n  revocations: RevocationChecker;\n  decisions: DecisionVerifier;\n  manifest: LoadedManifest;\n}) {\n  return createMcpResourceGuard({\n    issuer: 'https://grantex.dev',\n    audience: 'https://mcp.example.com/mcp',\n    revocations: options.revocations,\n    currentGrant: grantexCurrentGrantVerifier(options.grantex),\n    tools: toolPolicyFromManifests([options.manifest]),\n    decisions: options.decisions,\n  });\n}\n```\n\nSignature, issuer, audience, expiry and scopes are checked locally. Local\nrevocation and online Grantex authority are both checked before execution.\nIssuer-side verification runs on every protected request without a positive\ncache: inactive authority returns 401; an issuer outage returns 503. This\ndoes not undo completed actions or cancel a handler already in flight.\n\nDeclared caps are not automatic accounting. Apply SDK `enforce` and relevant\nservice-side atomic spend/call reservations before side effects. Enforce\npurpose, wallet policy and trusted action constraints at that boundary.\nMCP consent cannot promise data residency: this authorization endpoint does not\nbind a data region, and `grant.dataRegion` is rejected.\n\n## Migrate from 3.x or 2.x\n\n`/introspect` now requires confidential-client Basic authentication and checks\ncurrent issuer authority by default. An issuer failure reports inactive.\n`allowUnauthenticatedIntrospection: true` and `introspectionCurrentGrant: 'none'`\nare additional warned evaluation opt-outs, not production recommendations.\n\n- Supply `resolvePrincipal`. Version 3 used the OAuth client ID as the principal;\n  version 2.0.2 also lacked a rendered local consent page.\n- Supply `currentGrant` as well as `revocations` to resource middleware.\n- Drain pending requests, deploy all replicas together and reauthorize old\n  identity-unbound grants. Do not mix v3/v4 processes in one state namespace.\n  Secure v4 refuses pre-existing refresh bindings without a principal subject.\n- Existing v3 SQL migrations remain valid: bindings live in JSON records.\n  Retain registered clients; do not erase shared state.\n- Evaluation-only opt-outs are `allowLegacyClientPrincipal: true`,\n  `currentGrant: 'none'` and `revocations: 'none'`. They warn and weaken\n  enforcement. Sandbox auto-approval separately requires\n  `sandboxAutoApprove: true`; live passkey consent is not bypassed.\n\nRead the [deployment guide](https://docs.grantex.dev/mcp-auth),\n[enforcement migration](https://docs.grantex.dev/migration-enforcement) and\n[historical v2 guide](https://docs.grantex.dev/legacy/mcp-auth-server-2).\n\n## Validation and operational boundaries\n\nThe permanent suite covers approval/denial, identity changes, CSRF, replay,\nconcurrency, PKCE, callback/token subject binding, refresh rotation, issuer\nrevocation/outages, Postgres/Redis restarts and Chromium accessibility.\nRun `npm run typecheck`, `npm test`, `npm run test:integration` and\n`npm run test:e2e`. Integration needs database/Redis URLs; browser tests need\nPlaywright Chromium.\n\n`hooks.onTokenIssued` runs after successful exchange/refresh. Treat its token\nas secret; do not log it. Observability hook errors warn without changing\ndelivery. It is not an authorization policy hook. Rate limits remain per-process;\nconfigure gateway-wide protection, TLS, secure sessions and monitoring.\nIndependent certification of all MCP clients or physical authenticators is not\nclaimed; validate your actual hosts and clients before production traffic.\n\nApache-2.0. Copyright 2026 Orchestrum Technologies LLP.\n","readmeFilename":"README.md"}