{"_id":"qiksy-mcp","_rev":"44-b02300b6a51ca32da9c84fc8c74b1f56","name":"qiksy-mcp","dist-tags":{"latest":"1.55.0"},"versions":{"0.1.0":{"name":"qiksy-mcp","version":"0.1.0","_id":"qiksy-mcp@0.1.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"4f6d0d7f22519135a4797bb481bde840a1ef3169","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-0.1.0.tgz","fileCount":3,"integrity":"sha512-2yNI/idF4smFh68iUEnXJbKn1cyN5cTyAqb2sRdYDi4eAVAF36n+WBQOOk8+Jcb2P7+E5mS9VdHD/jZf+4I+Yg==","signatures":[{"sig":"MEYCIQCWKT7pOhK1pa8uWLsMggG4LAdEyJtnP438pub8KL0dMQIhANWOzYm8fByGyiuC3pzqycymLMa0AU77UhLRPzcpeBQx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21418},"type":"module","engines":{"node":">=18"},"_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_0.1.0_1784125965985_0.18719855428308096","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"qiksy-mcp","version":"1.0.6","_id":"qiksy-mcp@1.0.6","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"ea92243c627eefcaefde3b9dd870da1639866f27","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.0.6.tgz","fileCount":3,"integrity":"sha512-MUgIOQE+KOJJUSt1IiHiX+2AOEfRo+Ctq01IPoxgxAXcrvee4LnNPRD1VJDWnzGTlZMcJZDS7D+yZnL5XlVhuQ==","signatures":[{"sig":"MEQCIF7woYUKRPD2a/8tYfhRpuhhqPaZbIuZ0YLAbJ3ISLH5AiAg5ZHBGyrDefUK0mIZvFT7oqm39n6EGzYGhn2VT6tAGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36456},"type":"module","engines":{"node":">=18"},"gitHead":"e56ee5f1eace0db3039d0260c12e31416d242624","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.0.6_1784919545686_0.6513747488224912","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"qiksy-mcp","version":"1.0.7","_id":"qiksy-mcp@1.0.7","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"fa4cf146a64c355423c3912e64f8b617dab50893","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.0.7.tgz","fileCount":3,"integrity":"sha512-/1In1jX96q5Erf4RWRUYj4+byY9o3Dwt6dtjboJf1E5zKW3mDZuhLLFUWxkI+6yPBMlDcXz4tn5d6OJNPaO1rA==","signatures":[{"sig":"MEUCIA5O36mfsl3zeH+Vsh4KZc8Frs1JouwxXdQRvmYZ/Xt2AiEArifxY3kLOKiXGFfUnKR4GAzpz9X6x/TjSPdoUogzaPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45090},"type":"module","engines":{"node":">=18"},"gitHead":"4644c573a9b9e011c71dab8790de06f9cbb32c80","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.0.7_1785006641094_0.6201301363098051","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"qiksy-mcp","version":"1.1.0","_id":"qiksy-mcp@1.1.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"1576fbe86e3f3042a7e8ac05762c574c8fca2e00","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.1.0.tgz","fileCount":3,"integrity":"sha512-9zaK9jUEqS1GxuHvxfAhre7SJGV/pFx4n+GTx5f88FbKGuAssXtLX1slpuJYejsQ5IH++dAJW7z7y8YzXW8GWw==","signatures":[{"sig":"MEYCIQDXJUInU6ik/mFryVMygS6iT8bxlFeGshINVaVU3MHNIwIhAOoI2K4j9ZsPHmyX5gZ6s4NwpjKK2Y4dCY8FMblVO3fW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58352},"type":"module","engines":{"node":">=18"},"gitHead":"8e725c86aca561fd870e1b63377155cad81e3564","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.1.0_1785082260526_0.991707581169385","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"qiksy-mcp","version":"1.1.1","_id":"qiksy-mcp@1.1.1","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"c7bd68755674cb3e7d44e20de70f0be0556d280b","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.1.1.tgz","fileCount":3,"integrity":"sha512-Rjy7TLzFAQzy6ZSvhKFwpjtgmlfEVyBI6svurWgOdl7Jjf4uBIvrzyiin7rHe4oQyuHgZWTFkmbiXhySC5zdXQ==","signatures":[{"sig":"MEUCIQChTfd2fQwsXIqxMIqqkTPyn7+9Lqx3duaSs0iHfYMT7AIgOYx6qLLA21xPu1dmLXR4TyTqKI0iUXT80Zqy3t4hjOc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61038},"type":"module","engines":{"node":">=18"},"gitHead":"69273fc2d37b46843eb20f1507c2f6dbc85a5d0d","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.1.1_1785085263986_0.9224384353556958","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"qiksy-mcp","version":"1.2.0","_id":"qiksy-mcp@1.2.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"3bfc298c6e435c8fc2205f77ae39d14b2c32741c","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.2.0.tgz","fileCount":4,"integrity":"sha512-pHj7MAlmARzp48Dx3amLavYHJ2AU30LmBsa/KztlIRf8f4YYLnOgHka4gre4/qNKSHYaIUgnIpRDYYFPCVJKAQ==","signatures":[{"sig":"MEUCIBfl7EmbDf6Fbdxbx1U7Q8dyiEvXy47NmEBKRAHcQEqgAiEAwz3YXuusNg3smiKc75m+ajRy0bkgfO19XbZWsfQ0oDI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66548},"type":"module","engines":{"node":">=18"},"gitHead":"9fc121307044ee6fb9eb89b5c577b5b49361b305","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.2.0_1785147058397_0.32110406807124225","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"qiksy-mcp","version":"1.2.1","_id":"qiksy-mcp@1.2.1","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"77ac4c7c14f87cf2117b9e1a07fcd1d21fbfea33","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.2.1.tgz","fileCount":4,"integrity":"sha512-UHZLKNtemoK6oUGKgH5IUngH8agNqPwn5cGNs/E8d8N/SkFfoP5+TkfLnmRyTjPk5PkdVykAO/4yradYwr9pBQ==","signatures":[{"sig":"MEQCIGeGkNogJb4RskShvc+SraCrA9WIyqqzTLikJ8H9+RyAAiAK3TbwzG7eIYCxy52BArMwXooTejFnKHgTYiK1Ps/FCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81895},"type":"module","engines":{"node":">=18"},"gitHead":"458561cd024ab260899f5d0463703e8c9b742fc7","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.2.1_1785189289665_0.9849053585440692","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"qiksy-mcp","version":"1.4.0","_id":"qiksy-mcp@1.4.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"1802d28a34e366333b33d4a29ba2ce921f58586a","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.4.0.tgz","fileCount":5,"integrity":"sha512-ecFWW5xoQ/KJ0/ZTUWX/0hufUwipgVTv8b9cgkscSXTmjHwLIwVVsWpnCGUbssnsSSPWYGFrt2VFaAWSLjBjTw==","signatures":[{"sig":"MEUCIDe5jMHVY8Iwyy2PJ+IK4t1E2gNFXH4qzGtBB5MUoLWqAiEAyFtX+HevleKFcR6apMseF/aN+NbRvISMjVligo+r7f0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347662},"type":"module","engines":{"node":">=18"},"gitHead":"8922e3dd83819be2e51c0cdbeb86ea28b09cecdf","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.4.0_1785402519986_0.28420235389930393","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"qiksy-mcp","version":"1.5.0","_id":"qiksy-mcp@1.5.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"ca2412a144fda066bcab315b443777597897417e","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.5.0.tgz","fileCount":5,"integrity":"sha512-fsO8bOy5MfVW5I47kKPSbno17VEybON4FtfdBb8qESxtNkHTvwkzL8nn8cGwKW3QJhmng113exCs9JcOm+KlmQ==","signatures":[{"sig":"MEUCIBKTK3kQZ/IRVrbQhlTpp54PTYp88O/LHYVGvQXOldrDAiEAl+J3Y0lvttoBG2Wm6S8mHHlqsTCnzASyWwRRdn2YqKQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":378317},"type":"module","engines":{"node":">=18"},"gitHead":"aa3930f51688652ddfd8383c4ddb64e91e7f91b3","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.5.0_1785413896210_0.3987274706932751","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"qiksy-mcp","version":"1.6.0","_id":"qiksy-mcp@1.6.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"b0c0e9b30ef394f6ccdd0d99974a4858d681e04e","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.6.0.tgz","fileCount":5,"integrity":"sha512-+rEcjosklf7M4nYry5IJhscxDcJYu/n/tuOFXx+M2w5siUmvJBFaypSx1HBcpZcAUhkFJ6yOd317jfZF5zCxDg==","signatures":[{"sig":"MEYCIQC8e2DKcKsJkc+rLDiwjw9btwzMXy/IJqZczhhV15cciwIhAMnCulKtSS6a+D5OaBseVU8CgXfXTzQ3VseijcEnIPrQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":388407},"type":"module","engines":{"node":">=18"},"gitHead":"03ae8fee6015655f19256bb0bc6a154de8c174cd","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.6.0_1785497379410_0.9249319552243045","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"qiksy-mcp","version":"1.6.1","_id":"qiksy-mcp@1.6.1","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"92dd8d3d47b1edb5b6f75f5b4e515c5039a2eb10","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.6.1.tgz","fileCount":5,"integrity":"sha512-1TquqcP2Tls8j6s/xsjxQMosWpcO6C/wDyECuu5U4j6eCHv48VN30belJqmUrLEelWyJxpDsHRghINH4s6NjGQ==","signatures":[{"sig":"MEUCIFe+mFhds4RJi/jBZzU+1B+BJc7K9hZ4Z30w7v0vSpRiAiEA0MAgW1SyF5vX59JE3gIEZrc+nMLBcZ0ubKKAYB0SrEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":395990},"type":"module","engines":{"node":">=18"},"gitHead":"263f0ac6ca4fb925913a6065111bf738595dc300","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.6.1_1785616987124_0.483822667091917","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"qiksy-mcp","version":"1.7.0","_id":"qiksy-mcp@1.7.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"5f2451651538ab101070587aaa0fb425804442b2","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.7.0.tgz","fileCount":5,"integrity":"sha512-JFkqzLeb9ipJYFOPqiFwMv7LFOMt7FYOLwAu3Iu5Ej1Lbx4AC1e1HGv98nNLqh2YqkzfrApbI0IJQnTtBdTVtA==","signatures":[{"sig":"MEUCIFtRFoRrA/Pa3MH8XNn9N6yb0Ix/NgAShQgcyKlgHtKEAiEAk7bmviNwaEv1AC7b+qawBxSo911MjS+RSEHuCruyDtY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":426617},"type":"module","engines":{"node":">=18"},"gitHead":"c9c484cca4fd70f1cb9ebffa72426a1ed321f8fb","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.7.0_1785797570199_0.5816711193122559","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"qiksy-mcp","version":"1.8.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.8.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"037ae3dadfc566b66c14017ab20ca287556af3a6","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.8.0.tgz","fileCount":5,"integrity":"sha512-fOJDz2nb2ArR53WJmSVfe4sww1BMmH6xCcEUml/Qt+i7XEwE2zD2NkHa7IFsT0hGxYqA5zJX3mAJ+HP/pxyt0A==","signatures":[{"sig":"MEQCIAxvcSnk9FVRtbYHUqfgUP4bcUnZNyBxyMaeRmiUGFSpAiBQp+yNehQHyKZZ5Z88MfDdcBUfG6HGL/O6iCPMfGNnkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433623},"type":"module","engines":{"node":">=18"},"gitHead":"d5496050c50d2da3d18423be49949d67da75cd98","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.8.0_1786041898327_0.091612527271977","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"qiksy-mcp","version":"1.8.1","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.8.1","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"284c06bdf5e82f41a8bd7ecd3127815b23f8cd89","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.8.1.tgz","fileCount":5,"integrity":"sha512-q7yq8/I6jf/ttlSYnlzLtJDzB+Qol5xHR7cgerJrMH5Us/FjiGrExZudgTpDclAskSvD++mZ5cuENB3RitIuAg==","signatures":[{"sig":"MEUCIQCSGpiuwhAQIjLA/hLKpmtqLyuNoetDZxapH0dD/O68+QIgae1adgr7nkzVm8UibzjQekY3rG2kTxsMNnCoKXLjAIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433623},"type":"module","engines":{"node":">=18"},"gitHead":"cd9c2feae8e70aab27241d8725988f8d544f96ce","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.8.1_1786329255786_0.6334086084283996","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"qiksy-mcp","version":"1.9.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.9.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"7ebe1785a252c0982f61dc77d51bc9d3e86a3189","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.9.0.tgz","fileCount":5,"integrity":"sha512-XMxHfEn713FJbYqzuBWxln2wxEUryJ3Tk+ZnpaXbfouIVCPkIeyendzY5ySvd41oZg2ZJIcjNr/YyCuK0+RQOQ==","signatures":[{"sig":"MEYCIQCyrPDnYw3NuoCIM6hlTgKKb0WDk+55pVJJgafzPptDhgIhALJ4P5P4YEVXEdDoJWH8lyUiCOa1dUmQnB4md4FHWk7J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433623},"type":"module","engines":{"node":">=18"},"gitHead":"f2e1dcd674c980dde348db5ac4a97dcfea46f285","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.9.0_1786362391028_0.29142988362475175","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"qiksy-mcp","version":"1.9.1","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.9.1","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"c7b312f55a0af148d3818832a6abad70649d870b","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.9.1.tgz","fileCount":5,"integrity":"sha512-VSXDE+FvBJBFegg7i5WeL9XmpSvo03TIDC4Q+ecNHWlC0EHKwFYNZlbEazqEuslTlM0HcFfqPYFgg7E+3oGhVA==","signatures":[{"sig":"MEQCIEuhe5JfMsRrE42apKRt1+VCqT7uiGAM3ZbqV+WGGggPAiAQ6xTvlF2v4PACVGgO+3QS/1UJxg3eC1FirnZmbSYzdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433627},"type":"module","engines":{"node":">=18"},"gitHead":"06d036da4db01b1512269cde730841f271badb4c","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.9.1_1786527019202_0.1082061577575173","host":"s3://npm-registry-packages-npm-production"}},"1.9.2":{"name":"qiksy-mcp","version":"1.9.2","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.9.2","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"2d0e8035f1191ee071ead1477c483c2fa8ebc57e","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.9.2.tgz","fileCount":5,"integrity":"sha512-y98dgKolwPBJBQPv3LBaqFCh2tNxCCyqEyo0Y5fR3rkKQpGaTypNskf44icbBTNH3BSIAOykZ3enEsf0ivPeYw==","signatures":[{"sig":"MEQCIEpspS6DZKJmW4b8/8aLuiNGMQoM/vvU9Epxx1pGNV/NAiAfUdQFGjEg2X+6w0DVeGfnAejL8xGzb/jEnortAJidHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433627},"type":"module","engines":{"node":">=18"},"gitHead":"43335943070d7c6433b435eba80a6cccaba7484c","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.9.2_1786529159601_0.9025337538638982","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"qiksy-mcp","version":"1.10.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.10.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"9480ee95216803777b7a11d22df5ae1f6a071e1e","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.10.0.tgz","fileCount":5,"integrity":"sha512-lPlFdMOtc3ENjxUaUZU4359PWd6Eaah6pBIBXAlQZClrDlH5eC+iM+J+kWH78kEaZNmiiZ7LH7/F1CNHapI+8g==","signatures":[{"sig":"MEUCIQDRgo6CRP16aWrmEZJqbFA59474CxXYo8Olxd3xlTW9ogIgYXMiAo9CcXeUpsXBS31YDLoxR8umwMfwXUO3KXdxSOc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":438157},"type":"module","engines":{"node":">=18"},"gitHead":"fdf91bb68dbba33772012ff3234ced5d756fb06a","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.10.0_1786646563281_0.24849916546652695","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"qiksy-mcp","version":"1.11.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.11.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"288e0b76e990183088ca56aa5937f0ccbc544a12","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.11.0.tgz","fileCount":5,"integrity":"sha512-xUw8ow9HnmIY0m/pOv8vgUkYlKq+dUpkdunKYUQb+s+7A4G+/ETkWO1oaxtprcJfkxZRe9oDUpcMnawbXoEzQw==","signatures":[{"sig":"MEQCIBlJTjrTljd6Tmidg/8iCT1wv77XmNYjKO18r4/brWIOAiBK5dWYqtiCkXqwcEscGYQe4M508hjJkEJXY9HPjWUB9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440116},"type":"module","engines":{"node":">=18"},"gitHead":"08d3c6156710a5e9c86e3f1204cbd49842c31587","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.11.0_1786784884495_0.7256049634155057","host":"s3://npm-registry-packages-npm-production"}},"1.11.1":{"name":"qiksy-mcp","version":"1.11.1","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.11.1","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"195c1f662179d16253fb950fc01f927ee273908c","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.11.1.tgz","fileCount":5,"integrity":"sha512-GDNAgJYOqH89XOJLVzmfd2tJEDqXM88MNlLxEDEDqhTr/GvcnBdlc1ADgu2O/MPjLYeld3QVKf+h7jRY51q6dA==","signatures":[{"sig":"MEYCIQDvqz38aVKQzb+WragBoX+EErEDMEfN1R2dzCUPSuWeIQIhAP6KKrubAH8LzYbD1DfheTtq53Nrnekn6+bVZXyDA7Be","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440116},"type":"module","engines":{"node":">=18"},"gitHead":"2273b794d5e0cd6374086dbcf997076bb86d1cd3","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.11.1_1786966894552_0.9450439036739042","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"qiksy-mcp","version":"1.12.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.12.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"7016ce7f2445ef49363a25e9061017508996c72f","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.12.0.tgz","fileCount":5,"integrity":"sha512-MkLPrNSjKamPdKUup/+UWKtnmd8W0LOqTeqA/rhG1i4Yme2Bl3ARW8wvUY5xoEnIz3t0R4U0J81AeW9/YSyXWA==","signatures":[{"sig":"MEUCIAZXhF8OICEFSPj9j71CqF0NWDeb3sAbSX4P8B6yLr+eAiEAxQuY4vICD535lH0wCOUfCL3nY/F3jocQoXjhy73QzyE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440116},"type":"module","engines":{"node":">=18"},"gitHead":"1b25ac0301b58ec4e71505474bbc4627e9c71e69","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.12.0_1787274448130_0.013203607264361317","host":"s3://npm-registry-packages-npm-production"}},"1.12.1":{"name":"qiksy-mcp","version":"1.12.1","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.12.1","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"a2c8670860e9ac69dffe248e6b52e9a3d2c9e8a3","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.12.1.tgz","fileCount":5,"integrity":"sha512-uL5IonMPYbTAPGSazsHIgCdSksVsECrNZaTpiaZlJ4oDUnz7e7mv+zhdkTMmR+cqVE9yWsUxRoJYWAgAJcjEwA==","signatures":[{"sig":"MEQCIBKBKk8RNKtvfxgI+lSOCf2G0OpThVyDwDWyWqo8YGulAiBRVRreXryTUhQRXXBno6G9fCPmZXCr3unY+MSFZKZdLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":447535},"type":"module","engines":{"node":">=18"},"gitHead":"0871bd77553e5c44ce61c1eb22819829f765cd7b","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.12.1_1787308715457_0.554841850780063","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"qiksy-mcp","version":"1.13.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.13.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"4424ab4aedb28a9df5da2bea09f2941e80d173cf","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.13.0.tgz","fileCount":5,"integrity":"sha512-C0632/raQkpsz8P9trqrbza9QmdH3gWPucdvlabnJPg0sgMcprPSWy+cu5KoEN68qUTVWvoZzoYGURFW6/4sCQ==","signatures":[{"sig":"MEUCIQCWmFp1MGraLzaEyNfsTPbWj5rPdsdMnjXgduAScqTG5gIgNMSSV2mZgGQm0E1QFxEkqAx0iJaOtTHKh+8fkHxXew4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":478145},"type":"module","engines":{"node":">=18"},"gitHead":"efa602e74e3d6a90df33e91c2afddda746be4f93","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.13.0_1787776014619_0.666886076258447","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"qiksy-mcp","version":"1.21.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.21.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"225dc79917f9a9e6e225b65f4f5853b81b3fb1d5","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.21.0.tgz","fileCount":5,"integrity":"sha512-zSNvPdtOI5rDdVI2MZbClwqeAwGQ0lnp2PJ7a/9hdK6trTOZHjk36JMzDVcfl83oEmSW0ReSjzHKT/K7/djPYQ==","signatures":[{"sig":"MEQCIG3mEmmsbZT2qtpQq273pcT2iahvvxw0SMU1NsLaUpPkAiB3z+K+/Ypxys7Qyp/Wm5WqDitYkpB8obBTFzztBAw2ZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":482086},"type":"module","engines":{"node":">=18"},"gitHead":"1c65a5a0c8accb9f39ed1b2da135764f924836b1","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.21.0_1788339424275_0.04296865003723682","host":"s3://npm-registry-packages-npm-production"}},"1.24.0":{"name":"qiksy-mcp","version":"1.24.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.24.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"1c70caab609b86b1de6a092a19a417ca408d22d0","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.24.0.tgz","fileCount":5,"integrity":"sha512-4/iIRVINvVUpWAtsjT3WbY3qfZuEiOv29cylfD/dEvz+ZM7ycn18jtgZbes7Yj2VXE9jKkWvvLaPP/JdMsjMyQ==","signatures":[{"sig":"MEUCIQDFK9ZaXcWKdAzyp0ooC/OWPmbxeOBc6/GZqmP+qZkP/gIgfD47QleWP2m8MRlJs1mwKm8geO3XlFyUjOKfRBXjAME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":493853},"type":"module","engines":{"node":">=18"},"gitHead":"e4e55dafb807fd42ad1a5fdacd9b725a02c8705f","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.24.0_1788418723537_0.6568396696310288","host":"s3://npm-registry-packages-npm-production"}},"1.25.0":{"name":"qiksy-mcp","version":"1.25.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.25.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"e710fe5385fd1cfefacf2d3289d04421ed1f6e6c","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.25.0.tgz","fileCount":5,"integrity":"sha512-HBoXNS/3KyxNKZi4jPNsYO+tWrmhVBldPYzd3ketMwoEsqc6CWmWQ8p8AADtRxctvRied5bfglkDE9G0sx5yEA==","signatures":[{"sig":"MEQCICGD3eEXR2dOwByGerV0OhWQnXzwdP3cNige63suinbKAiAVfKHLciwMhejVCfJa/gQPR0tShQ5EjxnTJHNg4fDIAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":500633},"type":"module","engines":{"node":">=18"},"gitHead":"64f51a0ae6ecb45f2087953b83a54886c5839186","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.25.0_1788422911953_0.591199240824656","host":"s3://npm-registry-packages-npm-production"}},"1.26.0":{"name":"qiksy-mcp","version":"1.26.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.26.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"82c21b06c219df2db6a30486878bcf40717119bb","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.26.0.tgz","fileCount":5,"integrity":"sha512-d3G6NdvU8+ljJKlp7fF8pAMdQKe7pBERsYSuitA76JIwmGO/qqTw3BvVbaOSzf5frb7wwB8eBL9L0Wbcusyp1g==","signatures":[{"sig":"MEUCIQDhelO08Yk5kMcWw6HNiWdf0g5PIZwGfYmnBP7OqZspegIgIGc4KorRgY7tC27wmqCwlSyj5EsS5QGHbuvT/mQhkVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":501608},"type":"module","engines":{"node":">=18"},"gitHead":"7ed75cd1bf34de99d6289dfc2192a32943bcd08b","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.26.0_1788440009576_0.7444143354818502","host":"s3://npm-registry-packages-npm-production"}},"1.27.0":{"name":"qiksy-mcp","version":"1.27.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.27.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"d65215b8b26ee1cf88139d94d7a2836377dbe48d","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.27.0.tgz","fileCount":5,"integrity":"sha512-UYxGXvHGwdoVDsxrfhliieaQPr63FS6Xc9sJRd6t3/6QPsCZz0PEX6cnDzEY/iCbb3mC/ewIFiEzgvqqCnoihQ==","signatures":[{"sig":"MEYCIQCl2wdkth9T5a2/IgKycieXWXF2pr4og1j9jTP1a9yZOwIhANELZu2GpVTN8M+oQPhqrtGaPD3GBlykmHypIisYAj/n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":506220},"type":"module","engines":{"node":">=18"},"gitHead":"956def7628f52abd7b8e2c515eb536d23ca13135","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.27.0_1788440896561_0.33065465682325756","host":"s3://npm-registry-packages-npm-production"}},"1.28.0":{"name":"qiksy-mcp","version":"1.28.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.28.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"9e883ccef1b5dbeeadfafd238b7467977d43be1b","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.28.0.tgz","fileCount":5,"integrity":"sha512-9fgprNpwhZZrTWKty8bgX9dYm0iYnizPuqSm6se6ftP8OjvqDOGZNKwxlULDavP+dkjdFw2tKvQ9EFSfzfpGsg==","signatures":[{"sig":"MEYCIQD2Wv77dGwXCJpn4s5h2kf8mq/NkbsI1fTq5OnfailoogIhAMoA7/Gq/0wzRUgz3wXqYqQnz2kdTvYDtY7ld+0r4XSq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":506220},"type":"module","engines":{"node":">=18"},"gitHead":"3fabb5d923bbb8fb99be47bf2f10897f969121d7","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"MCP bridge for the Qiksy browser extension — expose live QA findings, forms, network and session to any MCP-capable coding agent.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.28.0_1788480547854_0.7387804856894855","host":"s3://npm-registry-packages-npm-production"}},"1.30.0":{"name":"qiksy-mcp","version":"1.30.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.30.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"dd91147db0c443a203e727cf0bee959f8377702a","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.30.0.tgz","fileCount":5,"integrity":"sha512-EqaNoUSFsoLlxKOIhhBQ0PYxOW1J9B8pv9rNZy4O/sqHlyYfg1Un1Ir/0y7Wwjgk4LNETX8ygX7MJI0Em0Fw5A==","signatures":[{"sig":"MEYCIQDRdpvVKrySkx1TprzsV64bLRJk56UkmiohH/kSD156UwIhANdhaiIrPZSHgd3BzloPjKKiUUXEiEVOgPEi1+trRcch","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":508712},"type":"module","engines":{"node":">=18"},"gitHead":"0508fe5c896065bb87d3c00fb746bda05e3d30a2","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.30.0_1789377962728_0.7491839133941922","host":"s3://npm-registry-packages-npm-production"}},"1.38.0":{"name":"qiksy-mcp","version":"1.38.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.38.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"690c61c389adf7f2c8af85beacd73d0ed7d2949f","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.38.0.tgz","fileCount":7,"integrity":"sha512-xaOfzqPbQlHZnbHg6ugmgGWWgFugFfD4E8PyrFEdAgljpRtunnkMxIT3Uzi9LAHLxR1d/+dbspo+I5EmxjUt6Q==","signatures":[{"sig":"MEUCIQCMI4D5cdGt69w18pGlFHrvkHjE7lguEnPob33OyR2VCQIgGScHvz2QY4OP99o5wXBOWv/84EkITnB1a0WsNGMuT6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":543465},"type":"module","engines":{"node":">=18"},"gitHead":"3c90f6ccdbdfa96ed0f328854eaac46e7e833fa9","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.38.0_1789550916076_0.2304192620493628","host":"s3://npm-registry-packages-npm-production"}},"1.41.0":{"name":"qiksy-mcp","version":"1.41.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.41.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"3668edec87692a72471923f95d6081e11cbc7696","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.41.0.tgz","fileCount":10,"integrity":"sha512-llHyRP9tZ98dBVsD+KCtW3tbjSoWdFhbcpJ0EzdTxc4L/QrEC3LAt0SnLtN/U+PGZDXYpg1RaBZpMyWGtGUpiA==","signatures":[{"sig":"MEUCIQCwrvYJnECDsUIiyIpsd+eXK3ldu+/BKtLLCpgILjl7uQIgM/VPqMQoUJVxD70MfxWxWXvSjXK5JEakc3Mbidnr574=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":605280},"type":"module","engines":{"node":">=18"},"gitHead":"ce1bd64d18cc372376943b5f5aceedb2cce9f04a","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.41.0_1789632978243_0.5806451182306436","host":"s3://npm-registry-packages-npm-production"}},"1.42.0":{"name":"qiksy-mcp","version":"1.42.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.42.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"e81ac62695e1854b068e62513836e9326377cb86","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.42.0.tgz","fileCount":10,"integrity":"sha512-YXR6Wyv9ih3MGh4/KUgCXIju68dZsjDwt/iHrCtCw9B6+KwRXGMq0pK6GYAiN0IyJTHcvCAFpgBYqfGlEMMEgw==","signatures":[{"sig":"MEYCIQC1SU12JyeC5JfjHszhSDUInf43I4G161x5wf5M58qRMQIhAKCCsfLuK1Hbs3qUuV+gtUY57tVFAnJGZk4tGhulhu5x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":608386},"type":"module","engines":{"node":">=18"},"gitHead":"f0d79d93cbe78a1794405d45b8ae96951d38c7f1","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.42.0_1789637030279_0.5723568924318092","host":"s3://npm-registry-packages-npm-production"}},"1.43.0":{"name":"qiksy-mcp","version":"1.43.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.43.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"408cff974100651c97afc965c1a1b814056746e8","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.43.0.tgz","fileCount":11,"integrity":"sha512-4Izb3Ly9hfk3GhdEm3jJkN36Un4ZlOkOW1gpGFLNtYUkN5ISP0gt0L5mM2emhuFOPf1g5y6O4ybFR2QCqvweYg==","signatures":[{"sig":"MEUCIQDH6KNh5YuwHYF23Dlf0+ei/S5CUZLLkn9I5YDsKcjx1QIgLElMvVvcWGfmYEP09Du+GQvKfzF72UV4h+JVd8OhGpA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHMua0Jia092BQK1aGzjHeq2C9LdAc8USXqn9K3Ys7KRAiEAqpaygdiYIbhsE7sGXTbOxrnT/RRx4+eQMvDykc+mpJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621865},"type":"module","engines":{"node":">=18"},"gitHead":"850b8870bcadd872e89aa7a269048d9bebd14a3a","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.43.0_1789889014300_0.3310195095406341","host":"s3://npm-registry-packages-npm-production"}},"1.45.0":{"name":"qiksy-mcp","version":"1.45.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.45.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"41e3b39165b97bce09394cc28a06a0458410444e","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.45.0.tgz","fileCount":11,"integrity":"sha512-1sWF+ZZ9+WM/4Yp4YKw5wunHPlAxTjKukyla13gEvJ//Twsq7lPCm8VoqL8FsKbqgApIFZ/Rkm8BWIDuCQplWQ==","signatures":[{"sig":"MEUCIF68Q8xpUMmiOQ3DKyDkCmQN24hiadWVes1yfJkmiRv3AiEAykLhI8t9N7N54dPPkY6yUGkegdaSVGv70wXC88Deqek=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDe8UsTrFZy7aTYiOuhyFydMUb5YGhS9g+DsVqjtfFsvAIgWUCxfee7UOrLj0AZS0c4O4VU13Ye0Hg/7KlQKh88YMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":635854},"type":"module","engines":{"node":">=18"},"gitHead":"a3fbae2c8125dc726097590bbb039afca48c78d4","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.45.0_1789975419424_0.6684767370377791","host":"s3://npm-registry-packages-npm-production"}},"1.46.0":{"name":"qiksy-mcp","version":"1.46.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.46.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"beaabb8d10bf473e49cd081f67113f53fbc14534","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.46.0.tgz","fileCount":11,"integrity":"sha512-ZAYpCHhHfzbNskrvY8fH83EzEQOuoYUxtBoaMDaQYZ2bsr7viwAtS1Y7Bx4RHoEhT1V+CGg/mRk3uXatDshDDQ==","signatures":[{"sig":"MEQCIHa2CHOWB0KW+EN7fph+yuxZCY9bB8TFlXKLn2OixBekAiBwSZtSoA0MrJmVvzA8D6aNyb1h7KXNWGFE3PVPWPqY7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEy+k8j/Db3rcuc4H7XUaR7c/cZmiDB3ozoM/qA8jxeHAiEAo8Jo2UN3x/kdTyw5pjxUBiNlExEl7Di9WMRBTGfSwf8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":642093},"type":"module","engines":{"node":">=18"},"gitHead":"667361f0d9d0d835782a17919d37118ba6872a30","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.46.0_1789978747522_0.425510529892956","host":"s3://npm-registry-packages-npm-production"}},"1.47.0":{"name":"qiksy-mcp","version":"1.47.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.47.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"2684006b2723c62cdacd53b43e8ef8eba1837a50","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.47.0.tgz","fileCount":11,"integrity":"sha512-LQhkkzJqU/3X788xPeabycGVJuqVkN9IQomjbTATRQ4Ep1OzA/OdNhoVNZFepLMQp1571ffuu22vP0z9udeXsw==","signatures":[{"sig":"MEUCIH9bVfjb5IgXGY1cerxXUCacd+kzt+17VZGTBxC+8qXHAiEAkmUl2+EQLDDlBU96ALe1ioKYgH5rb57Lh+IFCMKo5aA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB4MPnplE1GxmbFBD8QzCCEs9PLjAHkQPJMDVUcL7XeHAiEA9LUCJqKk6Skj+QNXbYIgn18MFVpPNojqf5ZLh1CSuE8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":648372},"type":"module","engines":{"node":">=18"},"gitHead":"ac869a2c99bb5d53a7616d5217a324d6407f4d12","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.47.0_1789990375776_0.5977030372571721","host":"s3://npm-registry-packages-npm-production"}},"1.48.0":{"name":"qiksy-mcp","version":"1.48.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.48.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"ccea71d3ebaec50876379d0018d9fa422302cc04","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.48.0.tgz","fileCount":11,"integrity":"sha512-INTtfjdpR/KEdIi7fGbcUARcFmdaZ4EYjB6qWvZMtIZcwntwaBvSQi1i4FvNaHr4dzltYy8n2DJ+NWCp8Loa2w==","signatures":[{"sig":"MEQCIFhOzRn0u400q8S7iwIK6yVnnXPkAxJ192toNEgOPzaTAiB9wbc+WiyiQzYmhgbzykx21Vg4NqIcmtoWOPcdpCC48A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDKZbC3bZwicVeBIUmZDn6s5rt9JdVsX97CV2X8ro5W5QIhAIuKQxN8VhVLKaBKTPFn9DkK+Xh4mj5+Jt47+WAMqB3K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654934},"type":"module","engines":{"node":">=18"},"gitHead":"cca8b64aae1f865af01fc1a0dc08929f9482bab5","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.48.0_1789992964482_0.9745883837775684","host":"s3://npm-registry-packages-npm-production"}},"1.49.0":{"name":"qiksy-mcp","version":"1.49.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.49.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"5d161de0242151ece02a93d5ef6e4f145fb7e7f3","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.49.0.tgz","fileCount":11,"integrity":"sha512-Bn7KYwtOKmPkUCW3NuZXiJKRYZBe6EZDZGosRVe3mjoWPNpOiSlq4yqVEt471RXaBjXVPMd0//7QzUdWMsLGhg==","signatures":[{"sig":"MEYCIQDwFXSCrwd496LLIwBI0OwzXElitZDahbKhFqw+10NiHQIhAOtVdai70BjY3YQI92G0lNJooXTFK7Mc5Y/I+3ABqkpo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC2eijhuRe2X/kOjGpFaXWTdy39wc08r+Ml3R4R1yk+TQIgIB3IIDCKSCT53iMHaXbAXhu566jgqXP6/7xxXh4rI+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654934},"type":"module","engines":{"node":">=18"},"gitHead":"1b53dc5d50a1f45e20191349a64f213a8afc8cc3","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.49.0_1790011612497_0.5318211397548547","host":"s3://npm-registry-packages-npm-production"}},"1.50.0":{"name":"qiksy-mcp","version":"1.50.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.50.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"ccfd1e2c22054b3cfa5101950ca33f155c9504f3","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.50.0.tgz","fileCount":11,"integrity":"sha512-8QgRmQWfWLDw9CaYBR/KndnzElyeYNiC/Z5Y+h9qcmndW8U0AYFre5eu8DrxUw2jvHvHjaByNP+XIr4lRePrUQ==","signatures":[{"sig":"MEUCIQDdWj9LQ4u+M5zYJJqkj48BcTqSE5D1tyt7Dp/UKJg6fgIgf6VHBkuRi9VLhXOtmJQP8v6Zj2kkNUKHeQVLO6qM9VY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDhysiQ+kdzCa/ZEhpf0bC/fwulNysUpH9+B518Fug3xAIhAMMBQHhS2aEVEBaB+Vn9Nj2WT1cmkmMvEaP40gNEqnfJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":668210},"type":"module","engines":{"node":">=18"},"gitHead":"3001ff27b86467d32899dcca7df2367897e884a9","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.50.0_1790014970060_0.31690239055043845","host":"s3://npm-registry-packages-npm-production"}},"1.51.0":{"name":"qiksy-mcp","version":"1.51.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.51.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"886e3bf9fafc53396ef2b31f00c40b212db26a67","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.51.0.tgz","fileCount":11,"integrity":"sha512-ElUeUx8GBqt+uq5RBxNVOtAiOFkmpBC9JYt/uQOVPhgH4V7eVLl9tfJVhLg6sN6UAdyINhiW1WC3iv2/GiBJsQ==","signatures":[{"sig":"MEUCIQCYXU0OtIIyS4bturuTa1C9WF4a0wKd8IYNqIASnyEwrwIgQjPQrYWRPmqIiRE3rcHrxj5L6U5Us4dYoyy8hp2LuMo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFw7Vb+m7R0d4738LFFD/wbnx6ujNizECcHR1GUOEzZQAiApK7H13dS9sG57sckPhtuJX765GDD9K6kK0zWDU3qEEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":668364},"type":"module","engines":{"node":">=18"},"gitHead":"f6b92b92c2faa79e2d704dce4eab250a715d7141","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.51.0_1790065138761_0.6088137671875327","host":"s3://npm-registry-packages-npm-production"}},"1.52.0":{"name":"qiksy-mcp","version":"1.52.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.52.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"fb7f59e6f95d1c25906acb00e161e942ffd93ffa","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.52.0.tgz","fileCount":11,"integrity":"sha512-YsPcpClNBd3Ga20a965iNlWLBujgu/1NhwmmQN4eqR++n9PoB1U6+LRJklF0fVDc7/ivJnLGbAyCdDT5obUnzQ==","signatures":[{"sig":"MEUCIQCy2tgMU/KaXzYVfoX2jEMPfgTnF8nwJAPDJw/ncIadawIgc04wkRhZCMs2PqcSYvvbR99cJElJmrl5VjsloH8Yf5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGDMN/XzNa/HjOWcj9E6FPuDAGNlIXR3rEIU2vl44I70AiBrTHLDWmwHigBKgRCM0THHjCyD30X96NhAgEGdA05cWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":681523},"type":"module","engines":{"node":">=18"},"gitHead":"3e00e83819fc4cf4f97594b57d3e1c9a477adbab","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.52.0_1790067218992_0.7018602386319628","host":"s3://npm-registry-packages-npm-production"}},"1.53.0":{"name":"qiksy-mcp","version":"1.53.0","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"license":"SEE LICENSE IN README.md","_id":"qiksy-mcp@1.53.0","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"homepage":"https://qiksy.app/qa-copilot/","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"776448e744575b67552e906d29ac3cd8b0a6aedf","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.53.0.tgz","fileCount":11,"integrity":"sha512-tdobPTyEfVnSZ6TvnuGwSyDSPjTw9GAjoNsQt4oVdmN8sY6ZuQ5A/JTuMKSnlDlOgl0a/VoOKvL0R+cjHa/C1w==","signatures":[{"sig":"MEQCIEhgw/Ng/5n8Lo4QbC+BZZBAEi/mNPq4GtA09js/9pZWAiBRHosKfadRuvzjwdDsKj6QPVCZsu3nmTAxwNAl2V3cfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCQ11xLs8bjLQYuJtxirA3HUJbhjQxFGuJ3qUJHbztCtAIhALV5ug5Pw/uqrQNxX/EQd1HiuyLoFp7U5fVs86uMvwVV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":682388},"type":"module","engines":{"node":">=18"},"gitHead":"6874d2bb8753bf8a0f72b7d7152feafbd28d2305","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qiksy-mcp_1.53.0_1790071653288_0.6482050264582224","host":"s3://npm-registry-packages-npm-production"}},"1.55.0":{"_id":"qiksy-mcp@1.55.0","bin":{"qiksy-mcp":"server.mjs"},"dist":{"shasum":"471c87409ed86e1aef0f3cac257109855e66cc73","tarball":"https://registry.npmjs.org/qiksy-mcp/-/qiksy-mcp-1.55.0.tgz","fileCount":11,"integrity":"sha512-5bn43zsBsyZGUjbt41A3K0MitFVBkme2hejQ+FXGsoGyA9mhBk1rmTmr0JLELPuyOUuRc3CYoOWrqGhGQm7eFA==","signatures":[{"sig":"MEQCICal6MME7lQBDFhX2FrF/WU3C29gUCNKqO7n+UYXYhiqAiBOu3rI//yY8L3ie7nblW1uBKcRu0pNHUPZgDwj6KTfTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAW/tWNB6f3cPSSefj4Mc/g+EOrv5ftPKVbJLJYSgb7eAiEAluOlGNjCMo4sjhzQbmR1WVeRSufUMYkfbaeYxKLrfVU="}],"unpackedSize":682940},"name":"qiksy-mcp","type":"module","engines":{"node":">=18"},"gitHead":"d625f3305e933f7aaff7843df3ff8965cbfad6da","license":"SEE LICENSE IN README.md","version":"1.55.0","_npmUser":{"name":"lesnyak","email":"vnachalesobaka@gmail.com"},"homepage":"https://qiksy.app/qa-copilot/","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"_npmVersion":"11.7.0","description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","directories":{},"maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.18.0","zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/qiksy-mcp_1.55.0_1790238695143_0.2232413358226204"}}},"time":{"created":"2026-07-15T14:32:45.924Z","modified":"2026-09-24T08:31:35.432Z","0.1.0":"2026-07-15T14:32:46.102Z","1.0.6":"2026-07-24T18:59:05.890Z","1.0.7":"2026-07-25T19:10:41.222Z","1.1.0":"2026-07-26T16:11:00.654Z","1.1.1":"2026-07-26T17:01:04.195Z","1.2.0":"2026-07-27T10:10:58.552Z","1.2.1":"2026-07-27T21:54:49.815Z","1.4.0":"2026-07-30T09:08:40.129Z","1.5.0":"2026-07-30T12:18:16.371Z","1.6.0":"2026-07-31T11:29:39.556Z","1.6.1":"2026-08-01T20:43:07.283Z","1.7.0":"2026-08-03T22:52:50.415Z","1.8.0":"2026-08-06T18:44:58.517Z","1.8.1":"2026-08-10T02:34:15.947Z","1.9.0":"2026-08-10T11:46:31.176Z","1.9.1":"2026-08-12T09:30:19.340Z","1.9.2":"2026-08-12T10:05:59.764Z","1.10.0":"2026-08-13T18:42:43.513Z","1.11.0":"2026-08-15T09:08:04.644Z","1.11.1":"2026-08-17T11:41:34.717Z","1.12.0":"2026-08-21T01:07:28.296Z","1.12.1":"2026-08-21T10:38:35.608Z","1.13.0":"2026-08-26T20:26:54.799Z","1.21.0":"2026-09-02T08:57:04.414Z","1.24.0":"2026-09-03T06:58:43.794Z","1.25.0":"2026-09-03T08:08:32.140Z","1.26.0":"2026-09-03T12:53:29.695Z","1.27.0":"2026-09-03T13:08:16.749Z","1.28.0":"2026-09-04T00:09:08.084Z","1.30.0":"2026-09-14T09:26:02.847Z","1.38.0":"2026-09-16T09:28:36.214Z","1.41.0":"2026-09-17T08:16:18.403Z","1.42.0":"2026-09-17T09:23:50.419Z","1.43.0":"2026-09-20T07:23:34.386Z","1.45.0":"2026-09-21T07:23:39.538Z","1.46.0":"2026-09-21T08:19:07.665Z","1.47.0":"2026-09-21T11:32:55.906Z","1.48.0":"2026-09-21T12:16:04.676Z","1.49.0":"2026-09-21T17:26:52.606Z","1.50.0":"2026-09-21T18:22:50.146Z","1.51.0":"2026-09-22T08:18:58.858Z","1.52.0":"2026-09-22T08:53:39.090Z","1.53.0":"2026-09-22T10:07:33.399Z","1.55.0":"2026-09-24T08:31:35.267Z"},"license":"SEE LICENSE IN README.md","homepage":"https://qiksy.app/qa-copilot/","keywords":["mcp","modelcontextprotocol","mcp-server","browser","browser-automation","qa","testing","accessibility","a11y","chrome-extension","claude","cursor","agent","browser-mcp","chrome-mcp","mcp-chrome-extension","claude-code","codex"],"description":"Browser MCP server for the Chrome tab you already have open — your session, your logins. Gives Claude Code, Cursor, Codex and VS Code the live page: findings, forms, failed requests with server bodies.","maintainers":[{"name":"lesnyak","email":"vnachalesobaka@gmail.com"}],"readme":"# qiksy-mcp\n\nA **browser MCP server** for the tab you already have open. Pairs with **Qiksy Bridge**, the [Qiksy](../) Chrome extension. It lets any MCP-capable coding agent — **Claude Code, Cursor, Cline, Windsurf, Zed, VS Code** — read the live QA state (findings with CSS selectors, detected forms, failed requests with server error bodies, recorded repro steps) straight from the browser, so you can say *\"fix what Qiksy found on this page\"* and the agent has the full context.\n\nThe agent can also **drive Qiksy's own surfaces**: open the panel, run the audit, pull the exploratory-tour checklist, generate the session report, and spotlight an element.\n\nBy default it stops there — it does **not** fill, click, submit or navigate the app you're testing. Qiksy senses and reports; you drive. **Agent control** (Pro, off until you switch it on and confirm a prompt of its own) is the deliberate exception: it lets the agent act inside the session you are *already logged into*, which is the whole reason to use this rather than a cold automated browser. The default posture is unchanged — that boundary is what keeps a tool that watches *other people's* apps trustworthy — but a professional can move it knowingly.\n\n## How it works\n\n```\nagent  ⟷ (MCP over stdio, JSON-RPC)  ⟷  qiksy-mcp  ⟷ (WebSocket @ 127.0.0.1)  ⟷  extension service worker\n```\n\nThe extension is the WebSocket **client** (a service worker can't listen on a socket); this process is the WebSocket **server**, bound to loopback only. When the agent calls a tool, this process asks the extension for the current tab's `qa-export/v1` bundle and returns it.\n\n## Two things to know before you wire it up\n\n**The bridge as a whole is a Pro surface.** Inside the extension the free tier stays\nfully usable, but the socket itself is gated: `ensureConnected()` refuses to dial\nunless the licence (or the 28-day trial) is valid, so once a trial lapses *every*\ntool fails — `qa_export` included — with a message saying so. Do not plan a\nfree-tier integration around read-only tools.\n\n**npm carries `qiksy-mcp@1.44.0`** — the current build, with all sixty-two tools\nincluding a filterable full-page `qa_snapshot`, `qa_fill_json` (a whole wizard step —\ncustom dropdowns, calendars, cascaders, trees, tags and time included — in one call),\nthe `qa_pick_*` verbs for the composites, `qa_probe` for the one control that refuses,\nrecipes that make the second run cheap (`qa_recipe_save` / `qa_recipe_list` /\n`qa_recipe_apply`), and Agent control (`qa_click`, `qa_type`, `qa_press`, `qa_upload`,\n`qa_navigate`, `qa_open_isolated`, `qa_close_tab`). Just `npx qiksy-mcp` — no clone, no\nlocal path, no version to pin (it always fetches `latest`). (For hacking on the bridge\nitself, see **Local run** at the bottom.)\n\n**The manual installs itself, on the first run in a project.** The agent starts this process\nwith the project as its working directory, so the process already knows where the docs belong:\nit writes the full agent guide to `.claude/qiksy-bridge.md` and adds a short, marker-fenced\nblock to `CLAUDE.md` / `AGENTS.md` — the rules that decide whether a run goes well. **The\nbridge is the first browser tool in the project**; a form is one call; a control that refuses\nis a ladder, not a reason to reach for a second browser driver; and the only two things worth\nhanding over for are a screenshot and `evaluate`.\n\nIt is careful about it: only where a project actually is (a `.git`, a `package.json` or an\nagent file already present — a bare `$HOME` gets nothing), byte-idempotent (identical content\nis not rewritten, so `git status` stays quiet on every later launch), nothing outside the\nmarkers is ever touched, and **`QIKSY_MCP_NO_DOCS=1` turns it off**. The pointer is read at the\nSTART of a session, so it takes effect from the next one; the guide itself is readable\nimmediately, and the first tool reply says where it went.\n\nRun it by hand any time with **`npx qiksy-mcp init`** — same result, plus a printed summary.\nFlags: `--dir <project>`, `--out <path>`, `--no-claude` (print the block instead of writing it).\n\n## Tools\n\nSixty-six in total. **Read** — sense the page (all accept an optional `tabId` from `qa_tabs`; default = the tabs you attached to the agent session, or the active tab if you attached none):\n\n| Tool          | What it returns |\n|---------------|-----------------|\n| `qa_tabs`     | Every browser tab Qiksy can read, incl. which are **isolated multi-login sessions** (`isolatedSession` = the login name). Use a tab's `tabId` with the other tools to read that specific login. |\n| `qa_status`   | URL + error/warning/form counts + isolated-login name. |\n| `qa_read`     | The **rendered text** of the page or of one element (`ref` / `selector`). The companion to `qa_snapshot`, which maps what you can ACT on and caps every name at 80 characters — so a one-time code in a mail tab, an error paragraph or a generated invoice number is invisible to it and plain here. `innerText`, so hidden branches and a collapsed quoted history stay out. |\n| `qa_styles`   | **Computed styles of one element, its box in CSS pixels, and the design TOKENS in scope for it.** `color: rgb(37,99,235)` says what is drawn; `--accent: #2563EB` says which token decided it — which is how a built page is checked against a design without a screenshot and without measuring by eye. |\n| `qa_storage`  | The app's own `localStorage` / `sessionStorage`. Reading is free (`op: list \\| get`); `set` / `remove` / `clear` WRITE and take the same gates as a click, because changing a stored token changes what the app does. In a multi-login tab it reads the isolated session's store, not the profile's. |\n| `qa_axe`      | The full **axe-core** rule set against the live DOM — the industry engine, bundled in the extension, run on the page as it is right now with its real data and its real state. `qa_run_audit` is Qiksy's own faster sweep; this one is the standard. |\n| `qa_screenshot` | **A real picture** of the page or of one element. The panel is hidden and password and card fields are covered BEFORE the frame is taken. Its one condition: the tab must be in FRONT, because the browser photographs the active tab and this extension refuses to hand you a different one. |\n| `qa_wait_for` | Wait for ONE named condition and return the moment it is true: `appears` · `disappears` · `enabled` · `text` · `textGone` · `countOf` (+`atLeast`/`exactly`) · `announced` · `urlContains`. A named condition instead of a sleep — the sleep is either too short to be true or too long to be cheap. |\n| `qa_focus_walk` | Presses Tab through the page and reports the ORDER focus actually takes, what each stop is, and where the ring is invisible or the order jumps. Needs the tab in front, like anything that involves real keys. |\n| `qa_findings` | Findings (with selectors + detail); `severity` = `all` \\| `error` \\| `warning`. |\n| `qa_export`   | The full `qa-export/v1` bundle: findings, failed requests + bodies, form structure, repro steps, env. |\n| `qa_annotate` | **Marks that name an ELEMENT, not a coordinate.** A box, a numbered pin, or an arrow between two controls — placed from the page at capture time, so the same instruction draws the correct picture after a re-render or at another width. `fromFindings` makes the page's own findings draw themselves. A mark whose element is not there is reported, never dropped. |\n| `qa_focus_proof` | **Is focus visible on this control?** Two measurements instead of an argument: which ring-drawing property changed, and what fraction of the PIXELS differ between the two frames. A screenshot of a missing ring looks exactly like one of a faint ring; «0% of the pixels differ» does not. |\n| `qa_wiring`   | **Which error message is attached to which field, and which to nothing.** Proximity on screen is not association; assistive technology reads the attachment. Under-reports on purpose — a message inside its label, or a summary linking to its fields, is correct by another route. |\n| `qa_diff`     | **What changed, by control rather than by pixel.** «The Submit button moved 8px down, padding 8 → 12, and it went disabled» instead of «23 417 pixels differ». Text is not compared: a name or a total differs between two healthy runs, and that noise is why pixel diffing gets switched off. |\n| `qa_failure_gallery` | **How this screen looks when everything goes wrong** — empty, 500 with the server's own words, a held request, 403, a dropped connection — as one self-contained HTML sheet. It CAUSES the failures rather than waiting for them, and always removes the rules afterwards. |\n| `qa_collect`  | **A table instead of a page.** Name which nodes (`selector` / `role` / `nameContains`, scoped by `within`) and which properties to `take` — `text`, `value`, `name`, `role`, `tag`, `selector`, `href`, `state`, `geometry`, plus `attr:<name>` and `style:<property>` — and the answer is that table, once. «Every row with its price», «every input with what it holds» is one call here and a dozen with a snapshot plus a read per element; `value` is what a control HOLDS, which a snapshot cannot tell you. A property nobody can supply is named back rather than dropped. |\n| `qa_watch`    | **Watches for a few seconds** — the one question the other verbs cannot answer. Everything else reports NOW, so a toast that appears and leaves, a request fired by a timer, a late row or a live-region announcement are invisible to a snapshot taken before or after them, and polling misses the gaps between looks. `op:\"start\"` with `what`: `mutations` \\| `network` \\| `console` \\| `announcements`; then `op:\"read\"` for the buffer. **Every watch expires by itself** — `ttlMs` is capped at two minutes and there is no «until stopped», because a watch left running is silent and the readings taken after it are the ones that go wrong. Observes only: no consent beyond the bridge. |\n| `qa_gap`      | **What the bridge could not do**, in one sentence, appended to `~/.qiksy/gaps.jsonl`. The sanctioned way out of a dead end — the unsanctioned one is a quiet switch to another browser driver, which has none of your logins and ends the run's meaning. `op:\"list\"` reads them back. |\n| `qa_snapshot` | A full-page accessibility snapshot — interactive elements + landmarks with their roles, labels and a `ref` you can pass to `qa_click`/`qa_type`/`qa_press` instead of a CSS selector. Read-only. **One snapshot owns its refs**: taking a new one renumbers them, so `e12` from an earlier snapshot may now be a different control and the click will succeed on the wrong thing — keep only the latest snapshot's refs, or target by `name`. **Narrow it** on a component-heavy app: `fields_only` (form controls only), `roles: [\"button\"]`, `match` on the accessible name, `within: \"<selector of a container>\"` for one dialog or wizard step, `limit`, `format: \"tree\"` for about half the bytes. Filtering happens on the way out, so the refs you get back are as valid as the full tree's. |\n\n\n**Asking a reply for the fields you want.** The big reads (`qa_snapshot`, `qa_export`, `qa_findings`,\n`qa_axe`, `qa_run_audit`, and both new verbs) take `select` — keep only these field paths — and\n`omit` — drop these: `qa_snapshot { select: [\"nodes[].name\", \"nodes[].ref\"] }`. Dots walk into\nobjects, and a path through a list applies to every entry while keeping it a list, so anything you\nalready knew about the reply stays true. A path that matches nothing is reported back with the field\nnames that *are* there, so a mistyped field costs one call rather than a bigger request. Paths only:\nno expressions and no code — the caller names a field, exactly as every verb here names an element\nrather than a program.\n\n**Command** — drive Qiksy's own UI / analysis (never the app under test; all accept `tabId`):\n\n| Tool            | What it does |\n|-----------------|--------------|\n| `qa_open_panel` | Open/close the Qiksy side panel and optionally jump to a tab (`forms` \\| `findings` \\| `tour` \\| `tools` \\| `history` \\| `roles`). |\n| `qa_run_audit`  | Run the a11y/markup audit on the current DOM and return the findings (also refreshes the panel). Static, read-only DOM analysis. |\n| `qa_tour`       | Return the generated exploratory-testing checklist (from forms + interactive surfaces), auto-checked from the recorded session — raw material for test cases. Markdown + structured items. |\n| `qa_report`     | Generate Qiksy's self-contained HTML session report and return the HTML (needs History recording to have captured steps). |\n| `qa_spotlight`  | Dim + outline an element by CSS selector so the human can see what the agent means. A non-destructive overlay — no click/focus/mutation. |\n| `qa_focus_tab`  | Bring a tab in front of the human — activate it, raise its window — so a walkthrough happens where they are actually looking. The one verb that deliberately takes their attention: scoped to the app under test and its isolated logins, and meant for \"show me\", not for the agent's own convenience. Pair with `qa_spotlight`, whose `label` turns a run of clicks into \"step 3 of 6\". |\n\nBecause tools accept a `tabId`, an agent can read **several logins at once**: call `qa_tabs`, then `qa_export` per isolated tab to compare what admin vs. member vs. anon each see.\n\n**Agent control (Pro)** — these ACT on the app under test:\n\n| Tool       | What it does |\n|------------|--------------|\n| `qa_click` | Click an element by `ref`, by CSS selector, or by the control's accessible **`name`** (`{ name: \"Next\", role: \"button\" }`). Use the name right after a fill: a fill re-renders the step, and a ref from before it either gets refused as stale or — worse, after any new snapshot — silently means a different control. The bridge resolves a name against a snapshot it takes at that moment. Sends the full pointer sequence (`pointerdown` → `mouseup` → `click`), so Radix/shadcn/MUI components that listen for `pointerdown` react like they would to a real click. Scrolls into view first; refuses a selector that matches nothing or has zero size instead of silently doing nothing. |\n| `qa_type`  | Set ONE field of **any kind** to a value. This is the extension's own fill engine, not a keystroke emulator, so the same call covers text/number/date inputs and textareas (native setter + `InputEvent`, so React/Vue controlled inputs keep the value), native `<select>` (matched against the option labels), checkboxes and radios, sliders, contenteditable rich text — **and** the widgets that look like they need clicking: Radix/shadcn, MUI, Ant, react-select dropdowns, typeahead comboboxes, popup date & time pickers. It opens the popover, waits for the options, picks the match and verifies the trigger changed. Reports `stuck: false` when the field rejected the value — masked, read-only or controlled. |\n| `qa_type` + `raw` | **Put the value straight in.** Writes the string verbatim through the native value setter (React swaps `value` for its own tracked property, so a plain assignment is reverted on the next render) and commits with a key. Measured: a date **0.30s against 26s** through its calendar, a time 0.30 against 14, a range 0.60 against 35. For controls that PARSE text — dates, times, range ends, tags — in the format the control DISPLAYS. `pick: true` adds the other half for a select: write to filter, then click the matching option. `open: true` opens the list first (a select filters only while it is up); `blur: true` for a tags field, which keeps its value only once focus leaves. A select that must choose from its own list keeps the ordinary engine path. |\n| `qa_type_many` | Fill a WHOLE form, or one step of a wizard, in ONE call: an array of `{ ref \\| selector, value, action? }`. **Every widget kind `qa_type` drives goes in the same batch** — a batch where half the entries are dropdowns and dates is the normal use, not an edge case. Prefer `ref`: a form built from a repeated component gives several inputs the identical cssPath, and a batch of selectors would pour every value into the first match. Returns a per-field result list + filled/total; only an entry that came back `ok:false` is worth a follow-up call. |\n| `qa_fill_json` | Fill a form from a plain `{ \"Field label\": \"value\" }` object — a value of **`\"click\"`** presses the thing instead (a chip, a custom radio, a switch, any control that takes no value), and **`\"Label#2\"`, `\"Label#3\"`** address the 2nd and 3rd control sharing one label, which is how a form built from a repeated component is filled — **the same shape as the JSON behind the panel's `{ }` editor and its ⚡Fill button**. It snapshots for you, resolves the labels (exact → truncated → contains) and hands the whole lot to the batch filler, so the agent needs no refs and no snapshot of its own: one call for a form it has never seen. Keys that matched nothing come back **with the page's real field names**, so the next call fixes its own key. Keys are read in order, so on repeated labels the Nth key takes the Nth control. `dry_run` resolves without filling. |\n| `qa_upload` | Attach a file to an `<input type=file>`, including the hidden one behind a styled dropzone: `path` (this process reads it, so the bytes never enter the agent's context), `content` as base64, or a hostile `fixture` built in the page. `files: [...]` attaches several in one round trip. |\n| `qa_pick_date` | An EXACT date in one call, whatever library owns the calendar. Types it first (two calls, and correct for most inputs); if the value does not stick, opens the picker and steers it — MUI X's year view, Ant's clickable header year, react-datepicker's month/year dropdowns, plain arrows otherwise — stepping until the header agrees, then clicking the day. Reports `via` and a `trail`, so an unrecognised picker is visible rather than silent. **Use it for MUI X date fields**: they are three contenteditable sections the component rebuilds from its own state, so a written \"14\" can land in the YEAR and the day stay empty. |\n| `qa_pick_path` | A value that lives across several levels, in one call: an Ant Cascader (country → region → city), a submenu chain, a drill-down. Opens the control and clicks each level on a FRESH snapshot, because opening a level is what re-renders the popup. A level that never appears is reported with the ones that did. |\n| `qa_pick_tags` | A whole list of tags on a control that CREATES its values — Ant's Select in `mode=\"tags\"`, and every chips input built the same way. Per tag it types, **verifies the text is still in the field**, then presses the key, on a ref re-resolved each time. The verification is the whole point: when a tag commits the component clears its own search input, the re-render can wipe a value written a moment earlier, and the key then re-submits the PREVIOUS text — which in tags mode toggles that tag back **off**, so the form loses the tag you added first. It also never clicks the field first (a click moves the caret out of the search input). |\n| `qa_pick_time` | A time on a column-based picker (Ant's TimePicker). Needed because the cells are bare list items with NO role — invisible to the snapshot — and the ordinary fill path misreads the control as a date field, types an ISO date into it and leaves it empty *while reporting success*. This reads each column's text, finds which entry is your value, clicks that child, then presses the panel's own OK — which is not optional: without it the value stays provisional. |\n| `qa_pick_range` | Both ends of a date range that live in ONE control (Ant's RangePicker). Not two `qa_pick_date` calls: the control walks from the start panel to the end panel itself, and approaching it cold a second time restarts the range on the start input. Says so plainly when the panel closes after the start — then the end is its own field. |\n| `qa_press` | Dispatch a key (`Enter`, `Escape`, `Tab`, …). Without a selector it goes to the focused element, like a real keyboard. |\n| `qa_probe` | **What kind of widget is this, and how do I drive it?** — for the one control that refused a value. Judges by SHAPE first (role, tag, name, state, neighbours), which settles a sectioned date field, a file input, a switch or a slider **without touching the page**; when the shape says nothing — the case of a widget hand-rolled from `<div>`s, where role is `generic` and there is no name and no state — it clicks once, reads what the page DID, and presses Escape to put it back. Returns the `kind`, the `verb` that drives it, and `why`. The verdict worth the most is `portalled-invisible`: it opened and the accessibility tree gained NOTHING, which means role-less markup in a portal (Ant Design) and the parts must be addressed by CSS selector. |\n\n| `qa_hover` | Put the pointer on something **and leave it there** — a tooltip, a menu that opens on hover, a row that shows its actions only under the cursor. A click would commit to something; this does not, and the hover survives the next read, which is the whole point. |\n| `qa_click_point` | A click at an x/y INSIDE a named element — the canvas, the map, the chart, the signature pad: surfaces with no controls to name. The coordinates are relative to that element, so they survive a re-layout that would move an absolute point. |\n| `qa_drag_point` | A drag from one point to another inside a named element: a slider handle pulled along its track, a map panned, a range brushed on a chart. Same reasoning as `qa_click_point` — it names an ELEMENT and moves inside it. |\n| `qa_reload` | Reload the tab and wait until the page answers again. An action, not a read: an unsaved form dies with it, which is why it takes the same gates as a click. |\n| `qa_dialogs` | What the page's **native dialogs** do — `beforeunload` (\"Leave site?\"), `confirm`, `alert`, `prompt`. Nothing can click those: they are browser chrome, outside the document. This decides their answer instead, per tab, off by default, and **every suppressed dialog is reported as a finding carrying the question the page asked and the answer given** — the app DID ask; Qiksy answered. `op:\"list\"` is free; setting one takes the drive gates, because an auto-accepted `confirm()` can be the one in front of Delete. |\n\n**One step of a multi-step form is about three calls**, and this is the single biggest\ndifference between a fast run and a slow one:\n\n```\nqa_snapshot { fields_only: true, roles: [\"button\"] }   → the step's controls, not the whole app\nqa_type_many { fields: [ …the entire step… ] }          → dropdowns, dates and inputs together\nqa_click { ref: <Next> }                                → its `changed` says the step advanced\n```\n\n**When you already hold the data**, skip the mapping entirely — `qa_fill_json { fields: { \"Initiative\nname\": \"Test run\", \"Country\": \"Ukraine\", \"Start date\": \"2026-08-01\", \"I agree\": true } }` is the whole\nstep in one call, labels instead of refs. Keep `qa_snapshot` + `qa_type_many` for when you must pick a\nspecific control among duplicates.\n\nOpening a dropdown, snapshotting to read its options and clicking one works, but it pays\na settle window twice per field and costs three round trips where the batch costs a share\nof one. Keep it for an entry the batch reported `ok:false`.\n\n**Recipes** — so the second run is the cheap one. Refs live for one snapshot and a new\nsession starts with nothing, which is why a form that took twenty calls to work out used to\ntake twenty again. These three keep the flow on your machine, in field NAMES:\n\n| Tool | What it does |\n|------|--------------|\n| `qa_recipe_save` | Writes what the agent just filled, uploaded and clicked to `~/.qiksy/recipes/<name>.json`, folded into steps (a click after a group of fills is what ends a step of a wizard). Pass `steps` to write or correct one by hand. Local only — no browser, no Pro. |\n| `qa_recipe_list` | The saved flows, newest first: host, step count, the first step's field names. Worth one call before starting anything form-heavy. |\n| `qa_recipe_apply` | Replays a recipe against the page as it is **now** — per step it snapshots, matches every field by accessible name (exact → truncated → contains → the stored cssPath), fills the step in one batch, attaches its uploads and clicks the advance control. `values` overrides the stored data (one flow, many datasets); `dry_run: true` resolves everything and touches nothing; `all: true` walks the remaining steps — which means it will click a final Submit, so keep it stepwise on anything irreversible. A target the page no longer has comes back under `missing` instead of failing silently. |\n\nThe recipe is a plain JSON file you own — editable, deletable, never uploaded.\n`QIKSY_RECIPES_DIR` moves the folder (e.g. into the project, to share flows with a team).\n\n### Pictures, and a shelf both hands can reach\n\nA screenshot usually leaves the tool the moment it is taken, and everything after that is\ndescription. Here it stays: the extension keeps a **shelf** of shots, the tester can draw on one\nby hand in the panel, and the agent reads those marks back as DATA rather than as pixels — which\nis the difference between \"look at the red box\" and a mark that says which element it points at.\n\n| Tool | What it does |\n|------|--------------|\n| `qa_shot_list` | The shots on the shelf — name, when, size, and the marks each one carries. |\n| `qa_shot_read` | One shot back out: its image and, separately, its marks with the element each one names. |\n| `qa_shot_mark` | Add marks to a shot already on the shelf — a box, a numbered pin, an arrow between two controls, a note. Marks are DATA on top of the picture, so re-drawing one changes every document that holds it. |\n| `qa_shot_crop` | Crop a shot to a region or to one marked element, keeping the marks that survive the cut. |\n| `qa_shot_drop` | Forget one shot. |\n\n`qa_annotate` is the other way in: it marks the LIVE page by naming elements and photographs\nthe result, so the same instruction draws the correct picture after a re-render or at another\nwidth.\n\n### Reports — and the hour after one is written\n\n| Tool | What it does |\n|------|--------------|\n| `qa_report` | Qiksy's own session report as self-contained HTML (needs History recording to have captured steps). |\n| `qa_report_build` | **Build a report from BLOCKS you pass** — a heading, a paragraph, a finding with what was expected and what happened, a picture held by NAME from the shelf. One assembly, so a document written by hand in the panel and one written by an agent are the same document. `save: true` keeps it in the extension under a name. |\n| `qa_reports` | The reports the extension is holding — so «send me the one from this morning» has an answer that is not «look in your Downloads». |\n| `qa_report_get` | Take one back out, as HTML or written to a path you name. Open it and print to PDF; the structure is the same on paper. |\n| `qa_report_drop` | Forget one. |\n| `qa_draft` | **The report being written right now** — the same draft the person is filling in the panel, with every line and its POSITION. A screenshot they flicked in this morning is in it; a line you add appears on their screen. |\n| `qa_draft_add` | Put a line in as it is noticed — the same block shapes `qa_report_build` takes. It answers with how many lines actually LANDED, which at the cap is not the same as how many were offered. |\n| `qa_draft_edit` | Rewrite the line at a position, in place. Deleting and re-adding would move it to the end, which is rarely where it belongs. |\n| `qa_draft_move` · `qa_draft_drop` | Reorder by destination, or take a line out. |\n| `qa_draft_meta` | The document's own title, and what kind it is: issues · verified · notes. |\n| `qa_draft_clear` | Abandon it. There is no undo here and the draft may be an hour of somebody else's work — read it first. |\n| `qa_draft_build` | Turn the draft into the document, kept by default. **The draft is only emptied if the document was really kept** — when the browser has no room the HTML still comes back and the lines stay. |\n| `qa_report_edit` | Read back the blocks a saved document was built from, change them, rebuild it under the SAME name. The run's own context is carried over and is not rewritten. |\n\n### Scenarios — a flow recorded once, replayed later\n\nRecipes (above) are the agent's own journal folded into steps. Scenarios are the **tester's**:\nrecorded by hand in the panel, stored per project with tags, and visible to the agent so it never\nhas to ask somebody to read names out of a panel.\n\n| Tool | What it does |\n|------|--------------|\n| `qa_scenarios` | The saved scenarios, with their projects and tags. Free — listing is a read. |\n| `qa_scenario_get` | One scenario's steps, as data. |\n| `qa_scenario_save` | Write or correct one. It stores data and touches no page, so it sits with the reads. |\n| `qa_scenario_run` | Replay one against the page as it is now. This types and presses, so it takes the drive gates — and it stops at the first field the page no longer has rather than filling the wrong thing. |\n| `qa_suite_run` | A whole project of scenarios as ONE set, with a single answer about the lot. |\n\nPasswords and card numbers are recorded as **fields, never as values** — a scenario is a document\nthat can be shared, and an imported one is stripped of every address that leaves its own site\nbefore it can run.\n\n### Saying the run is over\n\n| Tool | What it does |\n|------|--------------|\n| `qa_done` | **Call it when the work is actually over.** The mark on every driven tab the person is NOT looking at then pulses slowly, so somebody who walked away from the screen can see from across the room that it ended; it stops by itself when they look at that tab, and a tab already in front is never pulsed. A short sound plays too, for somebody not looking at the browser at all. It is a nudge, not a report — still say what you did. It is not a progress beat either: called between steps it teaches people to ignore it, which costs the signal its only job. |\n\n### Qiksy talking to you\n\nNow and then a tool result carries `qiksySays` — a line for the **human**, which the agent is asked\nto pass on in your language. It says hello the first time, and after that it speaks only when\nsomething happened: your agent went quiet for a long time, the same control got clicked three times,\na couple of fields refused their values in a row, or a long form is worth saving as a recipe. It is\nblunt and it swears mildly, and it is rationed on purpose — an 8-minute floor, a 10–30 minute gap\nper kind of remark, five lines per session, so 40-odd calls produce at most one.\n\n| Variable | Effect |\n|---|---|\n| `QIKSY_MCP_VOICE=rude` | Default. The character, as described above. |\n| `QIKSY_MCP_VOICE=nice` | Same moments, polite wording. **Chosen automatically in CI** (`CI`, `GITHUB_ACTIONS`, `GITLAB_CI`, `BUILDKITE`, `TEAMCITY_VERSION`, `JENKINS_URL`) so a pipeline log and a customer demo stay strictly business. |\n| `QIKSY_MCP_VOICE=off` | Nothing addressed to the human at all. |\n| `QIKSY_MCP_QUIPS=0` | Silences the voice *and* the decorative `qx …` line on every result. |\n\n**Chaining** — what makes a multi-page, multi-role run reliable:\n\n| Tool               | What it does |\n|--------------------|--------------|\n| `qa_wait_ready`    | **Free.** Block until the tab finished loading AND a fresh Qiksy answers in the new document. Call it after anything that navigates — a submit, a link click, `qa_navigate` — before the next `qa_type`/`qa_click`, or the call lands on a page still being replaced. `timeoutMs` default 15000, max 60000. |\n| `qa_navigate`      | Point a tab at a URL and wait for that same ready signal (built in). |\n| `qa_open_isolated` | Open one or MANY tabs, each with its own private session — `sessions: [\"admin\",\"manager\",\"member\",\"viewer\"]` or `count: N` (max 12). Returns a `tabId` per login; pass it to any tool to run the whole flow as that user. **Also needs the multi-login confirmation**, because it intercepts the site's cookies — a separate acknowledgement from Agent control. |\n| `qa_close_tab`     | Close one tab (`tabId`) or a batch (`tabIds`) — how you tidy up after a role matrix. |\n| `qa_mock`          | Answer a request from a **rule** instead of the server — a 500, an empty list, a malformed payload, a 30s delay, a dropped connection (`fail`). The failure branches are the ones nobody tests, because a working backend will not produce them on demand; `times: 1` mocks the first call and lets the retry through, which is how you prove a retry exists. `url` is a substring or `/regex/`. A rule belongs to **one tab**, survives its reloads, dies with it, and covers the page's own `fetch`/`XHR` in the **top frame only** — not the document, subresources, WebSocket/EventSource, `sendBeacon`, iframes or the page's service worker. Mocked answers are marked `(mocked)` in the session, the HAR and the report. `op: \"list\"` is free; `set`/`remove`/`toggle`/`clear` take the gates below. **Clear your rules when done.** |\n\nThree independent gates, re-checked on **every** call, all inside the extension where the server cannot bypass them:\n\n1. a **Pro** licence (or the trial) — note this is *also* what the socket itself requires, so on the bridge nothing is free once a trial lapses;\n2. the **`drive` consent**, granted separately from the bridge's own (Qiksy panel → Tools → **Agent control**) and revoked when you switch it off, so the warning is faced again next time;\n3. the bridge itself — loopback only, shared token, off by default.\n\nFail either of the first two and the call returns `pro-required` / `consent-required` and does nothing. **It acts for real**: it can submit, spend and delete under your live login, with no undo. Point it at test environments.\n\n## Driving the browser: Agent control is the hands\n\n**Agent control (Pro)** drives the browser *you are already using* — the session you logged into by hand, including isolated multi-login tabs. Nothing to launch, no second browser, no re-authentication. It clicks, types, fills a whole wizard step in one call, drives calendars, cascaders, trees, tags and time pickers by their own verbs, attaches files, navigates, and opens isolated logins. **This used to say \"pair Playwright MCP for the clicking\"; that advice is out of date** — it predates `qa_fill_json`, the `qa_pick_*` verbs and `raw`, and following it now costs you the one thing the bridge is for.\n\n**Rule zero for an agent on this bridge:** do not switch to a second browser driver (Playwright, Puppeteer, Selenium, CDP) because a control looked unfamiliar or refused once. That driver opens a *different, empty* browser — none of your logins are in it, so the run stops being the test you asked for. A refusal is a rung on a ladder: `qa_probe { name }` → `raw: true` → the widget's own `qa_pick_*` verb → a CSS selector (every verb takes one) → `qa_click { name }` and read the `widget` verdict → `qa_focus_tab` if the tab is in the background.\n\n**The one genuine gap**, and the only honest reason to reach for another tool:\n\n- **arbitrary JavaScript** — no `evaluate`, by design (a Web Store requirement). Every verb names an element, never a program.\n\n**Pixels are no longer on that list.** `qa_screenshot` returns a real picture of the page or of one element, with the panel hidden and password and card fields covered before the frame is taken; `path` writes it to a file instead of spending your context on base64. One condition, and it is real: the browser photographs the window's **active** tab, so a background tab cannot be photographed and Qiksy refuses rather than handing you a page you did not ask about. Reach for the numbers first anyway — boxes in CSS pixels (`qa_snapshot { geometry: true }`), computed styles and the design token behind a colour cost nothing and work in a background tab.\n\nFor those, **[Playwright MCP](https://github.com/microsoft/playwright-mcp)** is the right neighbour — and it is also the right tool when a run must be reproducible from cold, in CI, with waits, tracing and parallel contexts. It can attach over CDP to the very browser Qiksy runs in ([wiring below](#wiring-both-servers-playwright-mcp-needs-a-cdp-browser)), so a screenshot comes from the session you are actually in.\n\n**Example workflow (Jira story → verified test cases):**\n\n1. Drop a Jira story/acceptance criteria into your agent.\n2. The agent walks the flow with **Agent control** — `qa_fill_json` per step, `qa_click` by name, `qa_wait_ready` after anything that navigates.\n3. After each step it reads what *actually* happened (`qa_export`, `qa_run_audit`, `qa_findings`) — console/JS errors, failed requests **with server bodies**, a11y/markup issues, the detected form structure.\n4. The agent reconciles the story against reality, then writes test cases (using `qa_tour` for coverage) and pulls a `qa_report` as the artifact — with `spec`, the report leads with its verdict per acceptance criterion.\n\n**How fast, and why it matters.** Measured on the same page and question (\"what forms are here with selectors, and what is broken?\"): `qa_export` answers in **~9 ms** from an already-open tab, against **~2.5 s** for Playwright from a cold start — but that gap is almost entirely browser launch. With both browsers already up it is ~9 ms vs ~28 ms for an equivalent DOM scrape: the same order. The reason to use Qiksy is not raw speed, it is that the 9 ms carries *meaning* — `kind: \"first-name\"`, the label, `required`, `maxLength`, plus findings, failed requests with server bodies and repro steps in the same payload. A scrape returns raw DOM and leaves the agent to work out what each field is; matching the rest needs more code and a reload to attach console listeners before load.\n\nSo: **Agent control for anything that happens in the live, already-authenticated session — which is nearly everything. Playwright when you need a picture, `evaluate`, or a run that starts from cold in CI.** Reading is worth doing through Qiksy either way.\n\n### Wiring both servers (Playwright MCP needs a CDP browser)\n\nOnly worth doing for the two gaps above — screenshots and `evaluate`. Playwright MCP drives a browser over the **Chrome DevTools Protocol** — a *normal* Chrome window can't be driven, you must start Chrome with a debugging port so Playwright can attach. Qiksy must be **installed in that same Chrome** (from the Web Store, or loaded unpacked) so its content scripts + bridge run there.\n\n1. **Launch Chrome with the debug port** (quit other Chrome windows first, or use a separate `--user-data-dir`):\n   ```bash\n   # macOS\n   \"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\" --remote-debugging-port=9222\n   # Windows:  \"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" --remote-debugging-port=9222\n   # Linux:    google-chrome --remote-debugging-port=9222\n   ```\n2. **In the Qiksy popup** → *Agent bridge*: **On**, **Generate** a token (it saves as you go), then **📋 Copy agent config**.\n3. **Register both MCP servers** in your agent — one config, paste and go. Claude Code `.mcp.json` (project root):\n   ```json\n   {\n     \"mcpServers\": {\n       \"playwright\": {\n         \"command\": \"npx\",\n         \"args\": [\"@playwright/mcp@latest\", \"--cdp-endpoint\", \"http://127.0.0.1:9222\"]\n       },\n       \"qiksy\": {\n         \"command\": \"npx\",\n         \"args\": [\"-y\", \"qiksy-mcp\", \"--port\", \"7333\"],\n         \"env\": { \"QIKSY_MCP_TOKEN\": \"YOUR_TOKEN\" }\n       }\n     }\n   }\n   ```\n   Now the agent has **hands** (Playwright, attached to your real Chrome) and a **QA brain** (Qiksy).\n\n### Multi-login (RBAC) with the agent\n\nQiksy runs several logins on one domain at once — one per tab, each with its own cookie jar + virtualized storage. The reliable division of labour:\n\n- **You spin up the logins** (a few clicks, one-time): Qiksy panel → **Roles** → **＋ Isolated tab** for a fresh empty session, or **⧉** on a saved role to open it isolated. (There's also an **auto-isolate** toggle per site: new tabs *you* open — Ctrl/Cmd+T — get their own session automatically. Note: tabs opened programmatically by Playwright carry an opener and are deliberately **not** auto-isolated, so they don't hijack OAuth-popup / `target=_blank` flows — create isolated logins from the Roles panel instead.)\n- **The agent reads every login at once**: `qa_tabs` lists them with `isolatedSession` = the login name and a `tabId`; then `qa_findings`/`qa_export` with that `tabId` reads each. So the agent can diff what **admin vs. member vs. anon** each see — permissions leaks, missing guards, role-specific errors — in one pass.\n- **The agent drives within a login** with Agent control — pass that tab's `tabId` to `qa_click` / `qa_fill_json` / `qa_type_many` and it acts as that user; Qiksy senses the result per tab.\n\n## Setup\n\n### The short way: one command\n\n```bash\nnpx qiksy-mcp connect\n```\n\nRun it **in the project you work in**. It picks a free port, mints a token, writes the `qiksy`\nserver into every agent config it finds on the machine — Claude Code (`.mcp.json`), Cursor\n(`~/.cursor/mcp.json`), VS Code (`.vscode/mcp.json`, which uses its own `servers` key), Windsurf,\nClaude Desktop — and puts the token on your clipboard. Then: **popup → Agent bridge → On → paste**,\nrestart the agent, ask it to call `qa_status`.\n\n`npx qiksy-mcp init` does the same **and** writes the agent guide into the project, which is what\nstops your agent proposing Playwright on the first unfamiliar field. Use `init` the first time.\n\nWhat it will not do: it writes a config **only where that client's own folder already exists**, so\nyou never get a Windsurf config for an editor you do not have; it keeps every other server already\nin those files; it refuses to touch a config it cannot parse rather than overwriting it; and on a\nsecond run it **keeps the token that is already there**, so a browser you have already paired stays\npaired. On Windows the entry is written as `cmd /c npx …`, which is the form that actually starts —\na bare `npx` fails in about half the clients there.\n\nFlags: `--dir <path>` (which project), `--port <n>`, `--token <value>`, and `--no-connect` on\n`init` if you want the guide without the wiring.\n\n### The manual way\n\n1. **In the extension popup** → *Agent bridge*: toggle **On**, click **Generate** for a token, keep the default port `7333` (or pick your own). It **saves as you go** — there is no separate Save step.\n2. **Click 📋 Copy agent config** in the popup — it copies the whole `mcpServers` block below with **your port and token already filled in** — and paste it into your agent's MCP config file (below). No hand-editing the token or port.\n3. **Watch the status line** under the toggle. 🟡 *Waiting…* until your agent's `qiksy-mcp` is up, then 🟢 *Agent connected on port 7333*. If it stays yellow or turns red, see [Connection status & troubleshooting](#connection-status--troubleshooting).\n\nThe token is the only thing guarding the bridge — localhost is reachable by any local process/page, so keep it secret and unique.\n\n### Connection status & troubleshooting\n\nThe popup shows the live link state, so you fix the right thing instead of guessing:\n\n| Status | Means | Fix |\n|--------|-------|-----|\n| 🟢 **Agent connected** | Socket open on that port, token matched. | Nothing — you're live. |\n| 🟡 **Waiting for the agent** | Bridge on, but nothing answering on that port. | Start your agent so `qiksy-mcp` runs, and make sure **its `--port` matches the popup's port**. The #1 snag: docs pin `7333` but the agent was launched on a different port — the numbers must match. |\n| 🔴 **Token rejected** | Something answered, but the shared secret didn't match. | The popup token and the agent's `QIKSY_MCP_TOKEN` must be identical. Re-copy with **📋 Copy agent config** and repaste. |\n| 🔴 **Another browser took over** | A second browser connected on the same port+token and claimed the slot. | Expected when switching browsers. To run **both at once**, give each its own port (see below). To reclaim, toggle the bridge **off then on**. |\n| 🔴 **Qiksy Pro required** | Trial ended; the bridge is a Pro surface. | Activate a license key in the popup. |\n\nOne failure has nothing to do with the popup, and the tool result says so in words: **“Port … is held by something this bridge cannot share it with.”** Another process (or an older `qiksy-mcp`, or one on a different token) owns the port, so *this* agent window has no link — the extension and the browser are fine. Restart or update whatever holds the port, or give this window its own `--port`.\n\n### Two browsers at once\n\nOne bridge is **one port + one token = one browser**. Pointing a second browser at the **same** port+token doesn't double up — it **takes over the slot** (last writer wins), and the first browser's status flips to *Another browser took over*. That's exactly how you **switch** between browsers. To run **both simultaneously**, give each its own port and register a second server name:\n\n```json\n{ \"mcpServers\": {\n  \"qiksy\":   { \"command\": \"npx\", \"args\": [\"-y\", \"qiksy-mcp\", \"--port\", \"7333\"], \"env\": { \"QIKSY_MCP_TOKEN\": \"TOKEN_A\" } },\n  \"qiksy-2\": { \"command\": \"npx\", \"args\": [\"-y\", \"qiksy-mcp\", \"--port\", \"7334\"], \"env\": { \"QIKSY_MCP_TOKEN\": \"TOKEN_B\" } }\n} }\n```\n\nSet browser A's popup to `7333`/`TOKEN_A` and browser B's to `7334`/`TOKEN_B`. One agent drives one browser per bridge — a single bridge can't fan out to two browsers; different ports are independent links that never fight over the slot.\n\n### Several agent windows, one browser (automatic since 1.1.0)\n\nThe mirror case, and it needs **no setup at all**: open a second Claude Code / Cursor window on the same project — or a third — and they all reach the same browser through the same popup toggle. Nothing to change, no second port, no second token.\n\nEach MCP client starts its own copy of `qiksy-mcp`, but only one process can own the loopback port. The first to bind it becomes the **hub** and holds the extension's socket; every later one detects the taken port, dials the hub with the same token and relays its calls one hop further. Close the hub's window and the rest race for the port; whoever wins becomes the new hub and the extension reconnects on its own.\n\nTwo things worth knowing:\n\n- **Reading is safe from any window** (`qa_tabs`, `qa_status`, `qa_snapshot`, `qa_findings`, `qa_export`). When several agents *drive*, give each one its own tab — pass `tabId` from `qa_tabs`, or let each open its own isolated login with `qa_open_isolated`. Two agents clicking in the same active tab will fight, and neither will know why.\n- **Both halves must be 1.1.0+.** Against an older hub the new window refuses to join and says so, rather than stealing the browser from it — a pre-1.1 server would mistake a sibling for a browser and kick the real extension out of its slot.\n\n### Claude Code\n\n```bash\nclaude mcp add --transport stdio qiksy --env QIKSY_MCP_TOKEN=YOUR_TOKEN -- npx qiksy-mcp --port 7333\n```\n\nor `.mcp.json` at the project root:\n\n```json\n{ \"mcpServers\": { \"qiksy\": {\n  \"type\": \"stdio\",\n  \"command\": \"npx\", \"args\": [\"-y\", \"qiksy-mcp\", \"--port\", \"7333\"],\n  \"env\": { \"QIKSY_MCP_TOKEN\": \"YOUR_TOKEN\" }\n} } }\n```\n\n### Cursor (`~/.cursor/mcp.json`), Windsurf (`~/.codeium/windsurf/mcp_config.json`), Cline (`cline_mcp_settings.json`)\n\nSame canonical shape:\n\n```json\n{ \"mcpServers\": { \"qiksy\": {\n  \"command\": \"npx\", \"args\": [\"-y\", \"qiksy-mcp\", \"--port\", \"7333\"],\n  \"env\": { \"QIKSY_MCP_TOKEN\": \"YOUR_TOKEN\" }\n} } }\n```\n\n### Zed (`settings.json`) — key is `context_servers`, `source` is required\n\n```json\n{ \"context_servers\": { \"qiksy\": {\n  \"source\": \"custom\",\n  \"command\": \"npx\", \"args\": [\"-y\", \"qiksy-mcp\", \"--port\", \"7333\"],\n  \"env\": { \"QIKSY_MCP_TOKEN\": \"YOUR_TOKEN\" }\n} } }\n```\n\n### VS Code native (`.vscode/mcp.json`) — top-level `servers`, `type` required\n\n```json\n{\n  \"inputs\": [{ \"type\": \"promptString\", \"id\": \"qac-token\", \"description\": \"Qiksy MCP token\", \"password\": true }],\n  \"servers\": { \"qiksy\": {\n    \"type\": \"stdio\",\n    \"command\": \"npx\", \"args\": [\"-y\", \"qiksy-mcp\", \"--port\", \"7333\"],\n    \"env\": { \"QIKSY_MCP_TOKEN\": \"${input:qac-token}\" }\n  } }\n}\n```\n\n## Local run (dev)\n\n```bash\nQIKSY_MCP_TOKEN=YOUR_TOKEN node server.mjs --port 7333\n```\n\nLogs go to **stderr** (stdout is the JSON-RPC channel). You should see `bridge listening…` and, once Chrome has the extension with the bridge enabled, `extension connected`.\n\n## Notes / limits\n\n- **One tab at a time**: tools read the *active* tab in the last-focused Chrome window. Focus the app under test.\n- **Service-worker sleep**: if Chrome idles the extension's worker, the socket drops and reconnects automatically (≤~30 s). If a tool times out, retry.\n- **Security**: bound to `127.0.0.1` only; connections without the matching token (or from a non-extension origin) are closed before any data is sent.\n\n## Follow the build\n\nWe build Qiksy in the open — what shipped, what broke, what's next.\n\n- **LinkedIn** — [linkedin.com/company/qiksy](https://www.linkedin.com/company/qiksy)\n- **Site** — [qiksy.app](https://qiksy.app)\n","readmeFilename":"README.md"}