{"_id":"@apitap/core","_rev":"66-2dd3882a5b7fdc7e2e83b4545f0f803d","name":"@apitap/core","dist-tags":{"latest":"2.2.2"},"versions":{"1.0.0":{"name":"@apitap/core","version":"1.0.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"9e7e45c12dea6bcf35419efdee754ac3e89b3d3c","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.0.tgz","fileCount":236,"integrity":"sha512-JEvFxKO9f7ckTnxd0gQ31hd8rCL8huKrb5+FNOsyYNmPpu8tB55SEM+Yz8Wxaiqv0+3Q0WD32VM2CKNnr9VWLg==","signatures":[{"sig":"MEQCIEP6GI6Xtx2K1ua3AMU/w5kLyyUjqiPu6feP9dOPBtOXAiAsgV778ClGwAgY21GQJbPllkcYs+mbxKUvr5aiRxK3GA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1014529},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"4c56266b17ca366cf19935af3f04f4e986dd59ce","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.0_1771283613843_0.5271120693832874","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@apitap/core","version":"1.0.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"f3066469f9bf79031dc6a9a9b6f4ef3366f7394f","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.1.tgz","fileCount":236,"integrity":"sha512-Zy9tYxvckyOu1RMt/X2f2vhsd8u/JdrbLhWT/QB+OnCENw0HJcaCCXJZ55BQpuBRmHeHD/4cegPpI4jYnvhaXA==","signatures":[{"sig":"MEYCIQCq2noKK82qfMiitO2mkbR5jdswKvT6Olp4UTYMZ014fwIhAPcb/cc8tUxdjMvNNqdYif9AgO/4PsE8HC5Yl1vx7Ua4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1014700},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"df02379e4882bb3ade4ed8c93a8468eebb197344","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.1_1771378918236_0.5905145740308868","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@apitap/core","version":"1.0.2","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.2","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"fa2ed1ae34f208c046d35679288f36228fc69dc0","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.2.tgz","fileCount":236,"integrity":"sha512-oSqAY2wLqM+g99y1iQ8BETUrTeCkvcpFm6pSyj15wcTJtVisEIeRHkzd2A4Qe91xzNySiHInUufkyYD3ULCJKw==","signatures":[{"sig":"MEYCIQDHrIzZJ5CeYK9cY98TJFsWeFZozKYs1eioRRNRhhm37QIhAJdx0DSsQNRO9VaGoG2H9KzKALF+d649YYvGA7zgo0Xl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1013715},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"63ad56eedb21759ef19e408857e6dc32e2b2e0c3","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.2_1771380165017_0.6391665496777965","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@apitap/core","version":"1.0.3","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.3","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"34df816936850e2759695645b283049f43c76740","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.3.tgz","fileCount":236,"integrity":"sha512-BqlALAEyoowzr5RG6CZCtx1sWwZ/MXAhbqsw5zIuUCXOq7ZILb1rAqksZ1JvImRFkwwTvPJysN5RqnuYfPuPTA==","signatures":[{"sig":"MEQCIHrvuH0Dbw0ZFry7/ZCSeHxT6Ab2p1uOcxD+Y1Nhe6q/AiB2m7xJ5eTaS2QLLoHPoUG2n0FxZIjWkJDnBE3UJRasXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1022095},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"61a38f77e4d7061269030303f9b4551f1f360d71","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.3_1771466497728_0.7515004956099951","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@apitap/core","version":"1.0.4","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.4","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"c91368b664ef104bc03c71ad809e36bb86daaa29","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.4.tgz","fileCount":236,"integrity":"sha512-poHF70Apk7mvgIgEfetl9n0ys0kjXGSA7gaN1AW5hrSQlsTtkUbKRcTEeB33YLA36TY1BljOIl+T1uo+HUuOng==","signatures":[{"sig":"MEQCIQDChPHxkhpwhd+n3qZFDE/OyWBGqthoBlTzUt2DYY8RQgIfNFKD/nhpa5fONzUvub56QNIGxqG7Eel2NLAXgRAi6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1017626},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"0674027dcea1d63c83b3bdedc3dd6ddb7541b563","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.4_1771734673965_0.37528113345363456","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@apitap/core","version":"1.0.5","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.5","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"6379dbbe958c0e82b40497406f9420d1323ac40d","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.5.tgz","fileCount":236,"integrity":"sha512-4zJPR+KWU0BrKFvptF9OdK8DzJ2tLg5gRY0s5VmMizObk1qEMkukXSRDZgM7EaZZ66AWyMt/MLp63XiOgIjMBw==","signatures":[{"sig":"MEQCIEaLQvbAVX+p1MwVn8iXXqGH5kvc4agUdS2QZ1HuLakyAiBwfhyuqYxjm20akxscLge8ADpbmTLA9k7eEBT8RtNmHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1018357},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"d5a5297d330b70bd977dcc9e4ce8a35e743e0ec2","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.5_1771742120936_0.260756118759812","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@apitap/core","version":"1.0.6","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.6","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"0db2984ec008af4d4a549fc5a2f33c6aefc66187","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.6.tgz","fileCount":236,"integrity":"sha512-2YHWNJCu2qtul4CcV8mTF5lyU8bSQwKOjjquMcATjpzX04zw36f6R69RPebpAqlLrsEyG3teQtJKFzZl2DY4Vg==","signatures":[{"sig":"MEQCIG9fwFGF6QIZvRVbr4+ZKAwdLH0fhvoXBsmSy9X5pn2TAiBJQH2cRJbq+T91zBejDFSQFrrhC0ZUmcNfswn80XQxYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1018357},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"68c05567d8587306cd47d59a070a8c24032a95f4","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.6_1771743057913_0.3299202697874202","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@apitap/core","version":"1.0.7","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.7","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"2462fe40ac84d996a21bfcc677930fb279f1a7d3","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.7.tgz","fileCount":236,"integrity":"sha512-+jzl+vPEXz9vlzOPrA1b8gO/NgK1vlIMzyRJf7njs3rFplNno2v7gW9g9KxZ8qXMK6PdDes2W+Ku/m/SnBxUZg==","signatures":[{"sig":"MEUCIAOQr19Z9cq8JUHNGIQrFnQK0vChNANM/zfyCa5JfG74AiEA1mA1RmrpL++q4t6Q5dateO0FVCjqTnto2k0yylsEnuw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1023625},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"316ca66cc8fef14a43df77fccff850fab5ca055a","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.7_1772225453054_0.6203556778024115","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@apitap/core","version":"1.0.8","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.8","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"be5d11e0e5d278e10265390722fe37d351f56086","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.8.tgz","fileCount":237,"integrity":"sha512-YCPX8TaP5+eMboEknwkZyHfn3yFrmqRmtMOiBpYGw2Fx2xqLajb+/3hXTXwo1s1kptpFctRQo7OGNcEtOKyRkg==","signatures":[{"sig":"MEUCIQC68/E8wdbe26D5mkDbgfzt3Dp9iMAvJjW5kDkNuAzLzQIge5NrtNumGHzX9Di9EpXRXEQIv/a5R0+ofTGj3NsR3N0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1028014},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"f587dde2c4135a42f422567290ec50ead49581df","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.8_1772235687295_0.9256319765215042","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@apitap/core","version":"1.0.9","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.9","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"99131da053348268ac4c3eee8c2fcc12e39d76c0","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.9.tgz","fileCount":237,"integrity":"sha512-CL7eHeTjVClsgXPT5vENPHcLKjvpcloWKe1Oygaks44uMvLl+40C1Fh8Blfiys2Qae0DQotm64AN/vv03j7dJA==","signatures":[{"sig":"MEYCIQCN9QK5ASCU27sOGfXSSzBm0bXQ1pzXPY6NHYs4Y5hOxQIhAPbtfAGz1hYJzObynbTViyk2+JHZsXCLEmJI8mgtgRk/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1028329},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"8d9e01ec30f22eda8be3645651f7e403c8f36e89","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.9_1772238647648_0.8725559576444937","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@apitap/core","version":"1.0.10","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.10","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"cebac4697de42eb97a6a26f253f3c4f4d34ccc66","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.10.tgz","fileCount":237,"integrity":"sha512-jTcR/FMDbP4l/Htvpbwh5lmGpxVHGZM3L33ggkJ/JJuyKvPa+Zv+pibMiavaD6VHlhkKzU6UZdk96FZvoJuL9Q==","signatures":[{"sig":"MEUCIQDddC6bdZSUoUX3Nblg8p33nrEOaHxUFtmCesEYr7e5xQIgasI4+1pP6bQktymyGR44gO/WdjKF73iFP7KRh8/Tsls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1028629},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"0e8703e08b7782ce61d0589a002515d14de3af21","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.10_1772241004299_0.08789919421027492","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@apitap/core","version":"1.0.11","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.11","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"77a35fc1d126e80080cd3fbc81833f08f569d12d","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.11.tgz","fileCount":237,"integrity":"sha512-nLCQULEbm1CHmye74dneRKzZx2UPuIunijWhDThuqu9ZEBvBQ3VLbd6VchlZSywGSg6RSY3hYnNZPhqVfo8vGg==","signatures":[{"sig":"MEYCIQCbjcv2J2Yi4aZ/E6ZTIaPrEe9vHUdu1NfS4aI/5m8KjwIhAJgpFrC38HRDTVw/h1CFvXPPruS8vI698k0vGXgdFaFp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1032097},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"43a95262205480336b45ef250e6f0300351731b3","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.11_1772247438604_0.01116932091386813","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@apitap/core","version":"1.0.12","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.12","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"39dd3b8e8e6c1d9aa6cd3e3f4d42bae1b893c8ae","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.12.tgz","fileCount":240,"integrity":"sha512-NlA4f6lrnG93Cot8oPlsswR7b540GVtRmPrXO0QC1ddvI3FVmKrMBVR38GaTBM25mec8+HuMAPPU9ZRqHjscaA==","signatures":[{"sig":"MEQCIEcyB8MMaH6XytWQvmNjeeWXFd1s04OWMG7i2E82WP/JAiBeVI2wn0NzFTr7YUsvrD1aN1wbBvgB1PfWczxGHxRwsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1050204},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"b8fb301ab15347fdd8a13393da63f55c7c163579","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.12_1772247520914_0.21581127532217015","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@apitap/core","version":"1.0.13","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.13","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"6f070dd77602f4fe585f6c24ef223ecbd9fea5bd","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.13.tgz","fileCount":240,"integrity":"sha512-bN/ZU8B8i4be/Siv8PZEEyRCQVari5rXv6Rva/ZXep+AJzCP4OKOX/rUvj3Z5qnk2YuskPalsgWisnZTHp3cvA==","signatures":[{"sig":"MEUCIQCt9VOrqE+3iefcH49EY/S2Gm9zzvFqUjiEAoXX9YEa1AIgdZjCpaZ0Ks6JSQXZTNFT9Zg0P5HJP/swJ58illZEODs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1053654},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"eb6b0696c660af12e8f96d185b499c01c57f5abd","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.13_1772329066425_0.2770629081713034","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@apitap/core","version":"1.0.14","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.14","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"d01106b83b2a6a72b5c7523b1c83960336b57da1","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.14.tgz","fileCount":240,"integrity":"sha512-wCDNWiGpYPskCe7KfVYM3UOZx5KWRd+eCZSSeyJvzL+3FImrZT3zloBWC7VFFiGJJVrbI0XrZDOxZvEE29VlNg==","signatures":[{"sig":"MEQCIHFhf7BL3MmFi+DvqJ29WAy7+40ogyfWZEJMRlWic75/AiBIqDg9Y90ExUCsR6s8JzKICwZD2bm3OMQJtlTQ3eGwrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1057195},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"bccba1025149bf9594bf0b141cf9834e15e447b9","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.14_1772331029955_0.8759303668448029","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@apitap/core","version":"1.0.15","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.15","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"428bce00e36da02be84fb7df4044c5ed51733376","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.15.tgz","fileCount":240,"integrity":"sha512-MVrMTUtsgWseokZHmUAZjglf5tTuvt5q2MNTEqMjTzBFYwp6yIaseFmG5RTX59oc6MAFe8bbFCZ2LNS6o7+Zvg==","signatures":[{"sig":"MEUCIF+DO+nHYPrXiGcdYS9TqEnEr26sRatIl6GJ3X+BiACbAiEArwxDM7UZNr12i5uTImpfD3wbY1hjRQHtViniK8n2Vnc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1055747},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"002b907a7a3425f0a57480280d5b9f369f91b03a","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.15_1772331972382_0.009266295162162264","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@apitap/core","version":"1.0.16","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.16","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"d653eda6ebbe6ce5b5ac122ac639e0fffed1f547","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.16.tgz","fileCount":240,"integrity":"sha512-kuo4NXzvhZS60Tar0MAXV2DDdpxYtQasDvSqJwMlGDLRgPyyGX6OQltp5xABphjBKWdXdvzNlhV6NkblwkCuPQ==","signatures":[{"sig":"MEUCIFQ77hI01fBcyoq9ob1chEHLQ107ohD7HmvFaHcPe9OKAiEAlTY5N8kI3qtnHMEVP0cfZNcSAU0Oc+Wr4bdy37ZyTLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1056222},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"a857067caee6d4174cf61415647e89ce5704a369","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.16_1772332669388_0.8295039079338293","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"@apitap/core","version":"1.0.17","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.17","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"f6ec624cad12f91509e347d4f77424b90dc19d82","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.17.tgz","fileCount":240,"integrity":"sha512-6Os6AdOupdfWiJk58mHcoly/XyPS+n7UlVZwwZ0yfgwYUDcmlQLgRZp49thwfGhpxSez3z8JdNpQ2U7AcAGcqQ==","signatures":[{"sig":"MEUCIQCrgqKCd/3Qvww6vAlgmKZorLC+s5inLDf1/+KNlM+shQIgIq1g3jfCG1Y/lQFSy/AksmMa0ZD5upIo+Tl0x/zEVrQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1057886},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"fc0264f451803f560b273cf87d4c54d14181f645","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.17_1772333335526_0.5583208823765182","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"@apitap/core","version":"1.0.18","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.18","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"558e0299176c1c03c8b25e5dbd8d8e763b2f2273","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.18.tgz","fileCount":248,"integrity":"sha512-eCjxjAlhOBeoWaMRYR5NcFHO2OMN1nSsjXffTAmK9FUcxDwtGGyOK4hZLXux/5RGo5lWVijX5lg3n3nD0nI1YQ==","signatures":[{"sig":"MEUCIQCFCxqMIiuBxPeykHQo3C+gCx87Sy14eE5t6mQ+7HmGcwIgcDGYSCeEa+Fi3tMz20Xx3KG2EXAbv82uk79nl1KcmD8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1086815},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"f041653e7e1f8f8047389ded38f2317d5087da9e","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.18_1772337845322_0.3460265155183835","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"@apitap/core","version":"1.0.19","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.19","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"5bc0adfedb163406f2ba44fbee26f6a5a6dfea0c","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.19.tgz","fileCount":248,"integrity":"sha512-4V9Lf/Syf4+VWQD1AZR0i6mnwfCae7sQjiEszrsWQwJEtReDQCXrdK04prIFbubuvRVddykH1tsLjTL9LdwAZQ==","signatures":[{"sig":"MEQCIE4FdWK2fIxPO+8XFPKsS/gdvETd5GHOrUfwURpYJ7pRAiBb31t6hjTbjvAhIh9++VryxYT9W1SSxeCyhvgeOVRHHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1088379},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"bea2ae3ac96e4be4ae03f839e3678085d29ae65e","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.19_1772339826323_0.1758313061316017","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"@apitap/core","version":"1.0.20","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.20","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"4383f596454f2dd34488372241ef95f5a285d5d0","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.20.tgz","fileCount":248,"integrity":"sha512-rrM0gRRZXVBLtrkOXd1+gJtYBCCvoPz1+/egWT9E49CIAksl6gbLF6mpL191VJU6a8PkGcPYgmMCxB7diVpwhQ==","signatures":[{"sig":"MEUCIHtiYKB47gbgItwGoZsD5lB0XvGIKacQekHRei8DM6qIAiEA1TCwlD+KuST7hIoj+sX+xINIIct/ILzs5z3c1n+PL7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1085148},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"beeabf5b52ef64d8040841ca8aac4c91e96429e4","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.20_1772344218174_0.038184034739748185","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"@apitap/core","version":"1.0.21","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.21","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"ccfa767bf373ffdb8fd7a18da3a143725d75e380","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.21.tgz","fileCount":248,"integrity":"sha512-s0Zt8ABT50jTrs6xE11RtGbXF7mxBFcjLT5vtaGv+MeSSv0S+/t8Wo7XqZWcH9DViqVLlu1AX16a9O6K4zXAJA==","signatures":[{"sig":"MEYCIQCitsty2OWY/Fi0UV8sFkKyfUTFFM3ZBgvtaLx5oQN9/wIhAJWMTPTjjq4D9g/zZXBksI0d42FlqTWun/HH88HHqc1H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1085344},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"a34515e7cc51348a61082a9386c09b5bc0005d8d","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.21_1772344740303_0.9985239358046927","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"@apitap/core","version":"1.0.22","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.0.22","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"2183bf379e7d95ca91c8023ca7815770c7659cb8","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.0.22.tgz","fileCount":248,"integrity":"sha512-MxIp7xhHrQ/B+kIBkrNyHwE+FdRiD2+4PywiQkzKGgpvJ74Xz5WWlE3kF9qR5x0KbDaXK7TvnnkuR56kfmsI+Q==","signatures":[{"sig":"MEUCICZHsk+sF/MyLTQ2JwCLdqb8Di6ex3x5KJq4mmDjoWVVAiEA0yjaHB0r3+myAxpxbp8PqEWog3QBh/WUai+ifdvLZdI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1085344},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"386c0d46fa69bef4220fd47cb16d6189d899c83d","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.22_1772345418305_0.500799239565662","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@apitap/core","version":"1.1.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.1.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"13b35bd0ad21ca579574b25c491f979140ca35f1","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.1.0.tgz","fileCount":256,"integrity":"sha512-unTAPxn+CMZGnvdC30j4fdKBoWsG0kXbs2jU5tbZhCaOfKNpNRb+8W/NVCfRCL0Xa22VNyX/ynUtLIVsVqUkZQ==","signatures":[{"sig":"MEUCIBbTzHad1oxOfA920E+LCSKA/gs360ocY/5F/DC83Ug3AiEA0toTVeQAdDJleo8cMYcBM13H1f+97ZXjZBFJWiiDHIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1118736},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"3473d8ac053178eae4b2a765822cb0029a01b01d","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.0_1772423537834_0.8486022889446947","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@apitap/core","version":"1.2.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.2.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"231bebbf5385f103f473644d05be5096299f3737","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.2.0.tgz","fileCount":260,"integrity":"sha512-hKC7ibbQas4L1OdFeTa4ibGvFmbkgE3TJDBE+NJuCi/QRMetvD+gEfsEgXurpPjHE6vpA7k5/Su7Cj6EqdmkeA==","signatures":[{"sig":"MEUCIQCaLBhaSCd3lqiSHY45BgwvqlB7hlPtekpnkhceRGSaLwIgLWrdUkzsahFc5LDLmA8xcSWJR0ZulYxFbUcjmZ8LW7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1151429},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"ffe593edeb62127c6887c26cb49afc5bd3493081","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.0_1772677517930_0.8779779242809509","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@apitap/core","version":"1.3.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.3.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"740bfc3e6c76d5d1067c2f1dccd4489454295da6","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.3.0.tgz","fileCount":260,"integrity":"sha512-qmL3deNd4SiiGfpQbqneL8rJQ71LINVK+auTTvuv1mOFpdWbdedUgmRMUZ3MrXmVZk3d8TqNAbUVECLXZ05JTw==","signatures":[{"sig":"MEUCIBJeJvtz9LHVng1kDQAnTXMub5uJTeN/TZ3E+3XJ9Ma1AiEAv72cjafHvenYpVe58uCt6eQ4puD60D+dkChDlH2spm0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1169538},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"0283188b4c7b684c9cbe33515d93500714d59d48","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"gh release create v$(node -p \"require('./package.json').version\") --title \"v$(node -p \\\"require('./package.json').version\\\")\" --generate-notes && echo '✅ GitHub release created'","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.3.0_1772681372105_0.44043954770394156","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@apitap/core","version":"1.3.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.3.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"a317404cf3e3ffeb1a78571d702857f3f6d7c345","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.3.1.tgz","fileCount":260,"integrity":"sha512-hPWkxwoLSRwP/rV0r5S8QJGLGxSRn3+d1A2iNn+iYPspF97qMklEFalPhj/BCyd1uS5trSe3AZV1BkMYEMAYTQ==","signatures":[{"sig":"MEUCIHDRu+Y29XMCwGrMYWDVTdyn+U8O7F5iypOWJa6/BrUyAiEAx5lTaWtn+JEHKTRm650fe+4MBwJ4bu8EtjxyHct8TcM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1171870},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"9801dc606147c8f65808dba08abddc88f83fa704","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.3.1_1772681879094_0.587157764246383","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@apitap/core","version":"1.4.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.4.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"f0ce3b4f6eac84d19cee825ed1fb89664d7b7be0","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.4.0.tgz","fileCount":261,"integrity":"sha512-XuKizMEgWQ9nus9Go9/NsPqLdVlVNB1vT/iHJeU1nW/sKxZLSmpBVuu8AlxOJGVkgvbhIA7+erUcFTFCDFSANw==","signatures":[{"sig":"MEUCIHy6KcDW7WNZmG4Ld0l/EyaBiboTlKSmaweN/xN2lUGMAiEAkArLfGeQIPnXTmgeTcAqT7CfVLCRRyCL+0sNlga/drc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1176143},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"07f36c59ffa235768fa2406d541b7ecaef95028d","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.0_1772691385426_0.07808581312229346","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@apitap/core","version":"1.4.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.4.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"3550ad4448265bf05267676124fd973c5ef526b0","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.4.1.tgz","fileCount":264,"integrity":"sha512-hOUWB7X+G6Lz04/4/pwHBb4Fk/UObuYxfUAFamGEzRxkivS9MYyfKJLSV6bY5rbZgDMAR3oUwTh2Eoo/NeeCrw==","signatures":[{"sig":"MEUCIQChEE4A/SU5QXKFfnthtIhrvf48/qwbOlHt6bYVkJKsGQIgeV0u3zTcOUQQj0DVnM6WBkQFNJTuIRVCwgHSKVEqaLo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1232966},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"6cbf8e053df2e30b69c9e3a585947f06a9fc1129","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.1_1772766430419_0.2603814921362717","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@apitap/core","version":"1.4.2","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.4.2","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"d02e6af0cf1fd4b1b6deadb2b1b5f65b12e646ee","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.4.2.tgz","fileCount":265,"integrity":"sha512-lA8jdWp1E7eXzY7M4iMEzK2g0auHNN3rICLumcG1qKc3xvR36fP7OrYzNhDbnHw1E6ROC/AHufRvHh3F94FHJg==","signatures":[{"sig":"MEQCIDI6qej6dzbjVH71fzeg0ANIPzjw1wengPsxhTmIRgfSAiBJCLXNHJmMZCCOldR4Qf9xvbWswe/PMHOJmFFcoXnSGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1240982},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"451c2703c7891d8450be886339fdc32ebceba321","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.2_1772916986580_0.9323025256463033","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@apitap/core","version":"1.4.3","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.4.3","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"6b70c2dc438d8edd00dce7bed6a17c36ed6702b3","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.4.3.tgz","fileCount":268,"integrity":"sha512-fhNJHB2e7XSDhiowvdNds2Sy+R4i+qapT9HgYiwf8z3Yj+xKbRZ4zhTIlP/irmz/egLfmbR5md35rRQ6EYoPIA==","signatures":[{"sig":"MEUCIQDb9GamuURTFIHQ7VbIrRoBGlblZa98g0DS8zAJucokwQIgTvjDcI7IrthmPrd4rMXgb7mWTURsaL31rsfxZgUl8n8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1263125},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"951d817c0e99137fa2c742b37d49571e572ef1de","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.3_1772948922637_0.1420342209992762","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@apitap/core","version":"1.5.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.5.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"f1e470138f737d169acb86cc050b098705b30e76","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.5.0.tgz","fileCount":268,"integrity":"sha512-rYuRkNYwFp43JNmxCiD2QhyEXPd40J2Z8PsVmkncNaEBcQjVzXss79brM9Qpd4Fjn/bLfu/NHtXUIivJbiuzhg==","signatures":[{"sig":"MEUCIQCkDo+1ETSSUu6d9oLTuM9B0YUnNlLJ2jbGcwmRNnww8AIgE6S/WzCgCa4Ul93TWBuJJbQYs8Qza74licoYH9sWz3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1266917},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"fe8ba5fe127d1763017e025dec3d00f08c1c86f8","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.5.0_1773001421053_0.9902075317098551","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@apitap/core","version":"1.5.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.5.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"5bb98819e6149673e2b11afd90e418978a201ca5","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.5.1.tgz","fileCount":268,"integrity":"sha512-GG8JYz2mlwm0LRobZKJBbf4wMS+p21WWHWwyKDhcSgAwB1jHyV2oAHjpBaMe5UnrZO+FqcAFAvyyLEzJvy0++g==","signatures":[{"sig":"MEYCIQCf3r4A8IHQp1oUeeSgDO7Z1QpEAMLEke8j8fKgNC09MgIhAJkBoyoSXxlEsJvTi2ze0uDgv6aYricH+P5OtFHD6fbA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1270607},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"690ab9412ce56cb3b3dedb1860a48d42a4726ac2","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.5.1_1773015225530_0.22806136425629986","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@apitap/core","version":"1.5.2","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.5.2","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"c1932a61df82c9360b0ca0b6f5c0971ae9a24b39","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.5.2.tgz","fileCount":268,"integrity":"sha512-4R3GoeR9HPiFWA25LA58L58gKqrj+NGg85+J3bFugUOlsBJtVVt6jss6DT8KKuOhDiZKl3ouiMQ1bLvec31JvA==","signatures":[{"sig":"MEUCIQDpjHN3fSK/Qh79kBHEu2/Ekp8z9+f1mPNq0MKnnNoVEQIgIcpzSWNcwiFlVhgqUUuWejUEEZToKW05tIxL9IRrQOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1270607},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"5f555a43f84a4cf54c7ab9b2b0df4c9cf50f759a","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.5.2_1773017494946_0.4288906463634745","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@apitap/core","version":"1.5.3","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.5.3","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"f3366aecb615bda31ed7ccd262841b7ad0680256","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.5.3.tgz","fileCount":268,"integrity":"sha512-TvYOLWkibx+9U77CTzy8Gm4Sc0jXG1ppMgVDzdrL/7HVxfNJH4r4+NlgLNFn5IcYiOTN+RBJtxAgolR741qksw==","signatures":[{"sig":"MEUCIHH2GL4zGbenyblABVPl3nX4UPFFyuWIavI3dEkSW17eAiEAmMn0xtyD21UcQaF6lLA45Hv9jkijNwwVFnqqH3kBA4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1271103},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"693ca9853ed5bfe2a2819c63b1fab0bab7675f3e","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"11.10.1","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.5.3_1773025837938_0.21381717082971852","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"@apitap/core","version":"1.5.4","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.5.4","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"a9cb81f16f9519b2be4f4ec59903889c630bba80","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.5.4.tgz","fileCount":272,"integrity":"sha512-TCsSbL7IXdSW99cK9h7i1GZczwJbhLhFjHVyGi6M6ypPWbmCyLjYn6Cq5leOHRGmLjHIVyhf3A4lT2LZyE43NA==","signatures":[{"sig":"MEYCIQC0wiCqKv6SjDuIeV+0JKOIw4goieLdzTpFGbteGZeTZwIhANCXcTKonLD/GUhb+0V+hmkT7ihGz/sggdeUW3B4N1Q3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1355698},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"7dd3068e4a15a030625979a6e916baca67eb3dc1","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.5.4_1773875564113_0.8154669785564568","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@apitap/core","version":"1.6.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.6.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"018d1508b0ad5ab9b6f486c06c13eb7b547ca9c0","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.6.0.tgz","fileCount":284,"integrity":"sha512-MqON4sM2ka8CECaP+oAsrl3K4CzYzNgRWFXtosTtgbiPRRvyBWEi9D7+cMuzba+6rJt48hi56FcCTMVpLC4S8g==","signatures":[{"sig":"MEUCIAo18/dCDMmX2thy/WRcpafrsfnrWoweMC7gNECrRY56AiEAxVn7I7x0vF52p/podFJSg8YH/COfwD+MdT2UCWAUYjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1482768},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"8594a64e3ff18a4653033549c690dcb28d3ff6b4","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.6.0_1774014743461_0.7102226483457663","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@apitap/core","version":"1.6.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.6.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"f97dc9ad48361550c2c9a88161d7a974c7557019","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.6.1.tgz","fileCount":284,"integrity":"sha512-SJwNTtGpAwvI/Kmi7iYMlgFlTUilBh/ywwKQl5hvhbBpn3f9sBz71gYPHHEK2ibMZ4YcFxkwaqQFKA57IkvP7g==","signatures":[{"sig":"MEQCIFRygw3/mMgyT8CLlW3Dh/iecAoK8MGmYpCzTscSkk0yAiBxmkEe7Hh1iSRIXFg5P7Au2kQtKbCD97EWxQqz5OLK+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1496886},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"1eb4078de713f1847af33baf6f084b0e5f685e6a","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.6.1_1774018818279_0.5683316375628185","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"@apitap/core","version":"1.6.2","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.6.2","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"7f23767eeb2f2708a85eddcf87ffeb4bc776412c","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.6.2.tgz","fileCount":284,"integrity":"sha512-wrkpFoFhNVjjBlPuA7qfintGAlOE4wu4Y74wg3/qR+EsaFM6xyAx72GBDAY/iIyOnR/+S9EfcaEWLSWy4q5d3Q==","signatures":[{"sig":"MEUCIQCB4Cw89EopoerDsTFahgLeOu7KLqamIgZISAduQJ9bkwIgR72RMg15gfLcr6lUgwzA86Em5rcYEgyMO4/6Y2z/qzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1518809},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"0b32e6268530228374f3690fa904ecf6823f6a21","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.6.2_1774062970442_0.619265098160662","host":"s3://npm-registry-packages-npm-production"}},"1.6.3":{"name":"@apitap/core","version":"1.6.3","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.6.3","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"1a032c46d4c838900522d39145b6f1e5c1734b49","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.6.3.tgz","fileCount":284,"integrity":"sha512-ZAYhwoX2YdnsXnQtHg3hTquYZP+SiluVdnVnQZonabb54ixhKbkklqudb6pnVkw3KbIol2Vax2Hymo4YEaKXKw==","signatures":[{"sig":"MEUCIEb4VsBfF4RaEe0X1+1b16odODsh82g3AHk5R3WCaFABAiEAy9f2yQtntzZQWH2e7wygCYgOMTVk7OkmQjOvcjd7/n4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1520190},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"ddd5e12b315ea227a4db9c436c509a49c987b4a4","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.6.3_1774064838045_0.7118993316310855","host":"s3://npm-registry-packages-npm-production"}},"1.6.4":{"name":"@apitap/core","version":"1.6.4","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.6.4","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"cf164d60c2fad27952b16c489ed8341404835d2b","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.6.4.tgz","fileCount":284,"integrity":"sha512-nMviPW7fm+9znQ6ie3TfEwitSNQ01Y4TnQW50UNwiJ2293O6wvGH90/AjyqfvzLsN7nkIsBH2jsbHcAqi8kivg==","signatures":[{"sig":"MEYCIQCo07BN4rpTbiPwL6Z2LW77aMwtB+ZbuJj80gCRq3a6fgIhAILicStdXQMxY4XpXP8Gx1W+cis6vrQ0pf4xR6lNMG10","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1524392},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"ea6a2abfc2b37b0d998c7b2cc03ab72c01db9574","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.6.4_1774065579304_0.21547108061812215","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@apitap/core","version":"1.7.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.7.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"edd7aa1a5037f43a45c1a561922fe3d59a5f1b67","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.7.0.tgz","fileCount":288,"integrity":"sha512-aOZlH/FT3kQwiTGWOwIG3krGq8rHD0t4jxteE3FExN7scNBQbdFu7tCU+iwKbqghcUBuzOSEb2AXrz1oOq3aiA==","signatures":[{"sig":"MEUCIQCntHlO76R3rRmRX5rYFhHRtaHahkh0e5nJM1hZYKoxNgIgK9l8vl0JGRaflSRRxatjSmAUVyV0QGUxj/7LAZSJ+20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1552433},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"eb2f58a5cdfd923e5df37418ebe621d7826e2a50","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.7.0_1774125159640_0.9275112296166352","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@apitap/core","version":"1.7.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.7.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"50cde76d65882f2a0bfc6dace6ae2e5ccb20be65","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.7.1.tgz","fileCount":288,"integrity":"sha512-pzzUggCx98BO98u/o2uOpuF/QI5BzSsUUz37jZHWQrO/mX9HZlMadg/eOtlm7X5ZieQAhiuN64JFeUQvrIFl1w==","signatures":[{"sig":"MEUCIQCDE6HckZ0cHY3rB4ok2xduQxkPlE2hpjCaacplQiLDngIgWAqXqMt4B8Z2oes+uFrU5j0tjVGvG4+OWfFQWC7pkS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1554798},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"e9123e1dfdcfa5aa9767cb3dab0349f35f768388","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.7.1_1774125886828_0.27063806446292404","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@apitap/core","version":"1.8.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.8.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"3343b2e4cff2ee6f66bb8712145984cd34c0f202","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.8.0.tgz","fileCount":292,"integrity":"sha512-9sRitjiMuLRO8c4jKem5/YFEkwFQom3tF8fFvj0D30PKLSfv8EWdg754V4UYc2lopiB6wlRDuhyXO/jWq4Masg==","signatures":[{"sig":"MEQCIHUkaXaXRYF/tFqFCVSdWSVdyo8BIkVWZl3ev/XcvzGTAiBRuOtXL1zphF18qJbMbyBHYsbTFAKD5SMt/OgNnvXpUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1585348},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"dfddb6db4c5729ae77cf18fe7cdfca473595ee08","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.8.0_1774141993495_0.9348011308451707","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@apitap/core","version":"1.8.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.8.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"5ca2a9f87e4f341fff300c43c6325f55a8eb9f46","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.8.1.tgz","fileCount":292,"integrity":"sha512-zP2OYNAPP5YMgAbBSPOiXGTmX4zlcDtB8CuBEaX/ZuFFFPervVqdy6B5e79n8Hvw/UvNUwNOic2LPZS49OnP7g==","signatures":[{"sig":"MEQCIFWSKQGK37ntKANtHLS5M1+jd48q86JyP2Kq8Ympb1F6AiBYqrsEyoEfqE02i+C72I0Oyw6zkLU3WUF9hqw6Hp6zBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1587290},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"caaeb0b85369a5778fdad2fdea318eb427d1640e","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.8.1_1774146586178_0.6038924958075993","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"@apitap/core","version":"1.8.2","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.8.2","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"dfe0cf52b4aed31ff62a2d3720f8a1fa941b4dae","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.8.2.tgz","fileCount":292,"integrity":"sha512-P7acNhxfuKx/m2kuyyLaCh77oVjCuLwEemmkqvzHVba0bJvBv+IkU0Nq9F+JXfkUL7FpQWwW/xjGpXh0IacQrg==","signatures":[{"sig":"MEUCIF+mPPZ5CFqD+ctfIiVDwKtmircClg7UkNC08oCEki91AiEAujyvlhRI62xiGVC4lGE41Z0MIoKD0bL+4YLHHSUktQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1589709},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"01eab6cbcffc460d992816880308e26d4f190f16","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.8.2_1774148195116_0.5061003451907533","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@apitap/core","version":"1.9.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.9.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"6b05693549ee70ed40d8c4c1f43e2c21b2a861da","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.9.0.tgz","fileCount":296,"integrity":"sha512-GVtAMpcccQZf7OkilXDlnF23uV6OLTTzaVDPI/JMP37k0QzNWJA4w7JZRR+pw7c8FPxIkiOt5e8kgzE9QmTTDw==","signatures":[{"sig":"MEQCIDZ/nC65fYkPTXWFXfx4CgYaRbC3fYe0aM7LIoU3XYCaAiAZhxGesfOv1SrvbxbCP5OYVvrWSrN/9MnxbHwkY1IpMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1680337},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"fd71a7a98026e04394d320cd2849c3431c46d7fb","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.9.0_1774149893649_0.3064566779725679","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"@apitap/core","version":"1.9.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.9.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"35b73f5105f2fe1bf7f74079728da83969e9ad87","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.9.1.tgz","fileCount":296,"integrity":"sha512-5yscmkHhZA+MfRlZU3Xqyyd1WTI8Lc7ZwZqN1wY2UMmQiuJhoDfz8iGS5xH4zQz1URTDskCX+1HOuwkcFe/4Zg==","signatures":[{"sig":"MEUCIQCRu01GtMt/jhJdkixBVkB7ND3lakoIavp0N9NPn3brHAIgedpJaiLLlo0ERmcTYOe5KpMWzze7BA2HWN27Go9LCZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1687693},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"bb00cea052f6d9139a47630e1ae4ba9f47dd51fd","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.9.1_1774150895752_0.6274154863481936","host":"s3://npm-registry-packages-npm-production"}},"1.9.2":{"name":"@apitap/core","version":"1.9.2","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.9.2","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"b8c39fb9719a240fdee351e63c1cd7f3a7ee22fe","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.9.2.tgz","fileCount":296,"integrity":"sha512-7AABCbW7DWIyd+0dSEd4Y+UqPk4h9Shij2qCnCJAaKc7olgYUHNBE21sgYteHheA7mrNEBrAZuXcAc6Rb9uWEQ==","signatures":[{"sig":"MEUCIQDMlsRv1QQ/28rWwxgbAR7lzhEyCO65lC6wSMar1FDYZwIgbuCh4kTPbK117JnykvZ+jcswUCxwG+4TV7BHnr6IcGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1687693},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"414649707ac3653c48557cda6f135b446f2480c0","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.9.2_1774151037443_0.29935190216545515","host":"s3://npm-registry-packages-npm-production"}},"1.9.3":{"name":"@apitap/core","version":"1.9.3","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.9.3","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"696c38845c4654c495a43a19a5fdb571c970a05a","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.9.3.tgz","fileCount":296,"integrity":"sha512-TVpgnGNCWB8KWbquAGHtYfwV3yNKFpL+9K0JjRFdnwfN+p/QNRTvqg0wrIxr8e/Ero7o2Qh6zSeij2f4nzQLFw==","signatures":[{"sig":"MEUCIQDiFRhzrrZ4pgt+vBTMB/rWiGMK67sKbQVYL4HmCgy3CQIgQA81MskzVj/459tUuv+2Nd97cGIY5Jl2NOta5N4o4KA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1687693},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"0be946b4191e9503f2589dadeae8967946ea5dff","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.9.3_1774152009175_0.9447993086563842","host":"s3://npm-registry-packages-npm-production"}},"1.9.4":{"name":"@apitap/core","version":"1.9.4","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.9.4","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"1874543fefa963b602bcf9285be1099ed6fa6ce0","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.9.4.tgz","fileCount":296,"integrity":"sha512-ZYvhY3gRNzIxWIBZvr4bbwIbdMVIrh3Y15oE76xTNs7PTkpDZVTnOWIIIDgAsQ/HFPE2NCjz2bA3644nVXfhNQ==","signatures":[{"sig":"MEUCIQDftx9Dd8VgW+6Qky7Mhere+zE7GhAO1AcIe2DELKIKggIgWu9cbwyVPpB7z0tYagpeWmfFrme4pArJ0VzhOnx4ZlM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1687789},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"b6b42514815d061bd6dcb0930e448abc14e456c3","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.9.4_1774152569401_0.8336305572466223","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@apitap/core","version":"1.10.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.10.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"caf0f7a1b2e59e4afa628c84fd01c51891c438f7","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.10.0.tgz","fileCount":301,"integrity":"sha512-B8ytElPMePzwnL0rh8HsuLDSvSn+VG3NyGlqmXrjKzqlYG+MweDahr4CMJS4gH2y1ChJXc5ymeOW1gc0wcIaGw==","signatures":[{"sig":"MEQCID3xjtIIvYRpmNqTyVJn+WgTK6/LvAn+XD0P/z9qjMY6AiBzv8xZwCiIt4Sl3cs8mkQpqEFI6wp/PXUn6rwC488DBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1720008},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"0608575c01cc218a25e08a08cb24fa608cfdf8e5","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.10.0_1774814569533_0.7868860032563143","host":"s3://npm-registry-packages-npm-production"}},"1.10.1":{"name":"@apitap/core","version":"1.10.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.10.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"6664989f2a200eaf16159f6332247261730c56b5","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.10.1.tgz","fileCount":301,"integrity":"sha512-elReS/tUpWv4yF05svO+/fPm8cW917pIixVJGoJJGpcAWutGUQc6okrUd+1lmBafglSutor+4SGE7JLiqGa/xg==","signatures":[{"sig":"MEUCIB+0hqAaR8GKnEVpno2vaPPuF88+5toj+CPOk6umtSWBAiEA7JnkZ60sYrlY8M8LIDzv10jAdFY0EkQm12VUnN+kQow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1720008},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"baf8f2c9ed8254d77d608f864adac0133396790c","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.10.1_1775136090713_0.8409008926236983","host":"s3://npm-registry-packages-npm-production"}},"1.10.2":{"name":"@apitap/core","version":"1.10.2","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.10.2","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"aca3c862089ff521bb081d164a0fbcca9f40a634","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.10.2.tgz","fileCount":301,"integrity":"sha512-nxTFkoXqexgFLZA6lvBP2gby3A+8TPcNY5vId+K821yBppzg8EVPoUXpvqLW5EW+2Ttz7/5PW8zpdhNijHQPxg==","signatures":[{"sig":"MEYCIQDxOLQZniTSFTreqUo/VQ+ghDHJsNm35X4PBHLiYQHGUgIhAK5wr8jlKESKlKA0iaPvc/wb5PKKmne+PQty8X+foYrq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1728211},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"5664f01b86dabb07d8839c67c4e13215287cbfd0","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.10.2_1775236342665_0.2247565928838231","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@apitap/core","version":"1.11.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.11.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"15c33e0ce9da26bc63e8e4af4d19d51d837cb9f7","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.11.0.tgz","fileCount":325,"integrity":"sha512-SGI+8v18valUf+UYN1K7k2Rnl4LIsSHZYcSZjKneAzbOexTGAr+dRYuKXItXtk/olV4gZlHu1B/d6yLqKxl1/g==","signatures":[{"sig":"MEYCIQC/UbwQX+lA/o7MYaMH2TN1awekcv317fH9Hq8uemu27QIhAPpSPo3TJyHfxyAK5Td3pCorMCHoE07+KaqUlMspuWG1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1838536},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"85c009cc5190b89a88f7ec906052eba93de7b7bb","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","postpublish":"node -e \"const v=require('./package.json').version; const {execSync}=require('child_process'); execSync('gh release create v'+v+' --title v'+v+' --generate-notes', {stdio:'inherit'}); console.log('Release created: v'+v);\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.11.0_1775688266033_0.7850102250940663","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@apitap/core","version":"1.12.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.12.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"8db9d4824c447e62ba56ff51863542bb8ef454bd","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.12.0.tgz","fileCount":329,"integrity":"sha512-MhCBrJTGjSODJ9YAB5YKvHzcwZhKmwiivlZC5kOEpc0o7RxrWXSO6QjQ40uMVQNMp184J6AN+rOvJjIBABhDuA==","signatures":[{"sig":"MEUCIFDJ4R8ikJazijIjnnh1WDQPQB0LshqrLnueK62CzHujAiEA+DdiAAZoL6lRrhd6mbw7sW+D2o6nFfA6hzQM409cN4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1873835},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"04b846fe1c6f176dd461e5611da18a80c6d0047a","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.12.0_1780018838060_0.9552245568336868","host":"s3://npm-registry-packages-npm-production"}},"1.12.1":{"name":"@apitap/core","version":"1.12.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.12.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"03e542cf1ff87890a1322a9c94f0bd0f67d202e8","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.12.1.tgz","fileCount":329,"integrity":"sha512-TYxEIaS9Gd7hQ2tPvNALjtJhVqARG2OYG6aVuJ5mHV+T4XcMFhTakddbhtMSdsQ6TVPBGBSPSI2Qt5RARR1UhA==","signatures":[{"sig":"MEYCIQDHM8BKuLTSqAbgdylz8c6oIHfvaAaEzd52elukYYH2vAIhAJct2L9+WqoYgvNs8+I+vf2/9UlG+I8BjiX+3Ax6+SZH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1883918},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"f19d3490e410c6243882467de3dc71543534976f","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.12.1_1780021723818_0.1753252198866928","host":"s3://npm-registry-packages-npm-production"}},"1.12.2":{"name":"@apitap/core","version":"1.12.2","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"BSL-1.1","_id":"@apitap/core@1.12.2","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"7432e8231cf76967c2d591761909c29a79ab63d0","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.12.2.tgz","fileCount":329,"integrity":"sha512-LznltZFYsrrt5zDaqfsE4oLKEXO7gg5DCsrZDynPNQ8lK5SMvv1my64uk6ak7gRS8yDEffbpFhZAmQUUgT61lg==","signatures":[{"sig":"MEUCIQDULuy2GVs1GvoF5Ct7kpL1z47UOLK7DvK7Q9KNZ52sawIgRVmDQVtaCZdfoJjHjruW1ofd5OS8tmJICsy00j5p8bE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1888376},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"7ea3babb8b6ba1f2874ca312e96f5d3a47ad3518","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.12.2_1784477089633_0.11450867331600922","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"@apitap/core","version":"1.13.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"Apache-2.0","_id":"@apitap/core@1.13.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"50b0cd9a65ee38144ef8cfd7f9fd9d68d30af936","tarball":"https://registry.npmjs.org/@apitap/core/-/core-1.13.0.tgz","fileCount":330,"integrity":"sha512-xyXYvA04Nup6FtMyyRgy5bP7uMkIDh+UHsa0N68S3BRYesswW4ioSYmZIaPqRHe5mnVTXdkD4bPbfuPkT+2qTw==","signatures":[{"sig":"MEUCIEENtzRS1g6Bv3XUVpGyETdV0BDHKp71LvcKpUkzb+M0AiEAimSKQ/yRdFQAZume4PsvYWzGscyFXUl3kFPL9l8iVXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1911216},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"e98d2ca81c2e5a1ccb23141c937fcae618bfbf8a","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.13.0_1784478506352_0.04551284374698894","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@apitap/core","version":"2.0.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"Apache-2.0","_id":"@apitap/core@2.0.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"eff3fdf9e752ef0abb499677c51aaa9aaaad6220","tarball":"https://registry.npmjs.org/@apitap/core/-/core-2.0.0.tgz","fileCount":330,"integrity":"sha512-r4+TlA9PHspoDWxymy1T/ntR0va3/jJEI1ZlHGoxdkYCvVwdOHwumlE+vrr9h+VqZdCjmhy37PQIyLUvkt+dBw==","signatures":[{"sig":"MEUCIFDA1jF+9a4futb+3wODSbB4Hj7GPaDRHheoS/l7WLxoAiEA+W94V5RbRqj9PgYNQw9uzQ1tGZWhDzMibxYsXoahtns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1935353},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"04c9d0556ba7994c5615141a04d43d9db92c6d37","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_2.0.0_1784486869525_0.5677476300717292","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@apitap/core","version":"2.0.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"Apache-2.0","_id":"@apitap/core@2.0.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"93f79de86251f09ff961a65aeeea0df46ac5c948","tarball":"https://registry.npmjs.org/@apitap/core/-/core-2.0.1.tgz","fileCount":330,"integrity":"sha512-lfoEuyq0C3EQTppVUBZeYcq4VzecmTyhzNhScqTaq4PVpTlHxgR0ypVOS6b5ncsRbIoGxWCjwgCpFIfJjpRo3g==","signatures":[{"sig":"MEUCID6kbmCjtX1MdsKs5ZPFwxzq/EQLgAP3SEeOKj21QBBXAiEAurEIvunhaW84zUPk9rtYuV+N0o7+5Vd/HOtUdGSgBrs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1953613},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"1dcdd9b400ca646c1592f191b013853693abca63","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_2.0.1_1784490031171_0.8963951154385454","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@apitap/core","version":"2.1.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"Apache-2.0","_id":"@apitap/core@2.1.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"ba482a97a173e6d979660ba6682e355a8f5134ae","tarball":"https://registry.npmjs.org/@apitap/core/-/core-2.1.0.tgz","fileCount":378,"integrity":"sha512-4wElvf5RjE4fgB/y5+1ZIyeUJrfZywN/VFowvk9RABpuPO+o4xYyGa93zZgIodbJQOivpet+iccf4tKH8j7mWg==","signatures":[{"sig":"MEUCICjkorDNbNkyFGPyN7MrjRzcvkHKozycPZbQMrO6RJ8LAiEA3Bbwp7jmbAFXW/ZJkJwjZI1aLZW3OysB2G/BVz0lbA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2046399},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"005d10cc4d4c7382ffacdbf0ecfd45018968f06c","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_2.1.0_1784495309605_0.42898386738062566","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@apitap/core","version":"2.1.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"Apache-2.0","_id":"@apitap/core@2.1.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"79c2f0d7201d53cc86f5d56a6f7c49bd5e201828","tarball":"https://registry.npmjs.org/@apitap/core/-/core-2.1.1.tgz","fileCount":382,"integrity":"sha512-6Oe0dsAagzgKoEjnqNy7m+M/vViJ4zIkKzOhQbTvTAVUCZ2hBeeJ/sn2pT014ComWZUVeULQ4jJTFLN61HBfLA==","signatures":[{"sig":"MEUCIAmaTB/C14n04fdMEj9yLs7YNiHhp4AIv+zvz88DM5FPAiEAhDMDroJpVu9FgJFnbNVtjwjdhVxAUKWq7Xb7sieVPtM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2065134},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"037b3fd1a03dd9d2262ced1194bdc615a63f5a2f","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_2.1.1_1784498016284_0.9969260092806462","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@apitap/core","version":"2.2.0","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"Apache-2.0","_id":"@apitap/core@2.2.0","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"ce110bb2271d29a5c3735e98285725b854beee76","tarball":"https://registry.npmjs.org/@apitap/core/-/core-2.2.0.tgz","fileCount":390,"integrity":"sha512-hB7V9hJk4+hjPYUMyc4n1TtDNI26TTwi3Aru3yJBgBLsaoz9SDxj//03+koQmh0LCQD7KUV9TqKSvrg5L7wsxg==","signatures":[{"sig":"MEQCIDw/UmmvnnhgRZu7d08yYYbh1ijoPULTYaddAZAPuodHAiAYElxs0hJ4Lqjk/vvU+3pz+dzRr9VzAAV8aDyUPDIyqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2135615},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"cec2df33874dd9a368c83eed7306d250615ae156","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_2.2.0_1784520582650_0.6900031358725944","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@apitap/core","version":"2.2.1","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"author":{"name":"ApiTap Contributors"},"license":"Apache-2.0","_id":"@apitap/core@2.2.1","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"dist":{"shasum":"49a54ef9af8056730f74369848390ffeff528ca9","tarball":"https://registry.npmjs.org/@apitap/core/-/core-2.2.1.tgz","fileCount":390,"integrity":"sha512-UCZ4GOiI+8iN4cvAF0RjqpXLbB/w/rDKuehLoFFCSoKZ/TKVBUjnmUxoVmzyg9TAiteF7D33wVyNuedkkG6U3g==","signatures":[{"sig":"MEUCICbobtcEfN/f4gROmnSnR6nTGQHrDF2jTk2uRo4l0yZwAiEA7d5D2iOkT7Vozop+tvEMLmShTk7YNCyegyfxHhftKd4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2146871},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"a625eb3dfd675955e2fcf42600f582e45c47007a","scripts":{"dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"repository":{"url":"git+https://github.com/n1byn1kt/apitap.git","type":"git"},"_npmVersion":"10.9.7","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.1","playwright":"^1.58.1","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.2.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/core_2.2.1_1784937341905_0.2430891061685736","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@apitap/core","version":"2.2.2","description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","type":"module","main":"dist/index.js","bin":{"apitap":"dist/cli.js","apitap-mcp":"dist/mcp.js"},"scripts":{"build":"tsc","postbuild":"chmod +x dist/native-host.js 2>/dev/null || true","dev":"tsx src/cli.ts","test":"node --import tsx --test 'test/**/*.test.ts'","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/n1byn1kt/apitap.git"},"homepage":"https://github.com/n1byn1kt/apitap#readme","bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"author":{"name":"ApiTap Contributors"},"keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"engines":{"node":">=20"},"dependencies":{"@modelcontextprotocol/sdk":"^1.26.0","js-yaml":"^4.1.1","playwright":"^1.58.1","zod":"^4.3.6"},"devDependencies":{"@types/js-yaml":"^4.0.9","@types/node":"^25.2.0","tsx":"^4.21.0","typescript":"^5.9.3"},"_id":"@apitap/core@2.2.2","gitHead":"31cdbaa48ff7b6ccf87f44e94a982a3d8755a4e6","types":"./dist/index.d.ts","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-v0W+/RLh6Y6X2QNE+oJTn6PqlhzMdm/f2zlMOenNB8HvLnGi+E+e7CVfISlUA316AIPjucGB8kM2cltC18wigQ==","shasum":"d1be5bf1a296ca7214d12fd61f05a5891cce1abb","tarball":"https://registry.npmjs.org/@apitap/core/-/core-2.2.2.tgz","fileCount":390,"unpackedSize":2151266,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAEvS740BnioLX1UfRtkl3oBlJZhoU6Lj7HkJgsJGRNtAiEAobjiUoV+DdyaEKClV9RdOfw7zRSM6uv2M39sDhGmhUU="}]},"_npmUser":{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"},"directories":{},"maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_2.2.2_1784995447733_0.7833971879368502"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-16T23:13:33.765Z","modified":"2026-07-25T16:04:08.022Z","1.0.0":"2026-02-16T23:13:34.074Z","1.0.1":"2026-02-18T01:41:58.405Z","1.0.2":"2026-02-18T02:02:45.255Z","1.0.3":"2026-02-19T02:01:37.967Z","1.0.4":"2026-02-22T04:31:14.142Z","1.0.5":"2026-02-22T06:35:21.197Z","1.0.6":"2026-02-22T06:50:58.065Z","1.0.7":"2026-02-27T20:50:53.234Z","1.0.8":"2026-02-27T23:41:27.516Z","1.0.9":"2026-02-28T00:30:47.872Z","1.0.10":"2026-02-28T01:10:04.575Z","1.0.11":"2026-02-28T02:57:18.804Z","1.0.12":"2026-02-28T02:58:41.102Z","1.0.13":"2026-03-01T01:37:46.649Z","1.0.14":"2026-03-01T02:10:30.200Z","1.0.15":"2026-03-01T02:26:12.564Z","1.0.16":"2026-03-01T02:37:49.605Z","1.0.17":"2026-03-01T02:48:55.744Z","1.0.18":"2026-03-01T04:04:05.536Z","1.0.19":"2026-03-01T04:37:06.487Z","1.0.20":"2026-03-01T05:50:18.366Z","1.0.21":"2026-03-01T05:59:00.472Z","1.0.22":"2026-03-01T06:10:18.513Z","1.1.0":"2026-03-02T03:52:18.066Z","1.2.0":"2026-03-05T02:25:18.192Z","1.3.0":"2026-03-05T03:29:32.374Z","1.3.1":"2026-03-05T03:37:59.307Z","1.4.0":"2026-03-05T06:16:25.642Z","1.4.1":"2026-03-06T03:07:10.650Z","1.4.2":"2026-03-07T20:56:26.826Z","1.4.3":"2026-03-08T05:48:42.867Z","1.5.0":"2026-03-08T20:23:41.243Z","1.5.1":"2026-03-09T00:13:45.740Z","1.5.2":"2026-03-09T00:51:35.123Z","1.5.3":"2026-03-09T03:10:38.169Z","1.5.4":"2026-03-18T23:12:44.275Z","1.6.0":"2026-03-20T13:52:23.619Z","1.6.1":"2026-03-20T15:00:18.545Z","1.6.2":"2026-03-21T03:16:10.597Z","1.6.3":"2026-03-21T03:47:18.242Z","1.6.4":"2026-03-21T03:59:39.540Z","1.7.0":"2026-03-21T20:32:39.813Z","1.7.1":"2026-03-21T20:44:47.047Z","1.8.0":"2026-03-22T01:13:13.760Z","1.8.1":"2026-03-22T02:29:46.338Z","1.8.2":"2026-03-22T02:56:35.324Z","1.9.0":"2026-03-22T03:24:53.846Z","1.9.1":"2026-03-22T03:41:35.968Z","1.9.2":"2026-03-22T03:43:57.661Z","1.9.3":"2026-03-22T04:00:09.404Z","1.9.4":"2026-03-22T04:09:29.575Z","1.10.0":"2026-03-29T20:02:49.763Z","1.10.1":"2026-04-02T13:21:30.893Z","1.10.2":"2026-04-03T17:12:22.946Z","1.11.0":"2026-04-08T22:44:26.249Z","1.12.0":"2026-05-29T01:40:38.258Z","1.12.1":"2026-05-29T02:28:44.045Z","1.12.2":"2026-07-19T16:04:49.784Z","1.13.0":"2026-07-19T16:28:26.518Z","2.0.0":"2026-07-19T18:47:49.727Z","2.0.1":"2026-07-19T19:40:31.331Z","2.1.0":"2026-07-19T21:08:29.802Z","2.1.1":"2026-07-19T21:53:36.530Z","2.2.0":"2026-07-20T04:09:42.827Z","2.2.1":"2026-07-24T23:55:42.059Z","2.2.2":"2026-07-25T16:04:07.868Z"},"bugs":{"url":"https://github.com/n1byn1kt/apitap/issues"},"author":{"name":"ApiTap Contributors"},"license":"Apache-2.0","homepage":"https://github.com/n1byn1kt/apitap#readme","keywords":["api","interception","ai-agent","mcp","browser-automation","web-scraping","playwright","skill-file","api-discovery"],"repository":{"type":"git","url":"git+https://github.com/n1byn1kt/apitap.git"},"description":"Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.","maintainers":[{"name":"nibynikt21","email":"n1byn1kt@protonmail.com"}],"readme":"# ApiTap\n\n[![npm version](https://img.shields.io/npm/v/@apitap/core)](https://www.npmjs.com/package/@apitap/core)\n[![tests](https://img.shields.io/badge/tests-1743%20passing-brightgreen)](https://github.com/n1byn1kt/apitap)\n[![license](https://img.shields.io/badge/license-Apache--2.0-blue)](./LICENSE)\n\n**The CLI, MCP server, and npm library that turns any website into an API — no docs, no SDK, no browser.**\n\nApiTap is a CLI, MCP server, and npm library that lets AI agents (and you) browse the web through APIs instead of browsers. Point it at a site: it captures the internal API from real traffic, generates a portable signed **skill file**, and replays requests directly with `fetch()`. Credentials never live in the file — they stay in encrypted storage and are injected at replay — and replays are matched against the captured route shapes, so your agent learns an endpoint drifted *before* it fails mid-task. No DOM, no selectors, no flaky waits. Token costs drop 20-100x compared to browser automation. Sites that publish OpenAPI specs can skip capture entirely via `apitap import` (APIs.guru directory built in).\n\nThe web was built for human eyes; ApiTap makes it native to machines.\n\n```bash\n# Capture a site's private API once…\napitap capture https://polymarket.com\n\n# …then replay it forever — no browser in this path\napitap replay gamma-api.polymarket.com get-events\n\n# Read page content without a browser\napitap read https://en.wikipedia.org/wiki/Node.js\n  ✓ Wikipedia decoder: ~127 tokens (vs ~4,900 raw HTML)\n\n# Or import published OpenAPI specs directly\napitap import --from apis-guru --search stripe\napitap replay api.stripe.com get-listcharges limit=5\n```\n\nNo scraping. No browser. Just the API.\n\n![ApiTap demo](https://raw.githubusercontent.com/n1byn1kt/apitap/main/docs/demo.gif)\n\n---\n\n## How It Works\n\nApiTap has three ways to build its API knowledge:\n\n1. **Capture** (30 seconds) — Launch a browser, visit a site, browse normally. ApiTap intercepts all network traffic via CDP, filters noise, and generates a skill file. Or use `apitap attach` to capture from your already-running Chrome.\n2. **Discover** (automatic) — ApiTap auto-detects frameworks (WordPress, Next.js, Shopify) and probes for OpenAPI specs at common paths. Works without a browser.\n3. **Import** (instant) — Import OpenAPI/Swagger specs from the [APIs.guru](https://apis.guru) directory of 2,500+ public APIs, or from any spec URL/file. Endpoints get a confidence score based on spec quality. No browser needed.\n\nAll three paths produce the same artifact: a **skill file** — a portable JSON map of an API's endpoints, stored at `~/.apitap/skills/`.\n\n```\nImport:   OpenAPI spec → Converter → Merge → skill.json (confidence 0.6-0.85)\nCapture:  Browser → CDP listener → Filter → Skill Generator → skill.json (confidence 1.0)\nAttach:   Running Chrome → CDP attach → Filter → skill.json (confidence 0.8-1.0)\nReplay:   Agent → Replay Engine (skill.json) → fetch() → API → JSON response\n                                                ↑ no browser in this path\n```\n\n### Confidence Model\n\nEvery endpoint tracks how it was discovered:\n\n| Source | Confidence | Meaning |\n|--------|-----------|---------|\n| Captured with response body | 1.0 | Full capture — response shape verified |\n| OpenAPI import, high quality | 0.85 | Spec has response examples |\n| CDP skeleton (real traffic, no body) | 0.8 | Endpoint exists, body was evicted from Chrome buffer |\n| OpenAPI import, base | 0.6 | Thin spec, no examples |\n\nImported endpoints auto-upgrade to confidence 1.0 on first successful replay. The merge is additive — captured data is never overwritten by imports, imports fill gaps that capture missed.\n\n## Install\n\n```bash\nnpm install -g @apitap/core\n```\n\n**Claude Code** — one command to wire it up:\n\n```bash\nclaude mcp add -s user apitap -- apitap mcp\n```\n\nThat's it. 12 MCP tools, ready to go. Requires Node.js 20+.\n\n> **Note:** `npx @apitap/core mcp` does not work due to [npm scoped package bin resolution](https://github.com/n1byn1kt/apitap/issues/46). Use `npx apitap mcp` or `apitap-mcp` instead.\n\n> **Optional:** To use `capture` and `browse` (which open a real browser), also run:\n> ```bash\n> npx playwright install chromium\n> ```\n> The `read`, `peek`, `discover`, and `import` tools work without it.\n\n## Use with Hermes\n\n[Hermes Agent](https://github.com/NousResearch/hermes-agent) users can install ApiTap as a skill:\n\n```bash\nhermes skills install n1byn1kt/apitap/skills/hermes/apitap\n```\n\nOr straight from the raw file:\n\n```bash\nhermes skills install https://raw.githubusercontent.com/n1byn1kt/apitap/main/skills/hermes/apitap/SKILL.md\n```\n\nThe skill drives the `apitap` CLI through Hermes' `terminal` toolset, so it\nneeds `npm install -g @apitap/core` on the machine running Hermes. Once\ninstalled it is also a slash command: `/apitap read <url>`.\n\nFor heavy use, wire the MCP server into `config.yaml` instead — the skill's\nlast section has the block.\n\n## Quick Start\n\n### Import APIs instantly\n\n```bash\n# Import from the APIs.guru directory (2,500+ public APIs)\napitap import --from apis-guru --limit 100\n\n# Import a specific API by name\napitap import --from apis-guru --search stripe\n\n# Import a single OpenAPI spec from URL\napitap import https://api.apis.guru/v2/specs/stripe.com/2022-11-15/openapi.json\n\n# Import a local spec file (JSON or YAML)\napitap import ./my-api-spec.json\n\n# Skip auth-required APIs (open endpoints only)\napitap import --from apis-guru --limit 500 --no-auth-only\n\n# Preview what would be imported\napitap import --from apis-guru --search twilio --dry-run\n\n# Update previously imported APIs (skip unchanged)\napitap import --from apis-guru --update\n```\n\nImport produces a diff showing what changed:\n\n```\nImporting api.stripe.com from OpenAPI 3.0 spec...\n\n  ✓ 12 existing captured endpoints preserved\n  + 34 new endpoints added from OpenAPI spec\n  ~ 8 endpoints enriched with spec metadata\n  · 0 skipped (already imported)\n\n  Skill file: ~/.apitap/skills/api.stripe.com.json (54 endpoints)\n```\n\nCaptured endpoints are never overwritten. Import fills gaps and adds metadata (descriptions, response schemas, query param enums) from the spec.\n\n### Capture API traffic\n\n```bash\n# Capture from a single domain (default)\napitap capture https://polymarket.com\n\n# Capture all domains (CDN, API subdomains, etc.)\napitap capture https://polymarket.com --all-domains\n\n# Include response previews in the skill file\napitap capture https://polymarket.com --preview\n\n# Stop after 30 seconds\napitap capture https://polymarket.com --duration 30\n```\n\nApiTap opens a browser window. Browse the site normally — click around, scroll, search. Every API call is captured. Press Ctrl+C when done.\n\n### Attach to a running Chrome\n\n```bash\n# Launch Chrome with remote debugging enabled\ngoogle-chrome --remote-debugging-port=9222\n\n# Attach to your signed-in Chrome — captures all tabs\napitap attach --port 9222\n\n# Filter to specific domains\napitap attach --port 9222 --domain *.github.com\n\n# Ctrl+C to stop — generates signed skill files for each captured domain\n```\n\nNo separate browser, no re-login. Captures from your real Chrome sessions with all your cookies and auth tokens. When response bodies are evicted from Chrome's buffer (common on high-traffic pages), skeleton endpoints are written at confidence 0.8 instead of being dropped.\n\n### List and explore APIs\n\n```bash\n# List all skill files\napitap list\n  ✓ api.stripe.com             446 endpoints   5m ago   [imported-signed]\n  ✓ gamma-api.polymarket.com     3 endpoints   2h ago   [signed]\n  ✓ api.github.com             499 endpoints   1h ago   [imported-signed]\n\n# Show endpoints for a domain\napitap show api.stripe.com\n  [ ] GET    /v1/account                    object (22 fields)\n  [ ] GET    /v1/charges                    object (4 fields)\n  [ ] GET    /v1/customers/:customer        object (30 fields)\n\n# Search across all skill files\napitap search stripe\n```\n\n### Replay an endpoint\n\n```bash\n# Replay with captured defaults\napitap replay gamma-api.polymarket.com get-events\n\n# Override parameters\napitap replay gamma-api.polymarket.com get-events limit=5 offset=10\n\n# Machine-readable JSON output\napitap replay gamma-api.polymarket.com get-events --json\n```\n\n## Text-Mode Browsing\n\nApiTap includes a text-mode browsing pipeline — `peek` and `read` — that lets agents consume web content without launching a browser. Seven built-in decoders extract structured content from popular sites at a fraction of the token cost:\n\n| Site | Decoder | Typical Tokens | vs Raw HTML |\n|------|---------|----------------|-------------|\n| Reddit | `reddit` | ~627 | 93% smaller |\n| YouTube | `youtube` | ~36 | 99% smaller |\n| Wikipedia | `wikipedia` | ~127 | 97% smaller |\n| Hacker News | `hackernews` | ~200 | 90% smaller |\n| Grokipedia | `grokipedia` | ~150-5000+ | varies by article length |\n| Twitter/X | `twitter` | ~80 | 95% smaller |\n| Any other site | `generic` | varies | ~74% avg |\n\n**Average token savings: 74% across 83 tested domains.**\n\n```bash\n# Triage first — zero-cost HEAD request\napitap peek https://reddit.com/r/programming\n  ✓ accessible, recommendation: read\n\n# Extract content — no browser needed\napitap read https://reddit.com/r/programming\n  ✓ Reddit decoder: 12 posts, ~627 tokens\n\n# Works for any URL — falls back to generic HTML extraction\napitap read https://example.com/blog/post\n```\n\nFor MCP agents, `apitap_peek` and `apitap_read` are the fastest way to consume web content — use them before reaching for `apitap_browse` or `apitap_capture`.\n\n### Bounding response size with `--max-bytes`\n\n`--max-bytes` (MCP: `maxBytes`) is a **hard cap on the full serialized response envelope**, not just on the data or content field. It applies uniformly across `apitap replay`, `apitap browse`, and `apitap read` (including every built-in decoder — Wikipedia, Hacker News, Reddit, etc.), so a bounded call returns a bounded envelope no matter which path served it.\n\n```bash\napitap replay gamma-api.polymarket.com get-events --json --max-bytes 4000\napitap read https://en.wikipedia.org/wiki/Node.js --max-bytes 4000\n```\n\nHow the cap is honoured:\n\n- **Read path** — links are shrunk first (deduped, then halved), then content is re-sliced byte-accurately. When content is cut, the envelope carries `contentTruncated: true` so the truncation is never silent.\n- **Replay path** — the data payload is trimmed to fit under the same budget, flooring at a **512-byte data minimum** so a pathologically small `--max-bytes` still returns usable data (the only documented case where the envelope may exceed the cap). Concretely: a dense real-world payload replayed at `--max-bytes 4000` can land around 4.5–4.7 KB — irreducible smallest item plus the never-dropped envelope skeleton — and that is the floor working as designed, not a leak.\n- **`envelopeBytes`** — every capped response reports its own actual serialized size in bytes. It is recorded after the diet runs, so `envelopeBytes ≤ maxBytes` (within a few bytes of fixed-width measurement slack), except in the floor case above where irreducible data plus never-dropped metadata can honestly exceed the budget. Use it to see how much of the budget a response actually consumed.\n\n## Pre-Loaded APIs\n\nApiTap can instantly import from the [APIs.guru](https://apis.guru) directory of 2,500+ public API specs. A single command populates your local pattern database:\n\n```bash\napitap import --from apis-guru --limit 500\n```\n\nSome of the APIs available out of the box:\n\n| API | Endpoints | Auth |\n|-----|-----------|------|\n| Stripe | 446 | API Key |\n| GitHub | 499 | OAuth |\n| Jira/Atlassian | 487 | API Key |\n| Twilio | 199+ | API Key |\n| Slack | 175 | OAuth |\n| DigitalOcean | 290 | Bearer |\n| Linode | 350 | Bearer |\n| SendGrid | 334 | API Key |\n| Spotify | 90 | OAuth |\n| Square | 200 | OAuth |\n| Plaid | 198 | API Key |\n| Asana | 167 | Bearer |\n| Twitter | 163 | OAuth |\n| Vimeo | 326 | OAuth |\n| OpenAI | 28 | API Key |\n\nAuth-required APIs import as endpoint maps with response schemas — you can explore what's available and see response shapes before setting up credentials. First successful replay with real auth auto-upgrades the endpoint to full captured status.\n\n## Why ApiTap?\n\n**Why not just use the public API?** Most sites don't have one, or it's heavily rate-limited. The internal API that powers the SPA is often richer, faster, and already handles auth.\n\n**Why not just use Playwright/Puppeteer?** Browser automation costs 50-200K tokens per page for an AI agent. ApiTap captures the API once, then your agent calls it directly at 1-5K tokens. No DOM, no selectors, no flaky waits.\n\n**Why not reverse-engineer the API manually?** You could open DevTools and copy headers by hand. ApiTap does it in 30 seconds and gives you a portable file any agent can use.\n\n**Why not just use an OpenAPI spec?** You can! `apitap import` converts OpenAPI/Swagger specs directly into skill files. But many sites don't publish specs — ApiTap captures their APIs from live traffic.\n\n**Isn't this just a MITM proxy?** No. ApiTap is read-only — it uses Chrome DevTools Protocol to observe responses. No certificate setup, no request modification, no code injection.\n\n**Why trust a client derived from captured traffic?** Because ApiTap treats trust as the product: skill files are HMAC-signed, credentials never enter them (encrypted separately, injected at replay time), replays are matched against the captured route templates instead of \"close enough\" URLs, and every endpoint carries a replayability tier. When a response stops matching what was captured, ApiTap says so — instead of handing your agent plausible-but-wrong data. Compare that to pasting a raw HAR (bearer tokens included) into an LLM context.\n\n## Replayability Tiers\n\nEvery captured endpoint is classified by replay difficulty:\n\n| Tier | Meaning | Replay |\n|------|---------|--------|\n| **Green** | Public, permissive CORS, no signing | Works with `fetch()` |\n| **Yellow** | Needs auth, no signing/anti-bot | Works with stored credentials |\n| **Orange** | CSRF tokens, session binding | Fragile — may need browser refresh |\n| **Red** | Request signing, anti-bot (Cloudflare) | Needs full browser |\n\nGET endpoints are auto-verified during capture by comparing Playwright responses with raw `fetch()` responses.\n\n## MCP Server\n\nApiTap includes an MCP server with 12 tools for Claude Desktop, Cursor, Windsurf, and other MCP-compatible clients.\n\n```bash\n# Start the MCP server\napitap mcp\n\n# Also works via npx (no global install needed)\nnpx apitap mcp\n```\n\n> The legacy `apitap-mcp` binary still works but `apitap mcp` is preferred.\n> `npx @apitap/core mcp` does **not** work — npm can't resolve the default bin for scoped packages with multiple bins ([#46](https://github.com/n1byn1kt/apitap/issues/46)).\n\n**Claude Code** — see [Install](#install) above.\n\n**Claude Desktop / Cursor / Windsurf** — add to your MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"apitap\": {\n      \"command\": \"apitap\",\n      \"args\": [\"mcp\"]\n    }\n  }\n}\n```\n\n**VS Code (GitHub Copilot)** — add `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"apitap\": {\n      \"command\": \"apitap\",\n      \"args\": [\"mcp\"]\n    }\n  }\n}\n```\n\n### MCP Tools\n\n| Tool | Description |\n|------|-------------|\n| `apitap_browse` | High-level \"just get me the data\" (discover + replay in one call) |\n| `apitap_peek` | Zero-cost URL triage (HEAD only) |\n| `apitap_read` | Extract content without a browser (7 decoders) |\n| `apitap_discover` | Detect a site's APIs without launching a browser |\n| `apitap_search` | Search available skill files |\n| `apitap_replay` | Replay a captured API endpoint |\n| `apitap_replay_batch` | Replay multiple endpoints in parallel across domains |\n| `apitap_capture` | Capture API traffic via instrumented browser |\n| `apitap_capture_start` | Start an interactive capture session |\n| `apitap_capture_interact` | Interact with a live capture session (click, type, scroll) |\n| `apitap_capture_finish` | Finish or abort a capture session |\n| `apitap_auth_request` | Request human authentication for a site |\n\nYou can also serve a single skill file as a dedicated MCP server with `apitap serve <domain>` — each endpoint becomes its own tool.\n\n## Chrome Extension\n\n> **Optional.** ApiTap works fully without the extension. Install it if you want passive API discovery or want to capture from your already-logged-in browser sessions.\n\nThe extension captures API traffic directly from your browser — no Playwright, no auth dance, no browser popups. It also silently builds a map of every API you visit in the background.\n\n**Why use the extension?**\n- You're already logged into Spotify, Discord, Reddit — the extension captures from your live session\n- No `apitap auth request` needed — real tokens are captured automatically\n- Passively builds a map of every API you visit, so your agents know what's available before asking\n\n### Setup\n\n**Step 1 — Install ApiTap CLI** (if you haven't already):\n```bash\nnpm install -g @apitap/core\n```\n\n**Step 2 — Get the extension source:**\n```bash\ngit clone https://github.com/n1byn1kt/apitap.git\ncd apitap\n```\n\n**Step 3 — Build the extension:**\n```bash\ncd extension && npm install && npm run build\n```\n\n**Step 4 — Load into Chrome:**\n1. Open `chrome://extensions`\n2. Enable **Developer mode** (toggle, top right)\n3. Click **Load unpacked**\n4. Select the `extension/` folder inside the cloned repo\n\nYou should see the ApiTap icon appear in your toolbar.\n\n**Step 5 — Wire up native messaging (one-time):**\n```bash\napitap extension install --extension-id <your-extension-id>\n```\nFind your extension ID on the `chrome://extensions` page (shown under the extension name after loading).\n\n**Step 6 — Verify the connection:**\n\nClick the ApiTap icon in Chrome. The popup should show **\"CLI: Connected\"**. If it shows disconnected, re-run Step 5 with the correct extension ID.\n\n### Passive Index (always-on)\n\nOnce installed, the extension silently observes API traffic as you browse — no infobar, no CDP, no performance impact. It builds a lightweight index of every domain's API shape: endpoints, HTTP methods, auth type, pagination patterns.\n\n```bash\n# See everything the extension has discovered\napitap index\n\n# Filter to a specific domain\napitap index discord.com\n```\n\nThe index lives at `~/.apitap/index.json` and is automatically read by the `apitap_discover` MCP tool — so your agents can ask \"what do you know about Discord's API?\" and get a useful answer without triggering a full capture.\n\n### Promoting to a Full Skill File\n\nThe index is a map — it knows what endpoints exist but not their response shapes. To get a full replayable skill file, promote a domain:\n\n**From the popup:** Click the ApiTap icon -> find the domain -> **Generate skill file**\n\n**Via agent:** Your agent can request a capture automatically. You'll get a notification to approve, the extension briefly attaches CDP, captures response shapes, then detaches. The full skill file saves to `~/.apitap/skills/`.\n\n**Auto-learn (opt-in):** In the extension popup -> Settings -> enable **Auto-learn**. The extension will automatically promote domains you visit frequently. Off by default.\n\n### Manual Capture\n\nFor one-off captures without the passive index:\n\n1. Click the ApiTap icon -> **Start Capture**\n2. Browse the site — extension records API traffic\n3. Click **Stop** -> skill file auto-saves to `~/.apitap/skills/`\n\nThe popup shows CLI connection status and live capture stats. Auth tokens are encrypted with AES-256-GCM in session storage and automatically persisted to `~/.apitap/auth.enc` via the native host, with `[stored]` placeholders in the exported skill files.\n\n> **Note:** Chrome Web Store submission coming soon. For now, load as an unpacked extension in Developer mode.\n\n---\n\n## Auth Management\n\nApiTap automatically detects and stores auth credentials (Bearer tokens, API keys, cookies) during capture. Credentials are encrypted at rest with AES-256-GCM.\n\n```bash\n# View auth status\napitap auth api.example.com\n\n# List all domains with stored auth\napitap auth --list\n\n# Refresh expired tokens via browser\napitap refresh api.example.com\n\n# Force fresh token before replay\napitap replay api.example.com get-data --fresh\n\n# Clear stored auth\napitap auth api.example.com --clear\n```\n\n## Skill Files\n\nSkill files are JSON documents stored at `~/.apitap/skills/<domain>.json`. They contain everything needed to replay an API — endpoints, headers, query params, request bodies, pagination patterns, and response shapes.\n\n```json\n{\n  \"version\": \"1.2\",\n  \"domain\": \"gamma-api.polymarket.com\",\n  \"baseUrl\": \"https://gamma-api.polymarket.com\",\n  \"endpoints\": [\n    {\n      \"id\": \"get-events\",\n      \"method\": \"GET\",\n      \"path\": \"/events\",\n      \"queryParams\": { \"limit\": { \"type\": \"string\", \"example\": \"10\" } },\n      \"headers\": {},\n      \"responseShape\": { \"type\": \"object\", \"fields\": [\"id\", \"title\", \"slug\"] },\n      \"confidence\": 1.0,\n      \"endpointProvenance\": \"captured\"\n    }\n  ]\n}\n```\n\nSkill files are portable and shareable. Auth credentials are stored separately in encrypted storage — never in the skill file itself.\n\n### Import / Export\n\n```bash\n# Import a skill file from someone else\napitap import ./reddit-skills.json\n\n# Import an OpenAPI spec (JSON or YAML)\napitap import ./stripe-openapi.json\napitap import https://api.apis.guru/v2/specs/stripe.com/2022-11-15/openapi.json\n\n# Import validates: signature check / SSRF scan / format detection / confirmation\n```\n\nImported files are re-signed with your local key. OpenAPI specs are automatically detected and converted using the same merge logic — captured endpoints are preserved, imports fill gaps.\n\n### apitap doctor\n\nOffline hygiene check for your skill store — finds junk domains (ad/WAF/consent\nhosts), tracker beacon endpoints inside good skills, duplicate endpoints, stale\ncaptures, never-verified endpoints, and unsigned/tampered files.\n\n    apitap doctor              # report only; exit 1 if findings\n    apitap doctor --fix        # apply conservative fixes (quarantine + snapshot)\n    apitap doctor --restore example.com   # undo\n    apitap doctor --json       # machine-readable report\n\n`--fix` never deletes: whole files move to `~/.apitap/skills/.quarantine/`,\nedited files keep a first-touch original under `~/.apitap/skills/.doctor/`.\nFiles whose signature does not verify are reported but never edited.\n\n## Security\n\nApiTap handles untrusted skill files from the internet and replays HTTP requests on your behalf. That's a high-trust position, and we treat it seriously.\n\n### Defense in Depth\n\n- **Auth encryption** — AES-256-GCM with PBKDF2 key derivation, keyed to your machine\n- **PII scrubbing** — Emails, phones, IPs, credit cards, SSNs detected and redacted during capture\n- **SSRF protection** — Multi-layer URL validation blocks access to internal networks (see below)\n- **Header injection protection** — Allowlist prevents skill files from injecting dangerous HTTP headers (`Host`, `X-Forwarded-For`, `Cookie`, `Authorization`)\n- **Redirect validation** — Manual redirect handling with SSRF re-check prevents redirect-to-internal-IP attacks\n- **DNS rebinding prevention** — Resolved IPs are pinned to prevent TOCTOU attacks where DNS returns different IPs on second lookup\n- **Skill signing** — HMAC-SHA256 signatures detect tampering; four-state provenance tracking (self/imported/imported-signed/unsigned)\n- **Atomic writes** — Skill files are written to a temp file then renamed, preventing corruption from mid-write crashes\n- **Safe JSON parsing** — Server responses parsed with `safeParseJson()` that returns raw text on malformed JSON instead of crashing\n- **Spec fetch hardening** — OpenAPI spec imports are SSRF-validated, size-limited (10MB), timeout-limited (30s), and reject redirects\n- **External $ref rejection** — Only local document `#/` references are resolved; `file://` and remote `$ref` pointers are blocked\n- **No phone-home** — Everything runs locally. No external services, no telemetry\n- **Read-only capture** — Playwright intercepts responses only. No request modification or code injection\n\n### Why SSRF Protection Matters\n\nSince skill files can come from anywhere — shared by colleagues, downloaded from GitHub, or imported from untrusted sources — a malicious skill file is the primary threat vector. Here's what ApiTap defends against:\n\n**The attack:** An attacker crafts a skill file with `baseUrl: \"http://169.254.169.254\"` (the AWS/cloud metadata endpoint) or `baseUrl: \"http://localhost:8080\"` (your internal services). When you replay an endpoint, your machine makes the request, potentially leaking cloud credentials or hitting internal APIs.\n\n**The defense:** ApiTap validates every URL at multiple points:\n\n```\nSkill file imported\n  -> validateUrl(): block private IPs, internal hostnames, non-HTTP schemes\n  -> validateSkillFileUrls(): scan baseUrl + all endpoint example URLs\n\nOpenAPI spec imported\n  -> resolveAndValidateUrl(): SSRF check on spec URL before fetching\n  -> resolveAndValidateUrl(): SSRF check on extracted API domain\n  -> validateSkillFile(): validate merged skill file before writing\n\nEndpoint replayed\n  -> resolveAndValidateUrl(): DNS lookup + verify resolved IP isn't private\n  -> IP pinning: fetch uses resolved IP directly (prevents DNS rebinding)\n  -> Header filtering: strip dangerous headers from skill file\n  -> Redirect check: if server redirects, validate new target before following\n```\n\n**Blocked ranges:** `127.0.0.0/8`, `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `169.254.0.0/16` (cloud metadata), `100.64.0.0/10` (CGNAT/Tailscale), `198.18.0.0/15` (benchmarking), `240.0.0.0/4` (reserved), `0.0.0.0`, IPv6 equivalents (`::1`, `fe80::/10`, `fc00::/7`, `::ffff:` mapped addresses), `localhost`, `.local`, `.internal`, `file://`, `javascript:` schemes. Alternative IP representations (decimal integer, octal, hex) are normalized before checking.\n\nThis is especially relevant now that [MCP servers are being used as attack vectors in the wild](https://cloud.google.com/blog/topics/threat-intelligence/distillation-experimentation-integration-ai-adversarial-use) — Google's Threat Intelligence Group recently documented underground toolkits built on compromised MCP servers. ApiTap is designed to be safe even when processing untrusted inputs.\n\n## Trap-Aware Mode\n\nApiTap ingests web content on behalf of agents, and adds inspection at the two places it already sits in the pipeline:\n\n- **`apitap read`** scans raw HTML for hidden content containing explicit prompt-injection markers before extraction. Results are annotated on the response via a `findings[]` field; content is never modified.\n- **`apitap replay`** optionally scans outbound request bodies and query strings for secret patterns (SSH keys, cloud credentials, API tokens) before the `fetch()` call. Opt-in per skill file or globally.\n\n### Read-side scanner\n\nThe read scanner runs by default on `apitap read` and the `apitap_read` MCP tool. It uses a two-condition gate: a finding is emitted only when content is in a hidden position (inline `style:display:none`, `visibility:hidden`, `opacity:0`, off-viewport positioning, `hidden` attribute, `aria-hidden=\"true\"`, or inside an HTML comment) **and** the hidden content matches an explicit role marker or a known prompt-injection signature.\n\nVisible content never triggers a finding. Blog posts about prompt engineering, documentation of jailbreak techniques, and this README itself are all non-triggering.\n\nDisable with `--no-scan` on the CLI or `scan: false` on the MCP tool.\n\n```bash\napitap read https://example.com          # scan on by default\napitap read https://example.com --no-scan  # scan off\n```\n\n**Known limitations:**\n- Class-based CSS hiding is not detected in v1.0. The generic HTML extractor strips `<style>` blocks before the scanner runs, so class-resolved hiding is invisible.\n- Site-specific decoders (Reddit, YouTube, Wikipedia, HN, Twitter, Grokipedia, DeepWiki) bypass scanning. They extract from structured API sources rather than raw HTML.\n- The scanner is a heuristic, not a classifier. Absence of findings is not proof of safety.\n\n### Egress-side scanner (opt-in)\n\nThe egress scanner is **opt-in per domain** or globally. Default behavior on upgrade is byte-identical to the previous release — cron-job users see zero change unless they explicitly enable it.\n\nThree ways to enable:\n\n**Per skill file** — add `egress_check: true` to the skill file (part of the signed payload):\n\n```json\n{\n  \"version\": \"1.2\",\n  \"domain\": \"api.example.com\",\n  \"egress_check\": true,\n  \"egress_action\": \"annotate\",\n  \"endpoints\": []\n}\n```\n\n**Globally** — via `$XDG_CONFIG_HOME/apitap/config.json`:\n\n```json\n{\n  \"egressCheckAll\": true,\n  \"egressCheckAction\": \"annotate\"\n}\n```\n\n**Per call** — via the CLI flag or MCP tool argument:\n\n```bash\napitap replay api.example.com post-submit --egress-check=annotate\napitap replay api.example.com post-submit --egress-check=block\napitap replay api.example.com post-submit --no-egress-check\n```\n\nPrecedence: per-call → skill file → global config → off.\n\nWhen enabled with `annotate` (default action), the request proceeds normally and the response envelope gains a `warnings[]` field. When enabled with `block`, `high`-severity findings refuse the request. `medium`-severity findings (PII) always annotate, never block.\n\n### Audit log\n\nBoth scanners write findings to `$XDG_STATE_HOME/apitap/findings.jsonl` (default: `~/.local/state/apitap/findings.jsonl`):\n\n```bash\napitap audit --findings\napitap audit --findings --source=egress --since=2026-04-01\napitap audit --findings --json\n```\n\nThe audit log **never contains matched secret bytes**. Egress findings record pattern name, parameter location, structural path, and match length only.\n\n### Honest threat model\n\n- The read scanner catches hidden content with explicit prompt-injection markers. It does not catch semantic manipulation, framing attacks, class-based hidden content, font-face remapping, or content hidden via external stylesheets.\n- The egress scanner uses pattern matching. An attacker who can get the agent to encode or transform a secret before sending it will defeat pattern matching. This is defense in depth, not a DLP solution.\n- The audit log is advisory tamper-evidence, same-user boundary. Same threat model as ApiTap's existing skill signing.\n- v1.0 is rules-based. No learning loop. Tuning happens via signature list updates informed by audit log data.\n\n## CLI Reference\n\nAll commands support `--json` for machine-readable output.\n\n| Command | Description |\n|---------|-------------|\n| `apitap browse <url>` | Discover + replay in one step |\n| `apitap peek <url>` | Zero-cost URL triage (HEAD only) |\n| `apitap read <url>` | Extract content without a browser |\n| `apitap discover <url>` | Detect APIs without launching a browser |\n| `apitap capture <url>` | Capture API traffic from a website |\n| `apitap attach --port <port>` | Attach to running Chrome and capture API traffic |\n| `apitap import <url-or-file>` | Import OpenAPI spec or skill file |\n| `apitap import --from apis-guru` | Bulk import from APIs.guru directory |\n| `apitap list` | List available skill files |\n| `apitap show <domain>` | Show endpoints for a domain |\n| `apitap search <query>` | Search skill files by domain or endpoint |\n| `apitap replay <domain> <id> [key=val...]` | Replay an API endpoint |\n| `apitap refresh <domain>` | Refresh auth tokens via browser |\n| `apitap auth [domain]` | View or manage stored auth |\n| `apitap mcp` | Run the full ApiTap MCP server over stdio |\n| `apitap serve <domain>` | Serve a skill file as an MCP server |\n| `apitap inspect <url>` | Discover APIs without saving |\n| `apitap stats` | Show token savings report |\n| `apitap index [domain]` | View passive index from Chrome extension |\n| `apitap audit` | Audit stored skill files and credentials |\n| `apitap doctor` | Offline hygiene check for the skill store (junk domains, beacons, dupes, stale/unsigned files) |\n| `apitap forget <domain>` | Remove skill file and credentials for a domain |\n| `apitap --version` | Print version |\n\n### Import flags\n\n| Flag | Description |\n|------|-------------|\n| `--from apis-guru` | Bulk import from APIs.guru directory |\n| `--search <query>` | Filter APIs.guru by provider or title |\n| `--limit <N>` | Max APIs to import (default: 100) |\n| `--no-auth-only` | Skip APIs requiring authentication |\n| `--dry-run` | Show what would be imported without writing |\n| `--update` | Skip APIs unchanged since last import |\n| `--force` | Always reimport regardless of history |\n\n### Capture flags\n\n| Flag | Description |\n|------|-------------|\n| `--all-domains` | Capture traffic from all domains (default: target domain only) |\n| `--preview` | Include response data previews |\n| `--duration <sec>` | Stop capture after N seconds |\n| `--port <port>` | Connect to specific CDP port |\n| `--launch` | Always launch a new browser |\n| `--attach` | Only attach to existing browser |\n| `--no-scrub` | Disable PII scrubbing |\n| `--no-verify` | Skip auto-verification of GET endpoints |\n| `--domain <glob>` | Filter traffic by domain glob (attach mode, e.g. `*.github.com`) |\n\n## Development\n\n```bash\ngit clone https://github.com/n1byn1kt/apitap.git\ncd apitap\nnpm install\nnpm test          # ~1587 tests, Node built-in test runner\nnpm run typecheck # Type checking\nnpm run build     # Compile to dist/\nnpx tsx src/cli.ts capture <url>  # Run from source\n```\n\n## Contact\n\nQuestions, feedback, or issues? -> **[hello@apitap.io](mailto:hello@apitap.io)**\n\n## License\n\n[Apache License 2.0](./LICENSE) — free and open source, no restrictions on use. ApiTap's BSL scheduled conversion to Apache 2.0 for 2029; we invoked the early-conversion clause on July 19, 2026 instead ([details](./RELICENSING.md)).\n","readmeFilename":"README.md"}