{"_id":"opencli-mcp","_rev":"21-5eb6ea17bdb7ec7667fff7f27428e010","name":"opencli-mcp","dist-tags":{"latest":"0.0.31"},"versions":{"0.0.10":{"name":"opencli-mcp","version":"0.0.10","license":"Apache-2.0","_id":"opencli-mcp@0.0.10","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"bin":{"opencli-mcp":"dist/src/main.js"},"dist":{"shasum":"213572409dd2d50f11057c0664317c40a8030a88","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.10.tgz","fileCount":631,"integrity":"sha512-QTM61R8J0yiPNZbf/vV9xA5sX4Z/FX6NVt3+cGdlmmRJuoUoLuweWQrB0VnuQgNbKlZoUu9bj0aEqrV44ZXc8A==","signatures":[{"sig":"MEQCIGoPuwgd06TLDll5sCBECkXyXVwaUVHLyCVzZB6xwvl7AiApLtfi/ghSeKrhTEYqJThNUkeRYs33MZ5v/AwEvFAmjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4250265},"type":"module","engines":{"node":">=22"},"gitHead":"e7529f6e545e2d6d6a05d303b8efcbf1ef751749","scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","smoke":"node scripts/smoke.mjs --dist","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"jackwener","email":"jakevingoo@gmail.com"},"_npmVersion":"10.9.7","description":"OpenCLI reborn as an MCP-native browser runtime: Chrome-spawned host, object API + code mode, site capabilities, recon.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","undici":"^6.27.0","js-yaml":"^4.3.1","turndown":"^7.2.2","commander":"^14.0.3","cli-table3":"^0.6.5","playwright-core":"^1.63.0","web-tree-sitter":"^0.27.0","@jackwener/opencli":"file:vendor/opencli","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0","tree-sitter-javascript":"^0.25.0","@opencli-mcp/adapter-sdk":"file:packages/adapter-sdk","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.10_1790092136551_0.6699949369509712","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"opencli-mcp","version":"0.0.11","license":"Apache-2.0","_id":"opencli-mcp@0.0.11","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"bin":{"opencli-mcp":"dist/src/main.js"},"dist":{"shasum":"be9e63da53ad09d7efb2d3c293ec5a5ca2e80787","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.11.tgz","fileCount":639,"integrity":"sha512-LnCP9HV2wi8OcjSikQUlniDXYRTbL4W1RGmTLPShVWg6UWTzkydKpL4QO3Q9LbWzeP1booDrgD/p3u9Qd1ztrw==","signatures":[{"sig":"MEUCIAG/Sst8lnA+MRCZCH/JjnGGJTRacpNbIZXB+G88o8KJAiEArLVQtTYkES4raYhVHn1PSYUVzhkLwHEfC0HVhcmaweQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDffXt9YDoUT6Xb9gxIInb6KYOpm1UF3w4xsb+jK4jeWQIhANXTXZWeNdM3kIM0y+miJnOS5G9kHmE1ZvtLa4PL0COX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4295202},"type":"module","_from":"file:/tmp/opencli-mcp-0.0.11.tgz","engines":{"node":">=22"},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","smoke":"node scripts/smoke.mjs --dist","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"jackwener","email":"jakevingoo@gmail.com"},"_resolved":"/tmp/opencli-mcp-0.0.11.tgz","_integrity":"sha512-LnCP9HV2wi8OcjSikQUlniDXYRTbL4W1RGmTLPShVWg6UWTzkydKpL4QO3Q9LbWzeP1booDrgD/p3u9Qd1ztrw==","_npmVersion":"10.9.7","description":"OpenCLI reborn as an MCP-native browser runtime: Chrome-spawned host, object API + code mode, site capabilities, recon.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","undici":"^6.27.0","js-yaml":"^4.3.1","turndown":"^7.2.2","commander":"^14.0.3","cli-table3":"^0.6.5","playwright-core":"^1.63.0","web-tree-sitter":"^0.27.0","@jackwener/opencli":"file:vendor/opencli","turndown-plugin-gfm":"^1.0.2","@mozilla/readability":"^0.6.0","tree-sitter-javascript":"^0.25.0","@opencli-mcp/adapter-sdk":"file:packages/adapter-sdk","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.11_1790098692618_0.0035304155294080264","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"opencli-mcp","version":"0.0.12","license":"Apache-2.0","_id":"opencli-mcp@0.0.12","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"bin":{"opencli-mcp":"dist/src/main.js"},"dist":{"shasum":"c7780d0918d195c49d54f0ccd1cf13b810db1d39","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.12.tgz","fileCount":195,"integrity":"sha512-0d0uZqXnVgeHgGOZ+0xiH2vScwramEWFyWTDIq2yd7qa8CvcZ2LiEuvDESW0k2TBktH5tEQ7ZqHRisuoeE/XEg==","signatures":[{"sig":"MEUCIHMVGMaMMY3iDDg5KTEakBeuzlq0NubJfZtWDgQTJj6CAiEA53oFfA4YDGnABgvJyH9qFIPgp8bIt77+AVGRYeqo/LI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCK5dcgWd4XK4L0LAlNADGN5yuNSctr1vHUDlCqXZqCNwIhAO/9NtFh2HKnY95JJbj8RsTAXxxBrMAeqJEamcIH2uzL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1612592},"type":"module","_from":"file:opencli-mcp-0.0.12.tgz","engines":{"node":">=22"},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","smoke":"node scripts/smoke.mjs --dist","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"jackwener","email":"jakevingoo@gmail.com"},"_resolved":"/Users/jakevin/code/opencli-mcp/opencli-mcp-0.0.12.tgz","_integrity":"sha512-0d0uZqXnVgeHgGOZ+0xiH2vScwramEWFyWTDIq2yd7qa8CvcZ2LiEuvDESW0k2TBktH5tEQ7ZqHRisuoeE/XEg==","_npmVersion":"10.9.7","description":"MCP-native browser runtime with a Chrome extension, object API, site adapters, and endpoint discovery.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@opencli-mcp/adapter-sdk":"file:packages/adapter-sdk","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.12_1790151994813_0.6388533585779061","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"opencli-mcp","version":"0.0.13","license":"Apache-2.0","_id":"opencli-mcp@0.0.13","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"bin":{"opencli-mcp":"dist/src/main.js"},"dist":{"shasum":"59c9605757da1ff74983431f3b2af8e167e2c726","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.13.tgz","fileCount":209,"integrity":"sha512-J2JW2ufozhi1+5M7odqbGFc0SvbmaDIUxWCK2Lv5qBuWID/kvGs6Z5njuhyEtMvi7QIQFMfcu0yialbJkgvXMg==","signatures":[{"sig":"MEUCIQCvBLK8ZwcKRmMjiwmYdcnsfdUCoCQ2NXOc0HwS2qgxjAIgT1c0oe0/SMrmBmq6ZYWTF8dVtOqQLXZ/vR9yparxado=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC3zXvKJoMcIVlODyem4p93+znEtXH4N77E5tnfotwG9AIhAMt0eITxxWk7pvwxHMGF1WvVjILmdPEsk6q89ut37tQ8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1610214},"type":"module","_from":"file:opencli-mcp-0.0.13.tgz","engines":{"node":">=22"},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"jackwener","email":"jakevingoo@gmail.com"},"_resolved":"/Users/jakevin/code/opencli-mcp/opencli-mcp-0.0.13.tgz","_integrity":"sha512-J2JW2ufozhi1+5M7odqbGFc0SvbmaDIUxWCK2Lv5qBuWID/kvGs6Z5njuhyEtMvi7QIQFMfcu0yialbJkgvXMg==","_npmVersion":"10.9.7","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@opencli-mcp/adapter-sdk":"file:packages/adapter-sdk","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.13_1790187867513_0.6301498742972043","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"opencli-mcp","version":"0.0.14","license":"Apache-2.0","_id":"opencli-mcp@0.0.14","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"e9e1da31f7cd8af1857b7abfe402c26e946a574f","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.14.tgz","fileCount":213,"integrity":"sha512-kPNTWmgq14IgNCASzgYNYx4o2Y+AsToWO3nVwn5KsoCg7UbPNJ2e6LT+VyyEqow/Uu2UMcHv2oLbad8svGOhCw==","signatures":[{"sig":"MEUCIEXJlutV80Qu6sX+JHzIU8TvJJPuVuNPt6RSJZ8LEJa9AiEA2TssCO9+M1VrOAgIbw91mp0Q1yw+PH4RlJNdPKPxvwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBL/3Pzrs0rn9KCcqGl5JtnXc9hgGpim3KnwOUtyRL/qAiEAmyvTfMPvf2hc9td4blle7Mico9nn4YZlXKrjgPNoUjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1617900},"type":"module","engines":{"node":">=22"},"gitHead":"e30d651683471fb8b23620b7b5d0393f4b9a762e","scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"jackwener","email":"jakevingoo@gmail.com"},"_npmVersion":"10.9.7","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@opencli-mcp/adapter-sdk":"file:packages/adapter-sdk","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"bundleDependencies":["@opencli-mcp/adapter-sdk"],"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.14_1790195922777_0.10540462046763555","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"opencli-mcp","version":"0.0.15","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.15","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"2fb3d37caf93d3cd576754d6ecabd0953f12d217","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.15.tgz","fileCount":219,"integrity":"sha512-sNvJBK8WKWexEukpuRu15qfbU5Y1ZVdVzwmK3IBVJWOMmbRkEQhXabAGJMc3MnRkNju0ZLrw9eCtz6cbDFST7A==","signatures":[{"sig":"MEQCIE2ylJT5MdqQ+EanXWkmLjqSajBo0uZXM89286xmuptNAiBzd6TqV2K+GidD1DntamCm6sldf5VCJUj2aoGxe7f10w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCrtnWJk21rytgANAfr597OzUpk8Ls6fr8S184uRjz3XAIgb+thG6sniQMkrAGDXi+MR9+5k4f1iRCPQ9TFowSsMuw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1629459},"type":"module","engines":{"node":">=22"},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"jackwener","email":"jakevingoo@gmail.com"},"_npmVersion":"10.9.7","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@opencli-mcp/adapter-sdk":"file:packages/adapter-sdk","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"bundleDependencies":["@opencli-mcp/adapter-sdk"],"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.15_1790196828885_0.14510886614470864","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"opencli-mcp","version":"0.0.17","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.17","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"2fe4529ceff9104d6536a3c293794c89fdcbee1a","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.17.tgz","fileCount":217,"integrity":"sha512-o9mi9z1M/J/VWfXbwWwJwKL58gmKlLEpCpe8RRV0YhMKg+z4N/259D0glSUZxCANWmZy2oKUzuSPHUEFFu4SVw==","signatures":[{"sig":"MEUCIBGUPDJWwoARt9mXKv2S0H6y5iVVHee92CiB2pjT3YsOAiEA6U57E7OhRr36UlCWpRN6YLVEKaZflBs3LsWxzwPGST0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHUxS2H03bHgSGL9MGbJOVdEGcQITLC12kis8e8kWEOlAiB4oq7q37JTkD8VVIQBxJbi4L8XUnKcXbCCpLef2t4SCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1628434},"type":"module","_from":"file:opencli-mcp-0.0.17.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"jackwener","email":"jakevingoo@gmail.com"},"_resolved":"/Users/jakevin/code/opencli-mcp/opencli-mcp-0.0.17.tgz","_integrity":"sha512-o9mi9z1M/J/VWfXbwWwJwKL58gmKlLEpCpe8RRV0YhMKg+z4N/259D0glSUZxCANWmZy2oKUzuSPHUEFFu4SVw==","_npmVersion":"10.9.7","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.17_1790198108168_0.40287666216012097","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"opencli-mcp","version":"0.0.18","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.18","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"002145e475cd4131776444b2ad5c3606e734eb66","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.18.tgz","fileCount":217,"integrity":"sha512-lfb6MCaVo04+/oX/XV7isNG2Va8jBZziZCGLCmCKCjroFOss3RSI71Ya3U5PC5NTOjlqw3A8Gg12BDvrPqF4qQ==","signatures":[{"sig":"MEUCIQC/eKC6a+LXJCW8RZO7/3hhZxIwUBSQnH9IzVFo9nrZ/gIgWFa/sKIUY4hLB1V+3sGKi5D2m5goP9Xc9kaJ2J2e56g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHxMMw8AOvcSm3pLFe3UgKBojKjLH9RNnuDANT+tzKgFAiEAzkr0o5rvQrozQBtLAD5GXpvrl30VmP2xiR7frX0/4ag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1642067},"type":"module","_from":"file:/tmp/opencli-mcp-release-0.0.18.Civv1D/opencli-mcp-0.0.18.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"jackwener","email":"jakevingoo@gmail.com"},"_resolved":"/tmp/opencli-mcp-release-0.0.18.Civv1D/opencli-mcp-0.0.18.tgz","_integrity":"sha512-lfb6MCaVo04+/oX/XV7isNG2Va8jBZziZCGLCmCKCjroFOss3RSI71Ya3U5PC5NTOjlqw3A8Gg12BDvrPqF4qQ==","_npmVersion":"10.9.7","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.18_1790235909961_0.9033841499668152","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"opencli-mcp","version":"0.0.19","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.19","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"f1fbd65aff6db8ddd5c2463bc6cf3e67e3f9eb57","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.19.tgz","fileCount":229,"integrity":"sha512-I26DIKxaLdAMY0+FdLuzJ03z/RWVa6mkOb1jKw+4qtLuRrOsUGfnWinbAeIyzDnInjRsADB+Iz9bQS43RgVC7Q==","signatures":[{"sig":"MEUCIF+2ZqIgx2gDCzkbcyr7OWi/+Fa9J3+TdpCM8dVSi9+eAiEAld5R1jdFcQIC22Zq/8/cwNW03PuTZzbL9JflYwCNrYM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD+lnjv8wK1CdPfHYYi5tuAIzETrvSb6ZVXU7JKp9u7xwIhANdhoW3UKGWHszozjuWwN42HtyNjVTnhvBhhkxSq7Aqs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1731719},"type":"module","_from":"file:opencli-mcp-0.0.19.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.19.tgz","_integrity":"sha512-I26DIKxaLdAMY0+FdLuzJ03z/RWVa6mkOb1jKw+4qtLuRrOsUGfnWinbAeIyzDnInjRsADB+Iz9bQS43RgVC7Q==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.20.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.19_1790247104501_0.36081410748552534","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"opencli-mcp","version":"0.0.20","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.20","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"7bcf29be11d30fcc65e5fbbdb5f95c3bf8b0ca4f","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.20.tgz","fileCount":229,"integrity":"sha512-AUG7YJ3fLjGq3lUgsxQM/EejboPr55134Nvtm87LJrKhF4F/yA16WL/OPNXEykakkp7LdqFi+0wgpp3A3afh1Q==","signatures":[{"sig":"MEQCICaCaRjeaxpM0In1fXNbUdwuUETNEXMkB6aZ96fmu6ilAiAYKzR+7Sb5C/fKjnsg5TaewtWoWRxxs5KeuVDEkoZDmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDO/CYGTNHEplfyplpkN2XDY5kg8Pbpxy3NQdHrvYeS+wIgWwzBtLlDm9CoWYKMrsy5OgizMOlzOYpHC2tSQYMsr5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1734439},"type":"module","_from":"file:opencli-mcp-0.0.20.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","pack:manual":"npm run build && node scripts/pack-manual-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.20.tgz","_integrity":"sha512-AUG7YJ3fLjGq3lUgsxQM/EejboPr55134Nvtm87LJrKhF4F/yA16WL/OPNXEykakkp7LdqFi+0wgpp3A3afh1Q==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.20.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.20_1790271742907_0.14027705813207225","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"opencli-mcp","version":"0.0.21","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.21","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"739ee75a5a90faefd9db6e2122b09bab3611a03f","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.21.tgz","fileCount":229,"integrity":"sha512-hmYo/J9NnovCNwltV5IvcByD55FIXgd33NkNgMN0gpub7zOW19ealfzKBxmh5UB3wajE8CX2y2qgkpYXnu2W7Q==","signatures":[{"sig":"MEYCIQDABkC9M/d1Gk7gWZGMe0BUcIFHv6zQDr1e4Q5zgojXvQIhAIOPJrvr641fzrhFASG8ms6eo4fT3Ne/qvbpcX+ajI0i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEQi1NgjYw7gjq2xKbchceew75EM3zyQf5KZgyxZTjAqAiEAlBzVF9yvEbtS9g8Q0LOlReM8PiiaqV2S0JVhyMSitQs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1760884},"type":"module","_from":"file:opencli-mcp-0.0.21.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","pack:manual":"npm run build && node scripts/pack-manual-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.21.tgz","_integrity":"sha512-hmYo/J9NnovCNwltV5IvcByD55FIXgd33NkNgMN0gpub7zOW19ealfzKBxmh5UB3wajE8CX2y2qgkpYXnu2W7Q==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.20.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","jsdom":"^29.1.1","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/jsdom":"^30.0.0","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.21_1790278169420_0.9502111987904145","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"opencli-mcp","version":"0.0.22","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.22","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"35210585ed1934357b6207d664ae9696bd7fd01a","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.22.tgz","fileCount":303,"integrity":"sha512-yD8QPKr2D3Vec+mnsipHj7eqjrJf9jgXeKqO6p+a7GhdqHa5G+oMBjZfsjOGEmc0LL8iKa2ug5ucPmy2DtSdEg==","signatures":[{"sig":"MEQCIESmvQ6yqAJfIl92fLZhDD6Q/ZFhOSEqBobvdJfJQd7DAiBwgmRHTVfnL8BwwrBenNvX5ljGczcu4JAuH3JDKLPIMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDLOSrInqjqEBFBjHP1UV8AJT5AaTNpiOxBrSwoeUWZJAIgKmxc5uQwxsZgAgA2Q0y3oUqSNhabc50ZKbra3gafXDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1940482},"type":"module","_from":"file:opencli-mcp-0.0.22.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","pack:manual":"npm run build && node scripts/pack-manual-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.22.tgz","_integrity":"sha512-yD8QPKr2D3Vec+mnsipHj7eqjrJf9jgXeKqO6p+a7GhdqHa5G+oMBjZfsjOGEmc0LL8iKa2ug5ucPmy2DtSdEg==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.20.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.22_1790292588022_0.8006562766181562","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"opencli-mcp","version":"0.0.23","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.23","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"d1981a7df4b29d10dbf1ef0d76f40e16defb892e","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.23.tgz","fileCount":304,"integrity":"sha512-LVk0aaVAlOwGnOULnHeNNvlmgY+pdXEaoiveFCO1RtEB44PTbYuHcISnDqMV0yfyKUSZyJ6kyNPnom/ICIx/CQ==","signatures":[{"sig":"MEQCIHKM8QvSJDKJUAAzaLA1rFoN/Vmaa6DZF9uI0RqfgmUeAiAmDa/S0CY0Ks3lSMAxPc6x78/MJz3wc/gLJ0K553dBTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCy6p0iRYBemVvkr/qcajvtMcjRbhtE11DpW44JClP99gIgeAqIJ5CTSZCimI112BdG9/ryvIth9R8z9dEItoHqLNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1919896},"type":"module","_from":"file:opencli-mcp-0.0.23.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","pack:manual":"npm run build && node scripts/pack-manual-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:browser":"node scripts/smoke-browser.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.23.tgz","_integrity":"sha512-LVk0aaVAlOwGnOULnHeNNvlmgY+pdXEaoiveFCO1RtEB44PTbYuHcISnDqMV0yfyKUSZyJ6kyNPnom/ICIx/CQ==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.20.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.23_1790528192752_0.08523343564622943","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"opencli-mcp","version":"0.0.24","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.24","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"ed6b0b176052cff5855bdd59692e399bbe847245","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.24.tgz","fileCount":310,"integrity":"sha512-sUZuhMoK/JtnQribi8hAoF6ARoVoFyFcs9DILeUIE1s6Ou8n3v9FDt8L04ddJRVdpdn5OdAqCzDM0r5//o/VgA==","signatures":[{"sig":"MEUCIQDg/ktzUC/kxf0VNQ9+VTajnBwbCw3TbbPASYmGpviHpgIgRzNV/zp7mOtf3AJE/nFsefaciC+tRYSsGClOi7svX80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHlQcz3D1fQFto9ibMM1vn1OTsKtG9ptmE6s6LCixYgZAiEAtbIyEJ6Ui470fIW2BMkRkiJ7SPlMHUQ2bUBvwXdSWfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2072173},"type":"module","_from":"file:opencli-mcp-0.0.24.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","pack:manual":"npm run build && node scripts/pack-manual-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:native":"node scripts/smoke-native-capabilities.mjs","smoke:browser":"node scripts/smoke-browser.mjs","generate:chrome":"node scripts/gen-chrome-reference.mjs","smoke:observation":"node scripts/smoke-observation.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.24.tgz","_integrity":"sha512-sUZuhMoK/JtnQribi8hAoF6ARoVoFyFcs9DILeUIE1s6Ou8n3v9FDt8L04ddJRVdpdn5OdAqCzDM0r5//o/VgA==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.20.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.24_1790585910624_0.10417595500134302","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"opencli-mcp","version":"0.0.25","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.25","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"3b486ca32ec7413978aa7659a1db481de29fcf05","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.25.tgz","fileCount":311,"integrity":"sha512-56wrcNEeAtkrhwg1tBDUcOVwo/IjRiWXWT1uss8QZgUSJu0ezXXMSqJivIXCz4ioUoWObiVtW0qKVf4JM2QoKQ==","signatures":[{"sig":"MEUCIQCpFzdMnN+GRNHX2D00EeXP9Iwxgr49TWTjg2OkilaTCwIgR1NJx5t4R2b2qi6rbyPv0NvuBeEZ2qGSgWh4+R/V/pI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE1pFAAIJmlWD4l89LM1ETx+Bs3LuB5Wq2soe8JZiX9VAiBvovPJA6rgwipyh2+Z11VqlkhNSEG+yEhzwRitMjvfKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2079278},"type":"module","_from":"file:opencli-mcp-0.0.25.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","pack:manual":"npm run build && node scripts/pack-manual-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:native":"node scripts/smoke-native-capabilities.mjs","smoke:browser":"node scripts/smoke-browser.mjs","generate:chrome":"node scripts/gen-chrome-reference.mjs","smoke:observation":"node scripts/smoke-observation.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.25.tgz","_integrity":"sha512-56wrcNEeAtkrhwg1tBDUcOVwo/IjRiWXWT1uss8QZgUSJu0ezXXMSqJivIXCz4ioUoWObiVtW0qKVf4JM2QoKQ==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.20.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.25_1790595986690_0.07305141642893132","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"opencli-mcp","version":"0.0.26","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.26","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"7901796dbb01bc1b027c38e537ba31e674251f1d","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.26.tgz","fileCount":315,"integrity":"sha512-rIDhG0gzQ9pYNZ39bnssI9DAeTPUaOlqLKFtLymbj5UV+O3y8k0BCl6q8FgSWkB4uRwzMJQkEjVPO0E49KxoDA==","signatures":[{"sig":"MEUCIQDjQW+8S/O2IVP6WbHotq0V6YtIL1lJKgjsAcc5CRlM+QIgWcvoEwtM+/vaybjsVPYQpBOssG71u4Hb4j6NejoYmGM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDCNv1Oh/Dqau7j1Fm6gMTe1a0/49Cd89fYROWPmXcPsgIhALFSeX6wx/KyUynMlIDpNtbFwhuFxE52Pzt5AqZwXMjO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2110570},"type":"module","_from":"file:opencli-mcp-0.0.26.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","pack:manual":"npm run build && node scripts/pack-manual-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:native":"node scripts/smoke-native-capabilities.mjs","smoke:browser":"node scripts/smoke-browser.mjs","generate:chrome":"node scripts/gen-chrome-reference.mjs","smoke:observation":"node scripts/smoke-observation.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.26.tgz","_integrity":"sha512-rIDhG0gzQ9pYNZ39bnssI9DAeTPUaOlqLKFtLymbj5UV+O3y8k0BCl6q8FgSWkB4uRwzMJQkEjVPO0E49KxoDA==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.20.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.26_1790749040298_0.13330684156428796","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"opencli-mcp","version":"0.0.27","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.27","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"a80262b4c15ad7275d186ebd31965745b058c7aa","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.27.tgz","fileCount":321,"integrity":"sha512-rniib8YZpcm15MVRjuujRR3u3NXiusBAF1klOu0SejA9IoLIzz6h3f+uoMMzxYu9nodEkZv88jYQdBO2ba65WQ==","signatures":[{"sig":"MEUCIQCTyMhkq9iK5bGVj6HDO7x1DL54BBAlpEV7sNMdBFpiiwIgDeqakmQtwinul1v33QuQdZ4fbuvXJ057C3Kn9XWHSck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDIOnH2ZCVzc70IjtXJ2MNiC7qhpPLqiRlMO8GhI9XPIgIhAIuWC1itGWLbcjlwgG2M+5jGX7midDpE5gSRZRI3s1rW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2125491},"type":"module","_from":"file:opencli-mcp-0.0.27.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","pack:manual":"npm run build && node scripts/pack-manual-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:native":"node scripts/smoke-native-capabilities.mjs","smoke:browser":"node scripts/smoke-browser.mjs","generate:chrome":"node scripts/gen-chrome-reference.mjs","smoke:observation":"node scripts/smoke-observation.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.27.tgz","_integrity":"sha512-rniib8YZpcm15MVRjuujRR3u3NXiusBAF1klOu0SejA9IoLIzz6h3f+uoMMzxYu9nodEkZv88jYQdBO2ba65WQ==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.20.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.27_1790754459771_0.35851352609065734","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"opencli-mcp","version":"0.0.28","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.28","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"52534c8fbb9204b10c366dc45b98468547599a5f","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.28.tgz","fileCount":321,"integrity":"sha512-6A+YUGl3Beh/Vt6nj+RvQaWAj9NAcZBvPZ6pqf0oGMrHYGLnceBpJzFFJEcXYJWn8NnAxCis0ukz0ciU4PjUYg==","signatures":[{"sig":"MEUCIQDgWlDF9guuC+4C4421WFBJUQX5M/CodjJHQRphMdc4vAIgF78bk1OEB3l8MK6sLpoXBAxvpr26tiwS/mmIzmR6SL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCPilOYnjLvF07vVsly5Tn0LhjL4UsOoHHQwbTPdozFmQIhAJcGnFdR7kDyzib2lhslxQlsaYglKHd9NJuABMfxouBb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2125715},"type":"module","_from":"file:opencli-mcp-0.0.28.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","pack:manual":"npm run build && node scripts/pack-manual-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:native":"node scripts/smoke-native-capabilities.mjs","smoke:browser":"node scripts/smoke-browser.mjs","generate:chrome":"node scripts/gen-chrome-reference.mjs","smoke:observation":"node scripts/smoke-observation.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.28.tgz","_integrity":"sha512-6A+YUGl3Beh/Vt6nj+RvQaWAj9NAcZBvPZ6pqf0oGMrHYGLnceBpJzFFJEcXYJWn8NnAxCis0ukz0ciU4PjUYg==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.21.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.28_1791455713850_0.31067031946694845","host":"s3://npm-registry-packages-npm-production"}},"0.0.29":{"name":"opencli-mcp","version":"0.0.29","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.29","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"304fedfc4f2457d1776547fc2f00802f7a5bcb4f","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.29.tgz","fileCount":321,"integrity":"sha512-fohfC7RwC/uT0xqcGE17t5xjNzi9ep/vW6letlBctZZhPWW8oR51uOfVEJdi/qaoaFh0QgOdWanCx43p82RhRA==","signatures":[{"sig":"MEYCIQDP4AEJKNsG77SYyt4OBCn+b5HvnjXKy1Fji2pLa40o7QIhANksj5EUJSJrPcmyt8cm6eFnzFK7ROYVNTZtASzWcC6N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF1mtGkVtHymgaNZhsbJzQVOLmgjcrP6pLWVk3C5doJSAiEA4Ss5M0A/Qj6JLnsNxd+097vA4PdGybf/jE+G1qY9wM8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.29","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2129365},"type":"module","_from":"file:opencli-mcp-0.0.29.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-store-extension.mjs","pack:manual":"npm run build && node scripts/pack-manual-extension.mjs","smoke:setup":"node scripts/smoke-setup.mjs","smoke:native":"node scripts/smoke-native-capabilities.mjs","smoke:browser":"node scripts/smoke-browser.mjs","generate:chrome":"node scripts/gen-chrome-reference.mjs","smoke:observation":"node scripts/smoke-observation.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.29.tgz","_integrity":"sha512-fohfC7RwC/uT0xqcGE17t5xjNzi9ep/vW6letlBctZZhPWW8oR51uOfVEJdi/qaoaFh0QgOdWanCx43p82RhRA==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.21.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.3","zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.20.3","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.29_1791538873154_0.1562271801597943","host":"s3://npm-registry-packages-npm-production"}},"0.0.30":{"name":"opencli-mcp","version":"0.0.30","keywords":["mcp","browser"],"license":"Apache-2.0","_id":"opencli-mcp@0.0.30","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"homepage":"https://github.com/jackwener/opencli-mcp#readme","bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"bdbb1d76d9b17ae354aaf7e48ba6a9d91d16ecb4","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.30.tgz","fileCount":323,"integrity":"sha512-9JaU7Jn/cJFVwrBYxrXkXukm+hV+s5JfsBQV6pR6/ww6vOV/YIESwY6OlRRdvvh8NwQHrv3LrzscLeL/5o+jAg==","signatures":[{"sig":"MEYCIQDiJAZvLHZ0gl5ruTPCQC3BQ66SgsPOQL1/8As6/UtCIAIhAPbDnc23qnoSTOJDYlHb7oo3/SZOH8Zjin7c1YqYSfJ2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHiaG6k6naRQF/Mzy5qHMSAZTK1FU9MqXsuyaGjzTcjWAiEAo0HdLXmTtJGtt6miBB101Gv36O3kWCDqws5SCQC1mog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.30","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2147716},"type":"module","_from":"file:opencli-mcp-0.0.30.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-extension.mjs store","pack:manual":"npm run build && node scripts/pack-extension.mjs manual","smoke:setup":"node scripts/smoke-setup.mjs","smoke:native":"node scripts/smoke-native-capabilities.mjs","smoke:browser":"node scripts/smoke-browser.mjs","generate:chrome":"node scripts/gen-chrome-reference.mjs","smoke:observation":"node scripts/smoke-observation.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7533e8be-008f-404c-86a8-539f3d42e307"}},"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.30.tgz","_integrity":"sha512-9JaU7Jn/cJFVwrBYxrXkXukm+hV+s5JfsBQV6pR6/ww6vOV/YIESwY6OlRRdvvh8NwQHrv3LrzscLeL/5o+jAg==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.21.0","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","typescript":"^5.9.3","@types/node":"^22.20.3","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"tmp":"tmp/opencli-mcp_0.0.30_1791946720452_0.29564223814101975","host":"s3://npm-registry-packages-npm-production"}},"0.0.31":{"_id":"opencli-mcp@0.0.31","bin":{"opencli-mcp":"dist/src/main.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"dist":{"shasum":"4eaa38cea7293d0ce649058420c67d8dd904475b","tarball":"https://registry.npmjs.org/opencli-mcp/-/opencli-mcp-0.0.31.tgz","fileCount":325,"integrity":"sha512-mz9G0sqoLwDDhKy6D7lIO4yXhp+HT+urd1OcsvanQyWuN6618ISoOmy0wg5y6utxd3axsmB+4e5+0lC+4RLlZw==","signatures":[{"sig":"MEQCIBeFfa0zzMzp9IAr/20Y6U+MGn01mmGNX0O+8TP/mlW+AiAtaJvgOvs2gOdeCrO5Cmiz1ILOn5F02qZre5oWHiTDow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCH2iumkeAocG+cuMM9T9nFW3rZWCfP5Qxa4bGdqtKeH0CIQChFVY272IyA22uiVFxoj1DtJxgoroltEK0BkSnatni4Q=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/opencli-mcp@0.0.31","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2175372},"name":"opencli-mcp","type":"module","_from":"file:opencli-mcp-0.0.31.tgz","engines":{"node":">=22"},"exports":{"./adapter-sdk":{"types":"./adapter-sdk/index.d.ts","default":"./adapter-sdk/index.js"}},"license":"Apache-2.0","scripts":{"dev":"tsx src/main.ts","test":"vitest run","build":"node scripts/clean.mjs && node scripts/extract-playwright-injected.mjs && tsc -p tsconfig.json && node scripts/gen-api-reference.mjs && node scripts/render-icons.mjs && node scripts/build-extension.mjs && node scripts/copy-assets.mjs","check":"npm run typecheck && npm run build && npm test","prepare":"npm run build","build:ext":"node scripts/render-icons.mjs && node scripts/build-extension.mjs","typecheck":"tsc -p tsconfig.tests.json && tsc -p extension/tsconfig.json","pack:store":"npm run build && node scripts/pack-extension.mjs store","pack:manual":"npm run build && node scripts/pack-extension.mjs manual","smoke:setup":"node scripts/smoke-setup.mjs","smoke:native":"node scripts/smoke-native-capabilities.mjs","smoke:browser":"node scripts/smoke-browser.mjs","generate:chrome":"node scripts/gen-chrome-reference.mjs","smoke:observation":"node scripts/smoke-observation.mjs"},"version":"0.0.31","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7533e8be-008f-404c-86a8-539f3d42e307"}},"homepage":"https://github.com/jackwener/opencli-mcp#readme","keywords":["mcp","browser"],"_resolved":"/home/runner/work/opencli-mcp/opencli-mcp/opencli-mcp-0.0.31.tgz","_integrity":"sha512-mz9G0sqoLwDDhKy6D7lIO4yXhp+HT+urd1OcsvanQyWuN6618ISoOmy0wg5y6utxd3axsmB+4e5+0lC+4RLlZw==","repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"_npmVersion":"11.21.1","description":"Chrome-backed MCP browser service with optional site adapters.","directories":{},"maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.5","jsonc-parser":"^3.3.1","web-tree-sitter":"^0.27.0","tree-sitter-javascript":"^0.25.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","typescript":"^5.9.3","@types/node":"^22.20.3","@types/chrome":"^0.3.0","@resvg/resvg-js":"^2.6.2","playwright-core":"^1.63.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/opencli-mcp_0.0.31_1792433292053_0.7113991220548512"}}},"time":{"created":"2026-09-22T15:48:56.377Z","modified":"2026-10-19T18:08:12.536Z","0.0.10":"2026-09-22T15:48:56.711Z","0.0.11":"2026-09-22T17:38:12.737Z","0.0.12":"2026-09-23T08:26:34.907Z","0.0.13":"2026-09-23T18:24:27.607Z","0.0.14":"2026-09-23T20:38:42.890Z","0.0.15":"2026-09-23T20:53:48.978Z","0.0.17":"2026-09-23T21:15:08.261Z","0.0.18":"2026-09-24T07:45:10.043Z","0.0.19":"2026-09-24T10:51:44.587Z","0.0.20":"2026-09-24T17:42:23.008Z","0.0.21":"2026-09-24T19:29:29.533Z","0.0.22":"2026-09-24T23:29:48.120Z","0.0.23":"2026-09-27T16:56:32.846Z","0.0.24":"2026-09-28T08:58:30.729Z","0.0.25":"2026-09-28T11:46:26.786Z","0.0.26":"2026-09-30T06:17:20.427Z","0.0.27":"2026-09-30T07:47:39.878Z","0.0.28":"2026-10-08T10:35:13.993Z","0.0.29":"2026-10-09T09:41:13.260Z","0.0.30":"2026-10-14T02:58:40.574Z","0.0.31":"2026-10-19T18:08:12.239Z"},"bugs":{"url":"https://github.com/jackwener/opencli-mcp/issues"},"license":"Apache-2.0","homepage":"https://github.com/jackwener/opencli-mcp#readme","keywords":["mcp","browser"],"repository":{"url":"git+https://github.com/jackwener/opencli-mcp.git","type":"git"},"description":"Chrome-backed MCP browser service with optional site adapters.","maintainers":[{"name":"jackwener","email":"jakevingoo@gmail.com"}],"readme":"# opencli-mcp\n\n**A browser service for MCP agents, connected to the Chrome you're already logged into.**\n\nopencli-mcp lets MCP clients observe and operate your Chrome tabs through a local extension and host. Optional site adapters package verified workflows as reusable tools.\n\n[![npm](https://img.shields.io/npm/v/opencli-mcp)](https://www.npmjs.com/package/opencli-mcp)\n[![Chrome Web Store](https://img.shields.io/badge/Chrome_Web_Store-Install_extension-4285F4?logo=googlechrome&logoColor=white)](https://chromewebstore.google.com/detail/opencli-mcp/lnaoghmfcdnbhgcihkakfobckmfhllkg)\n[![Node.js](https://img.shields.io/badge/Node.js-%3E%3D22-339933)](package.json)\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)\n\n[Quick start](#quick-start) · [Usage](#usage) · [Documentation](#documentation) · [中文指南](docs/guide.zh-CN.md)\n\n## What you can do\n\n- **Work with logged-in websites.** Search, read pages, fill forms, and navigate through your existing browser session.\n- **Use optional site commands.** Discover built-in adapters for Twitter/X, Bilibili, and Reddit when a site-specific command helps.\n- **Add site adapters.** Inspect a site's requests, verify an API, and define an explicit reusable MCP tool.\n- **Keep browser work organized.** Agent-created tabs live in named groups and are cleaned up after use. Tabs borrowed from the user are never closed by session cleanup.\n\nWorks with MCP clients including Claude Code, Codex, OpenCode, Cursor, Claude Desktop, DeepSeek Harness (`dsh`), and Pi (with `pi-mcp-adapter`). Agents use a persistent JavaScript REPL for browser work and structured site tools for verified workflows.\n\n## Quick start\n\nYou need **Node.js 22 or newer**, **Google Chrome**, and an **MCP client**. The local host also supports Chromium-based browsers such as Edge and Brave; see [installation details](docs/setup.md).\n\n### 1. Install the Chrome extension\n\n[**Install opencli-mcp from the Chrome Web Store →**](https://chromewebstore.google.com/detail/opencli-mcp/lnaoghmfcdnbhgcihkakfobckmfhllkg)\n\nFor an extension version ahead of the Web Store, download the **manual-install zip** from [GitHub Releases](https://github.com/jackwener/opencli-mcp/releases) and follow the [manual installation steps](docs/setup.md#manual-extension-installation).\n\n### 2. Install the npm package and set up the connection\n\n```bash\nnpm install -g opencli-mcp\nopencli-mcp setup\n```\n\nKeep Chrome open. `setup` connects the extension to the local program, asks which MCP clients to configure, registers only your selection, and checks the browser connection. If you have not installed the extension yet, it opens the Chrome Web Store for you.\n\nFor **Cursor, Claude Desktop, and other MCP clients**, choose `manual` and copy the configuration printed by `setup` into your client's MCP settings. It uses absolute paths so desktop apps can find the program.\n\nFor **OpenCode**, run `opencli-mcp setup --clients opencode`. It adds a global MCP entry while preserving your other settings.\n\nFor **DeepSeek Harness (`dsh`)**, run `opencli-mcp setup --clients none`, then add the same npm package to your dsh profile:\n\n```bash\ndsh plugin --profile web add opencli-mcp\n```\n\nRestart `dsh web`. The package's dsh bundle uses dsh's MCP client to connect to the browser service. See the [dsh setup details](docs/setup.md#deepseek-harness-dsh).\n\nFor **Pi**, install `pi-mcp-adapter`, then run `opencli-mcp setup --clients pi`. See the [Pi setup steps](docs/setup.md#pi).\n\n### 3. Start using it\n\nRestart or reconnect your MCP client, then ask:\n\n> Use opencli-mcp to read the top five Hacker News stories and summarize them with links.\n\nYou can rerun `opencli-mcp setup` to repair the browser registration or select newly installed clients to configure. Selected clients have their `opencli-mcp` entry updated to a stable launcher; other server entries are preserved. The launcher follows Homebrew upgrades within the same formula. If Node or the package moves, rerun setup. For a read-only startup and connection check, run `opencli-mcp doctor`.\n\nConnection issues? See [troubleshooting](docs/setup.md#troubleshooting).\n\n## Usage\n\nTell your agent what you want to do; it discovers and calls the MCP tools. For example:\n\n- “Open Hacker News, read the newest stories, and keep the most useful page open for me.”\n- “Search for site commands that work with Bilibili.”\n- “Explore this website's search, then create a reusable tool for the same query workflow.”\n\nFor integrations and custom workflows, the main tools are:\n\n| Task | Tools |\n|---|---|\n| Browser workspace | `js`, `js_reset` |\n| Discover and run site commands | `sites_search`, `site_run` |\n| Learn the API | `docs_get` (quickstart, topics, or an exact API member) |\n| Diagnose connection and execution | `doctor` |\n| Finish a browser session | `session_finalize` |\n\nThe browser workflow is **observe → act → verify → finalize**, expressed in `js` using the same object model as adapters:\n\n```js\nlet tab = await browser.tabs.new('https://example.com/');\nawait tab.observe();\n```\n\nVariables, functions, classes and Tab handles persist across calls. After inspecting the result, use `await tab.act(...)` and `await tab.expect(...)` or observe again. Keep working data in variables and return only relevant evidence. `docs_get {}` provides a compact quickstart; `{name:\"api-reference\",member:\"Tab.act\"}` provides exact types. No repository documentation access is required.\n\nUse `browser.user.openTabs({query,limit})` and `browser.user.claimTab(...)` for user tabs. The lookup returns up to 20 recent matches by default. `tab.release()` leaves a tab open; `tab.close()` closes it. `session_finalize` closes agent tabs not kept and releases borrowed tabs. `js_reset` stops JavaScript and clears bindings while leaving tabs open; already dispatched operations may still complete. All API methods are awaited.\n\nInside the `js` tool, you can also call site commands directly:\n\n```js\nawait sites.enable('reddit');\nconst posts = await sites.reddit.hot({ subreddit: 'programming', limit: 5 });\nposts;\n```\n\nSee the [JavaScript guide](docs/js-tool.md), [API reference](docs/api-reference.md), and [tool authoring guide](docs/define-tools.md) for complete examples.\n\n## How it works\n\n```text\nMCP client → opencli-mcp launcher → local host ⇄ Chrome extension → website\n                stdio              Native Messaging             your session\n```\n\nChrome starts the local host through Native Messaging. The extension operates browser tabs using Chrome's debugger APIs and Playwright's injected locator engine. The host exposes browser operations, site commands, and tool authoring through MCP.\nEach MCP client connection has its own tab and JavaScript session, so one client's cleanup does not close another client's tabs.\n\nThe MCP launcher can start before Chrome. It keeps the client connection open and reconnects when the Chrome-owned host appears or restarts. Browser operations and site adapters use that host; run `opencli-mcp doctor` if it stays unavailable.\n\nConnections are local-only: standard MCP stdio to the launcher, then Unix domain socket (macOS/Linux) or named pipe (Windows) to the host. No port or token configuration. See [browser selection and configuration](docs/setup.md#local-connections-and-browser-selection).\n\n## Browser access and permissions\n\nThe extension requests browser permissions including `debugger`, `cookies`, and access to all URLs so it can operate logged-in sites. Connected agents can act with the access available in your browser session.\n\nSite commands execute directly without additional approval prompts. The read/write classification describes their effects. See [configuration](docs/setup.md#configuration).\n\n## Documentation\n\n| Guide | Contents |\n|---|---|\n| [Installation and configuration](docs/setup.md) | Source installs, browser profiles, local connections, settings, troubleshooting |\n| [中文指南](docs/guide.zh-CN.md) | Chinese project overview and detailed usage |\n| [Site commands](docs/sites.md) | Discovering, enabling, and running adapters |\n| [JavaScript guide](docs/js-tool.md) | Persistent sessions and the object API |\n| [API reference](docs/api-reference.md) | Generated reference for browser and tool APIs |\n| [Creating tools](docs/define-tools.md) | Define and verify reusable site adapters |\n| [Tab lifecycle](docs/tab-lifecycle.md) | Claiming tabs, grouping, and cleanup |\n| [Errors](docs/errors.md) | Error codes and recovery |\n\n## Development\n\n```bash\ngit clone https://github.com/jackwener/opencli-mcp.git\ncd opencli-mcp\nnpm install\nnpm run typecheck\n```\n\n`npm install` builds the project through its `prepare` script. To connect a development build to Chrome, follow [the unpacked-extension instructions](docs/setup.md#from-source).\n\n```bash\nnpm run build:ext        # rebuild the extension\nnpm test                 # core regression tests\nnpm run smoke:setup      # isolated setup and Native Messaging end-to-end check\nnpm run smoke:browser    # end-to-end check with a connected Chrome extension\n```\n\nKeep the automated suite focused on MCP browser flow, REPL persistence and interruption, connection recovery, session isolation, tab cleanup, and adapter execution. Prefer these integration checks over per-adapter mapping tests and implementation-detail assertions. Run the tests relevant to your change. `npm run check` runs typecheck, build, and the full test suite when a broader check is needed. For browser changes, use the browser smoke test. `docs/api-reference.md` is generated during the build; update its TypeScript source rather than editing the generated file.\n\nMaintainers: use the [release workflow](docs/releasing.md) to publish the npm package and GitHub Release.\n\nFound a bug or have a feature request? [Open an issue](https://github.com/jackwener/opencli-mcp/issues). See [CHANGELOG.md](CHANGELOG.md) for release history.\n\n## License and credits\n\n[Apache-2.0](LICENSE). Some browser helpers and adapters were adapted from [OpenCLI](https://github.com/jackwener/OpenCLI); no OpenCLI dependency or compatibility layer is required. Uses [Playwright](https://github.com/microsoft/playwright)'s injected locator engine. Endpoint analysis is inspired by [jsluice](https://github.com/BishopFox/jsluice).\n\n### Native browser APIs\n\nThe REPL also exposes `browser.chrome.call(method, argsArray)` for native Chrome APIs, `tab.cdp.send(method, params)` for an explicit Tab, and writable Main World `tab.evaluate(script, {arg, timeoutMs})`. Use `browser.chrome.describe(\"tabs.query\")` for on-demand signatures and runtime availability. Chrome/CDP events and page/extension logs support bounded subscriptions with explicit loss/reset information. Read `docs_get {name:\"capabilities/chrome\"}` inside MCP for examples and lifecycle rules, or [the native capabilities guide](docs/capabilities/chrome.md).\n\nFor development, `npm run smoke:native` runs the new flows in a disposable Chromium profile after a build. Set `OPENCLI_SMOKE_CHROME` to a Chromium executable when it is not available in the local Playwright cache. It does not modify the everyday browser profile or native-host registration.\n","readmeFilename":"README.md"}