{"_id":"@blanklogic/refinery-mcp","_rev":"8-411df085a9f3c7c0473bcc631c380eca","name":"@blanklogic/refinery-mcp","dist-tags":{"latest":"0.2.5"},"versions":{"0.1.0":{"name":"@blanklogic/refinery-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","blanklogic","refinery","llm","context","secret-redaction","token-reduction"],"author":{"name":"BlankLogic"},"license":"UNLICENSED","_id":"@blanklogic/refinery-mcp@0.1.0","maintainers":[{"name":"briancrabtree","email":"brian@briancrabtree.me"}],"homepage":"https://blanklogic.io/refinery/","bugs":{"url":"https://github.com/briancrabtree-me/blanklogic-site/issues"},"bin":{"refinery-mcp":"src/index.js"},"dist":{"shasum":"4c4d948ed6304689e0936fdc6aad5c0ca90e1bff","tarball":"https://registry.npmjs.org/@blanklogic/refinery-mcp/-/refinery-mcp-0.1.0.tgz","fileCount":4,"integrity":"sha512-7UGn3YfUOrCqAzYMhKHwgOoiy09FQqrgX4Rr31547rMGL9RLXTEGrgL+/XgB4Pglt2eqIep3Xa8vZediZlQFaw==","signatures":[{"sig":"MEUCIQCRqCrfuUAZkveEyWepln5Bf8+mS2L6N8L+mQxu5u0sugIgDXFArclrUraYVPirYgiwn28FkTmd6ZTNIXMNxiWyph8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7565},"type":"module","engines":{"node":">=20"},"gitHead":"a4694ad3d1a0bbb55c8cd4907847541de4d9d295","private":false,"scripts":{"test":"node test/mcp.test.mjs","smoke":"node src/index.js --smoke","start":"node src/index.js"},"_npmUser":{"name":"briancrabtree","email":"brian@briancrabtree.me"},"repository":{"url":"git+https://github.com/briancrabtree-me/blanklogic-site.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.12.1","description":"MCP server for BlankLogic Refinery context hygiene tools.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@blanklogic/refinery-core":"0.1.0","@modelcontextprotocol/sdk":"^1.21.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/refinery-mcp_0.1.0_1779126085936_0.6757468721086912","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@blanklogic/refinery-mcp","version":"0.1.1","keywords":["mcp","mcp-server","model-context-protocol","cursor","claude","claude-code","ai-agents","context-hygiene","secret-redaction","token-reduction","code-cleanup","llm","developer-tools"],"author":{"name":"BlankLogic"},"license":"UNLICENSED","_id":"@blanklogic/refinery-mcp@0.1.1","maintainers":[{"name":"briancrabtree","email":"brian@briancrabtree.me"}],"homepage":"https://blanklogic.io/refinery/","bugs":{"url":"https://blanklogic.io/refinery/"},"bin":{"refinery-mcp":"src/index.js"},"dist":{"shasum":"0304e7213ce70ce33ebefb0a05dff59327544268","tarball":"https://registry.npmjs.org/@blanklogic/refinery-mcp/-/refinery-mcp-0.1.1.tgz","fileCount":4,"integrity":"sha512-WzIDisEkUZ2MeDWPCxbRiFsSqar7d9dfcx5xyIerN1/laQ56/V/Bwr+9kbKoRZ1FYvvsTA0Pr1iN2+ns1XtH9w==","signatures":[{"sig":"MEUCIQD9VGIWoCgxhlfsmxuj9NztlwmjZ3OEA18fRjggxuqN4gIgGFyCZ73839Y2h9Xzsqnkov0BWac5ff+XjShtSu4QKko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7482},"type":"module","engines":{"node":">=20"},"gitHead":"6fc7edfb4fdd41cad2fc785a66aedb27597a5c46","private":false,"scripts":{"test":"node test/mcp.test.mjs","smoke":"node src/index.js --smoke","start":"node src/index.js"},"_npmUser":{"name":"briancrabtree","email":"brian@briancrabtree.me"},"_npmVersion":"11.12.1","description":"MCP server for BlankLogic Refinery context hygiene tools.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@blanklogic/refinery-core":"0.1.1","@modelcontextprotocol/sdk":"^1.21.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/refinery-mcp_0.1.1_1779154048795_0.36479188559614495","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@blanklogic/refinery-mcp","version":"0.1.2","keywords":["mcp","mcp-server","model-context-protocol","cursor","claude","claude-code","ai-agents","context-hygiene","secret-redaction","token-reduction","code-cleanup","llm","developer-tools"],"author":{"name":"BlankLogic"},"license":"UNLICENSED","_id":"@blanklogic/refinery-mcp@0.1.2","maintainers":[{"name":"briancrabtree","email":"brian@briancrabtree.me"}],"homepage":"https://blanklogic.io/","bugs":{"url":"https://blanklogic.io/#bugs"},"bin":{"refinery-mcp":"src/index.js"},"dist":{"shasum":"57831036abb9b11c853134128ed8a895809d9e94","tarball":"https://registry.npmjs.org/@blanklogic/refinery-mcp/-/refinery-mcp-0.1.2.tgz","fileCount":8,"integrity":"sha512-NtLWiz/N+gTa+xu13zYmmpLLghcMSu/E3aq1X0pUELK+NpYymZJbU9BxfE3VrWr6fBjOPFe7BgvFq6wtI21+9Q==","signatures":[{"sig":"MEYCIQCGndw1szNplWluPBP2911YHi0LYrPHlpmUJVgSyiK1GAIhAMHE01WZBKz1huoWw+nZkbdwhrXYIFoNamPIhzIcBM1b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13816},"type":"module","engines":{"node":">=20"},"gitHead":"4da5211f59f974f0f27c2b70905d62ae4d1dda31","private":false,"scripts":{"test":"node test/mcp.test.mjs","smoke":"node src/index.js --smoke","start":"node src/index.js"},"_npmUser":{"name":"briancrabtree","email":"brian@briancrabtree.me"},"_npmVersion":"11.12.1","description":"Clean context before AI sees it — BlankLogic Refinery MCP for Cursor and Claude Code (local, no upload).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@blanklogic/refinery-core":"0.1.2","@modelcontextprotocol/sdk":"^1.21.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/refinery-mcp_0.1.2_1779177613494_0.4624731565911","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@blanklogic/refinery-mcp","version":"0.2.0","keywords":["mcp","mcp-server","model-context-protocol","cursor","claude","claude-code","ai-agents","context-hygiene","secret-redaction","token-reduction","code-cleanup","llm","developer-tools"],"author":{"name":"BlankLogic"},"license":"UNLICENSED","_id":"@blanklogic/refinery-mcp@0.2.0","maintainers":[{"name":"briancrabtree","email":"brian@briancrabtree.me"}],"homepage":"https://blanklogic.io/","bugs":{"url":"https://blanklogic.io/#bugs"},"bin":{"refinery-mcp":"src/index.js"},"dist":{"shasum":"931b3048af240d6d633e073fd1907e8438aa9a57","tarball":"https://registry.npmjs.org/@blanklogic/refinery-mcp/-/refinery-mcp-0.2.0.tgz","fileCount":8,"integrity":"sha512-4ITGs3RuQHh4KTe2m5gB5iEW/1gT+DrG+Zt4PcbMzLJk2fMGkn681GfJVTC729vQy+/1l/1BRtJ/sgQaDN9g8g==","signatures":[{"sig":"MEUCIQC40lQHkzkG8GcE5oJ+eXr1EWDwVb4jBZbI26jX8WeLMAIgakFg0Zbjb5NCTac+y/X0YFNb0VY/R+aW5554etgkFOA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14533},"type":"module","engines":{"node":">=20"},"gitHead":"8ef1b1e06611c42fae31cccb637a8c4dfd40408e","private":false,"scripts":{"test":"node test/mcp.test.mjs","smoke":"node src/index.js --smoke","start":"node src/index.js"},"_npmUser":{"name":"briancrabtree","email":"brian@briancrabtree.me"},"_npmVersion":"11.12.1","description":"Clean context before AI sees it — BlankLogic Refinery MCP for Cursor and Claude Code (local, no upload).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@blanklogic/refinery-core":"0.2.0","@modelcontextprotocol/sdk":"^1.21.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/refinery-mcp_0.2.0_1779295450516_0.6851753143055239","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@blanklogic/refinery-mcp","version":"0.2.1","keywords":["mcp","mcp-server","model-context-protocol","cursor","claude","claude-code","ai-agents","context-hygiene","secret-redaction","token-reduction","code-cleanup","llm","developer-tools"],"author":{"name":"BlankLogic"},"license":"UNLICENSED","_id":"@blanklogic/refinery-mcp@0.2.1","maintainers":[{"name":"briancrabtree","email":"brian@briancrabtree.me"}],"homepage":"https://blanklogic.io/","bugs":{"url":"https://blanklogic.io/#bugs"},"bin":{"refinery-mcp":"src/index.js"},"dist":{"shasum":"e968f10fa169fcf9167d227601e9fadf622fef3f","tarball":"https://registry.npmjs.org/@blanklogic/refinery-mcp/-/refinery-mcp-0.2.1.tgz","fileCount":8,"integrity":"sha512-o36l3NaDkUyLxXILi/KyyEXBHc7BKrTJIEzfRs75SY/pOt3XnF3/ZXV+1Y+ViMAs9XG+sSdU5a4bjoXndWvFIg==","signatures":[{"sig":"MEQCIDpSi91ZA4GpOXqzM2v9fXLdYG4GXtQghKjmxBctvJtQAiAefHv9bcUGllZYIQ5OVVCorPFFXvVEh8/6VyNqoqOIMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14851},"type":"module","engines":{"node":">=20"},"gitHead":"399e54de9e9f2c70a37dc84899b9ed2c0da1fd98","private":false,"scripts":{"test":"node test/mcp.test.mjs","smoke":"node src/index.js --smoke","start":"node src/index.js"},"_npmUser":{"name":"briancrabtree","email":"brian@briancrabtree.me"},"_npmVersion":"11.12.1","description":"Clean context before AI sees it — BlankLogic Refinery MCP for Cursor and Claude Code (local, no upload).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@blanklogic/refinery-core":"0.2.0","@modelcontextprotocol/sdk":"^1.21.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/refinery-mcp_0.2.1_1779314251133_0.12460135728694222","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@blanklogic/refinery-mcp","version":"0.2.2","keywords":["mcp","mcp-server","model-context-protocol","cursor","claude","claude-code","ai-agents","context-hygiene","secret-redaction","token-reduction","code-cleanup","llm","developer-tools"],"author":{"name":"BlankLogic"},"license":"UNLICENSED","_id":"@blanklogic/refinery-mcp@0.2.2","maintainers":[{"name":"briancrabtree","email":"brian@briancrabtree.me"}],"homepage":"https://blanklogic.io/","bugs":{"url":"https://blanklogic.io/#bugs"},"bin":{"refinery-mcp":"src/index.js"},"dist":{"shasum":"6f927b7e47b115f979324200061a961dad25f4e8","tarball":"https://registry.npmjs.org/@blanklogic/refinery-mcp/-/refinery-mcp-0.2.2.tgz","fileCount":8,"integrity":"sha512-tflWmqGWmXd/GbnLr0GlF/+0gJDnCDCFXi1nZZK6uf+XbCSkVUebbg0N4zjZlwI/5GYQAgl35qBns+xpOt6RWw==","signatures":[{"sig":"MEUCIB2nYtvATV7RN62ZVk+2QC47fRQJc6AdcrpA4NWBUv1HAiEAy5fpMmuhJgd9hIbCIKiIHCmKif2L/8GJV5uF4CAPWec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11897},"type":"module","engines":{"node":">=20"},"gitHead":"36fb19e4de386c5cd33d1b63c34ed7058b25eb83","private":false,"scripts":{"test":"node test/mcp.test.mjs","smoke":"node src/index.js --smoke","start":"node src/index.js"},"_npmUser":{"name":"briancrabtree","email":"brian@briancrabtree.me"},"_npmVersion":"11.12.1","description":"Clean context before AI sees it — BlankLogic Refinery MCP for Cursor and Claude Code (local, no upload).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@blanklogic/refinery-core":"0.2.1","@modelcontextprotocol/sdk":"^1.21.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/refinery-mcp_0.2.2_1779435070020_0.4007661378892804","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@blanklogic/refinery-mcp","version":"0.2.3","keywords":["mcp","mcp-server","model-context-protocol","cursor","claude","claude-code","ai-agents","context-hygiene","secret-redaction","token-reduction","code-cleanup","llm","developer-tools"],"author":{"name":"BlankLogic"},"license":"MIT","_id":"@blanklogic/refinery-mcp@0.2.3","maintainers":[{"name":"briancrabtree","email":"brian@briancrabtree.me"}],"homepage":"https://blanklogic.io/","bugs":{"url":"https://blanklogic.io/#bugs"},"bin":{"refinery-mcp":"src/index.js"},"dist":{"shasum":"49c9b86533c533c014a84bde0ec556bf310f7424","tarball":"https://registry.npmjs.org/@blanklogic/refinery-mcp/-/refinery-mcp-0.2.3.tgz","fileCount":9,"integrity":"sha512-y3QcBWhDuJemmmdrNX7mTfx9Y5QAswq32EKp6neJ6iLLBOXOEZTx12Nahi7KdLlJVlusY/8wP4eVjZf8b94yqQ==","signatures":[{"sig":"MEUCIENSEqIN4WfGsl79oaE9P+ci7uiK+CEIvC5jlMA1wx/DAiEA4hFH3UMBNgxJB0hJm+ti0QrcxGCruDgyPoxuU9La0rk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13167},"type":"module","engines":{"node":">=20"},"gitHead":"36fb19e4de386c5cd33d1b63c34ed7058b25eb83","mcpName":"com.blanklogic/refinery-mcp","private":false,"scripts":{"test":"node test/mcp.test.mjs","smoke":"node src/index.js --smoke","start":"node src/index.js"},"_npmUser":{"name":"briancrabtree","email":"brian@briancrabtree.me"},"_npmVersion":"11.12.1","description":"Clean context before AI sees it — BlankLogic Refinery MCP for Cursor and Claude Code (local, no upload).","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@blanklogic/refinery-core":"0.2.1","@modelcontextprotocol/sdk":"^1.21.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/refinery-mcp_0.2.3_1779436770655_0.558620042259895","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@blanklogic/refinery-mcp","version":"0.2.5","description":"Clean context before AI sees it — BlankLogic Refinery MCP for Cursor and Claude Code (local, no upload).","type":"module","private":false,"bin":{"refinery-mcp":"src/index.js"},"publishConfig":{"access":"public"},"scripts":{"start":"node src/index.js","smoke":"node src/index.js --smoke","test":"node test/mcp.test.mjs"},"dependencies":{"@blanklogic/refinery-core":"0.2.5","@modelcontextprotocol/sdk":"^1.21.0"},"license":"UNLICENSED","homepage":"https://blanklogic.io/","bugs":{"url":"https://blanklogic.io/#support"},"keywords":["mcp","mcp-server","model-context-protocol","cursor","claude","claude-code","ai-agents","context-hygiene","secret-redaction","token-reduction","code-cleanup","llm","developer-tools"],"author":{"name":"BlankLogic"},"engines":{"node":">=20"},"gitHead":"2cd403caa1ae3527fad51fe65a8866d447cfc8dc","_id":"@blanklogic/refinery-mcp@0.2.5","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-TW81s5iPgJ3Vn3U6hKscrjRsCzRWIkr9JSaburLuaH3TxXTahRnjow4zR7rObWKPNeu8AZCwp3mhZdZGBaEZow==","shasum":"43ddfd75ccc7a7f7eb3359b74f829d255c77bea7","tarball":"https://registry.npmjs.org/@blanklogic/refinery-mcp/-/refinery-mcp-0.2.5.tgz","fileCount":9,"unpackedSize":16376,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCuaq8UabXtH3mYbWMT/rCV7gDn4OtNCK9elRfhcrKN/AIgeqe8Kj2L27lRuJi845gxLf2qaw5RFeJ5P2mkoSaJq5Q="}]},"_npmUser":{"name":"briancrabtree","email":"brian@briancrabtree.me"},"directories":{},"maintainers":[{"name":"briancrabtree","email":"brian@briancrabtree.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/refinery-mcp_0.2.5_1781118052263_0.7686131969279189"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-18T17:41:25.814Z","modified":"2026-06-10T19:00:52.530Z","0.1.0":"2026-05-18T17:41:26.086Z","0.1.1":"2026-05-19T01:27:28.946Z","0.1.2":"2026-05-19T08:00:13.630Z","0.2.0":"2026-05-20T16:44:10.670Z","0.2.1":"2026-05-20T21:57:31.290Z","0.2.2":"2026-05-22T07:31:10.158Z","0.2.3":"2026-05-22T07:59:30.790Z","0.2.5":"2026-06-10T19:00:52.397Z"},"bugs":{"url":"https://blanklogic.io/#support"},"author":{"name":"BlankLogic"},"license":"UNLICENSED","homepage":"https://blanklogic.io/","keywords":["mcp","mcp-server","model-context-protocol","cursor","claude","claude-code","ai-agents","context-hygiene","secret-redaction","token-reduction","code-cleanup","llm","developer-tools"],"description":"Clean context before AI sees it — BlankLogic Refinery MCP for Cursor and Claude Code (local, no upload).","maintainers":[{"name":"briancrabtree","email":"brian@briancrabtree.me"}],"readme":"# @blanklogic/refinery-mcp\n\n<p align=\"center\">\n  <img src=\"https://blanklogic.io/logo-192.png\" width=\"96\" height=\"96\" alt=\"BlankLogic\" />\n</p>\n\n**MCP server that de-bloats code and redacts secrets for Cursor, Claude Code, and other MCP agents.**\n\nAgents get cleaner context and fewer leaked secrets — without sending your repo to BlankLogic servers. Runs locally over stdio.\n\n## What's new in 0.2.5\n\n- Coordinated release with Refinery browser app and BYOK Proxy — same `@blanklogic/refinery-core@0.2.5` engine.\n- README and site copy focused on **MCP-first** install (copy-paste config below).\n- Expanded release test gate (CLI, MCP full suite, community stats).\n- **512 KB** max input · tools: `refine_code`, `sanitize_secrets`, `refine_full` — see [TOOL_CONTRACT.md](./TOOL_CONTRACT.md).\n- Optional telemetry: `BLANKLOGIC_MCP_TELEMETRY=0` to disable.\n\n## Saved tokens or caught a secret?\n\nIf BlankLogic trimmed noise, redacted secrets, or cut token waste for you, a quick review helps others find it:\n\n- **Cursor / Open VSX:** [Rate BlankLogic Refinery on Open VSX](https://open-vsx.org/extension/blanklogic/blanklogic-refinery-vscode)\n- **VS Code:** [Leave a review on the Marketplace](https://marketplace.visualstudio.com/items?itemName=blanklogic.blanklogic-refinery-vscode&ssr=false#review-details)\n- **Feedback:** [blanklogic.io/#support](https://blanklogic.io/#support)\n\n## Install\n\n```bash\nnpx -y @blanklogic/refinery-mcp\n```\n\n## Cursor / Claude Code — paste this\n\nCopy into **Cursor Settings → MCP** (or Claude Code MCP config):\n\n```json\n{\n  \"mcpServers\": {\n    \"blanklogic-refinery\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@blanklogic/refinery-mcp\"]\n    }\n  }\n}\n```\n\nRestart the agent session, then ask: *“Use refine_full on this pasted code before sending it to the model.”*\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `refine_code` | De-bloat input; return cleaned output + stats |\n| `sanitize_secrets` | Redact obvious secrets; return counts |\n| `refine_full` | De-bloat then sanitize (recommended) |\n\nExample response:\n\n```json\n{\n  \"tool\": \"refine_full\",\n  \"output\": \"API_KEY=[REDACTED]\",\n  \"stats\": {\n    \"bytesIn\": 128,\n    \"bytesOut\": 18,\n    \"tokensSaved\": 12,\n    \"secretsRedacted\": 1\n  }\n}\n```\n\n## Who this is for\n\n- Cursor and Claude Code users who want agents to clean payloads automatically\n- MCP directory listings (Smithery, mcp.so, PulseMCP, etc.)\n- Teams standardizing context hygiene across agent workflows\n\n## Related BlankLogic tools\n\n| Product | Link |\n|---------|------|\n| **CLI** | [`@blanklogic/refinery`](https://www.npmjs.com/package/@blanklogic/refinery) |\n| **VS Code / Cursor extension** | [VS Marketplace](https://marketplace.visualstudio.com/items?itemName=blanklogic.blanklogic-refinery-vscode) · [Open VSX](https://open-vsx.org/extension/blanklogic/blanklogic-refinery-vscode) |\n| **AI cost proxy** | [`@blanklogic/proxy`](https://www.npmjs.com/package/@blanklogic/proxy) |\n| **Web app** | [blanklogic.io/refinery](https://blanklogic.io/refinery/) |\n\n## Local development (monorepo)\n\n```bash\nnpm install\nnpm --workspace @blanklogic/refinery-mcp run smoke\n```\n\nDev config with absolute path:\n\n```json\n{\n  \"mcpServers\": {\n    \"blanklogic-refinery\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/blanklogic-site/packages/mcp-server/src/index.js\"]\n    }\n  }\n}\n```\n\n## Tool contract\n\nSee [TOOL_CONTRACT.md](./TOOL_CONTRACT.md) for canonical tool names, the `input` argument, and the 512 KB limit.\n\n## Cloud credits (optional)\n\nMCP tools run **locally** over stdio. For **server-side** cleanup (larger payloads, Cloud Refine, or Cloud AI), use the Refinery web app:\n\n**[blanklogic.io/refinery/#cloud-credits](https://blanklogic.io/refinery/#cloud-credits?utm_source=npm-refinery-mcp)** — Beta Token Pack ($5 / 500 runs) or Founder pass ($50).\n\n## Privacy\n\nRuns locally over stdio. Does not call Stripe, Ollama, or third-party LLM APIs for MCP tool calls. Cloud credits apply only to the web flow linked above.\n\nBy default, sends **anonymous aggregate usage** (bytes/timing only, never your input) to BlankLogic public stats. Disable with `BLANKLOGIC_MCP_TELEMETRY=0`. See [TOOL_CONTRACT.md](./TOOL_CONTRACT.md).\n\n## Support\n\n- Homepage: [blanklogic.io](https://blanklogic.io/)\n- Web app: [blanklogic.io/refinery](https://blanklogic.io/refinery/)\n- Bug reports: [blanklogic.io/#bugs](https://blanklogic.io/#bugs)\n- Directory tags: `mcp`, `cursor`, `claude-code`, `ai-agents`, `context-hygiene`, `secret-redaction`\n","readmeFilename":"README.md"}