{"_id":"@civic/playwright-tokensaver-proxy","_rev":"3-d429b9f60dc03a77473d58b9938acdf2","name":"@civic/playwright-tokensaver-proxy","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@civic/playwright-tokensaver-proxy","version":"0.1.0","keywords":["mcp","playwright","proxy","tokens"],"author":{"name":"Civic Technologies, Inc."},"license":"MIT","_id":"@civic/playwright-tokensaver-proxy@0.1.0","maintainers":[{"name":"mitchcivic","email":"mitch@civic.com"},{"name":"dankelleher","email":"dankelleher@yahoo.com"},{"name":"jonthepilot","email":"jonathan@civic.com"},{"name":"civicfinance","email":"camille@civic.com"},{"name":"kevinhcolgan","email":"kevin@civic.com"},{"name":"flippiescholtz","email":"flippie@civic.com"},{"name":"jp-civic","email":"jp@civic.com"},{"name":"lucmir","email":"luccmir@gmail.com"},{"name":"chriteixeira","email":"chriteixeira@gmail.com"},{"name":"rado0x54","email":"web@riedel-it.de"},{"name":"cyberdude","email":"hello@arnaldocapo.com"}],"homepage":"https://github.com/civicteam/mcp-hooks/tree/main/packages/playwright-tokensaver-proxy","bugs":{"url":"https://github.com/civicteam/mcp-hooks/issues"},"bin":{"playwright-tokensaver-proxy":"dist/index.js"},"dist":{"shasum":"712bf484b6578f59fbb5f04e93f55b7f472a8ee8","tarball":"https://registry.npmjs.org/@civic/playwright-tokensaver-proxy/-/playwright-tokensaver-proxy-0.1.0.tgz","fileCount":16,"integrity":"sha512-v7HY4WPne4FaSKlEuexm+XBhOBWHRGK/kwJ7/QgAx90TRCKtYacdPZ+0I6En/M6MCvxGbaqYIp6PNcS1Bz7V7A==","signatures":[{"sig":"MEQCICEmworbjHrW1cvLBtOgF5qXiVTXZliya7knpSzxXRo3AiBYKVSFa3ICLWXQgTKq3ZeAOZAvFpk/mNcpYiPgKDSBtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48470},"main":"./dist/index.js","type":"module","_from":"file:civic-playwright-tokensaver-proxy-0.1.0.tgz","types":"./dist/index.d.ts","exports":"./dist/index.js","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"tsc","start":"node dist/index.js","lint:fix":"biome check --fix .","postbuild":"chmod +x dist/index.js","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"dankelleher","email":"dankelleher@yahoo.com"},"_resolved":"/private/var/folders/h7/mnms_ft97q993pjvsmfc64fh0000gn/T/15d11c0b57ba75a9948f08835813337c/civic-playwright-tokensaver-proxy-0.1.0.tgz","_integrity":"sha512-v7HY4WPne4FaSKlEuexm+XBhOBWHRGK/kwJ7/QgAx90TRCKtYacdPZ+0I6En/M6MCvxGbaqYIp6PNcS1Bz7V7A==","repository":{"url":"git+https://github.com/civicteam/mcp-hooks.git","type":"git","directory":"packages/playwright-tokensaver-proxy"},"_npmVersion":"11.6.2","description":"Single stdio MCP proxy for Playwright with token-saving run_code_cheap output compression","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@civic/hook-common":"^0.9.0","@modelcontextprotocol/sdk":"^1.26.0","@civic/passthrough-mcp-server":"^0.12.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.2.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/playwright-tokensaver-proxy_0.1.0_1772104640484_0.28744591797455077","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@civic/playwright-tokensaver-proxy","version":"0.2.0","keywords":["mcp","playwright","proxy","tokens"],"author":{"name":"Civic Technologies, Inc."},"license":"MIT","_id":"@civic/playwright-tokensaver-proxy@0.2.0","maintainers":[{"name":"mitchcivic","email":"mitch@civic.com"},{"name":"dankelleher","email":"dankelleher@yahoo.com"},{"name":"jonthepilot","email":"jonathan@civic.com"},{"name":"civicfinance","email":"camille@civic.com"},{"name":"kevinhcolgan","email":"kevin@civic.com"},{"name":"flippiescholtz","email":"flippie@civic.com"},{"name":"jp-civic","email":"jp@civic.com"},{"name":"lucmir","email":"luccmir@gmail.com"},{"name":"chriteixeira","email":"chriteixeira@gmail.com"},{"name":"rado0x54","email":"web@riedel-it.de"},{"name":"cyberdude","email":"hello@arnaldocapo.com"}],"homepage":"https://github.com/civicteam/mcp-hooks/tree/main/packages/playwright-tokensaver-proxy","bugs":{"url":"https://github.com/civicteam/mcp-hooks/issues"},"bin":{"playwright-tokensaver-proxy":"dist/index.js"},"dist":{"shasum":"bababac34fc8c42803db295dfc46854fd1f594ce","tarball":"https://registry.npmjs.org/@civic/playwright-tokensaver-proxy/-/playwright-tokensaver-proxy-0.2.0.tgz","fileCount":16,"integrity":"sha512-LgX2WK7DHywsB+19IoyB+du3cmAAhqU3NecTVm3BrMF+okmG4D/+RCRiTcoBoPdrHsnR5RjycMgpPrYPipgOrg==","signatures":[{"sig":"MEUCIQDl6nZfI6lpMKJpqksWLqBb6BnQMziha3anj5ki2ahuvwIgFlN90VSpDXXJSYBmigijsRgyM4J/LN1kuzJKzigoJzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48481},"main":"./dist/index.js","type":"module","_from":"file:civic-playwright-tokensaver-proxy-0.2.0.tgz","types":"./dist/index.d.ts","exports":"./dist/index.js","scripts":{"dev":"tsx watch src/index.ts","lint":"biome check .","test":"vitest","build":"tsc","start":"node dist/index.js","lint:fix":"biome check --fix .","postbuild":"chmod +x dist/index.js","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"dankelleher","email":"dankelleher@yahoo.com"},"_resolved":"/private/var/folders/h7/mnms_ft97q993pjvsmfc64fh0000gn/T/04654793b33370c8904b9197f12d75bf/civic-playwright-tokensaver-proxy-0.2.0.tgz","_integrity":"sha512-LgX2WK7DHywsB+19IoyB+du3cmAAhqU3NecTVm3BrMF+okmG4D/+RCRiTcoBoPdrHsnR5RjycMgpPrYPipgOrg==","repository":{"url":"git+https://github.com/civicteam/mcp-hooks.git","type":"git","directory":"packages/playwright-tokensaver-proxy"},"_npmVersion":"11.6.2","description":"Single stdio MCP proxy for Playwright with token-saving run_code_cheap output compression","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@civic/hook-common":"^0.9.0","@modelcontextprotocol/sdk":"^1.26.0","@civic/passthrough-mcp-server":"^0.12.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.2.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/playwright-tokensaver-proxy_0.2.0_1772131987084_0.5090268111468979","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-02-26T11:17:20.335Z","modified":"2026-05-10T06:05:24.211Z","0.1.0":"2026-02-26T11:17:20.617Z","0.2.0":"2026-02-26T18:53:07.251Z"},"bugs":{"url":"https://github.com/civicteam/mcp-hooks/issues"},"author":{"name":"Civic Technologies, Inc."},"license":"MIT","homepage":"https://github.com/civicteam/mcp-hooks/tree/main/packages/playwright-tokensaver-proxy","keywords":["mcp","playwright","proxy","tokens"],"repository":{"url":"git+https://github.com/civicteam/mcp-hooks.git","type":"git","directory":"packages/playwright-tokensaver-proxy"},"description":"Single stdio MCP proxy for Playwright with token-saving run_code_cheap output compression","maintainers":[{"email":"dankelleher@yahoo.com","name":"dankelleher"},{"email":"jonathan@civic.com","name":"jonthepilot"},{"email":"camille@civic.com","name":"civicfinance"},{"email":"kevin@civic.com","name":"kevinhcolgan"},{"email":"flippie@civic.com","name":"flippiescholtz"},{"email":"luccmir@gmail.com","name":"lucmir"},{"email":"chriteixeira@gmail.com","name":"chriteixeira"},{"email":"web@riedel-it.de","name":"rado0x54"}],"readme":"# @civic/playwright-tokensaver-proxy\n\nA single stdio MCP server that proxies to Playwright MCP and adds a token-saving `run_code_cheap` tool.\n\n## What it does\n\n- Runs as one stdio MCP server (easy to drop into MCP client config)\n- Launches upstream Playwright MCP via stdio:\n  - default command: `npx -y @playwright/mcp@latest`\n- Clones `browser_run_code` into `run_code_cheap`\n- Keeps all Playwright tools exposed\n- Adds guidance to `browser_*` tools to prefer `run_code_cheap` when full output is not needed\n- Rewrites `run_code_cheap` calls through a harness and returns compact results:\n  - `success`\n  - `failure`\n\n## Behavioral contract for `run_code_cheap`\n\nYour provided code should return:\n\n```json\n{ \"success\": true }\n```\n\nAnything else is treated as failure:\n- throw\n- `{ \"success\": false }`\n- invalid return shape\n\n## Usage\n\n### Claude Code\n\n```bash\nclaude mcp add playwrightsave -- npx -y @civic/playwright-tokensaver-proxy\n```\n\n### MCP client config (JSON)\n\n```json\n{\n  \"mcpServers\": {\n    \"playwrightsave\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@civic/playwright-tokensaver-proxy\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\n## Environment variables\n\n- `PLAYWRIGHT_COMMAND`:\n  default `npx`\n- `PLAYWRIGHT_ARGS`:\n  comma-separated args, e.g. `-y,@playwright/mcp@latest,--headless,--isolated`\n- `PLAYWRIGHT_ARGS_JSON`:\n  JSON array alternative to `PLAYWRIGHT_ARGS` (takes precedence)\n- `PLAYWRIGHT_HEADLESS`:\n  set to `true`/`1`/`yes` to append `--headless` when using default args\n- `PLAYWRIGHT_ISOLATED`:\n  set to `true`/`1`/`yes` to append `--isolated` when using default args\n- `PLAYWRIGHT_CWD`:\n  optional working directory for the upstream Playwright MCP process\n","readmeFilename":"README.md"}