{"_id":"@dhedge/chamber-mcp","_rev":"4-f14bf27b677477a57d1a4640a7e78c87","name":"@dhedge/chamber-mcp","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@dhedge/chamber-mcp","version":"0.1.0","license":"MIT","_id":"@dhedge/chamber-mcp@0.1.0","maintainers":[{"name":"hochbrj","email":"jhochbrueckner@gmail.com"},{"name":"radek-dhedge","email":"radek@dhedge.org"},{"name":"itsahedge","email":"itsahedge@pm.me"},{"name":"pavti","email":"paveltimosh@gmail.com"},{"name":"digna","email":"denis.ignatovich.m@gmail.com"},{"name":"ayavorski","email":"artsiom.yavorski@gmail.com"},{"name":"dim-lbc","email":"dmitriylobachevskiy@gmail.com"},{"name":"tomshear","email":"tomshear32@gmail.com"}],"bin":{"chamber":"dist/cli.js"},"dist":{"shasum":"238e7f78378a4c141b988ba4d51858af100c3184","tarball":"https://registry.npmjs.org/@dhedge/chamber-mcp/-/chamber-mcp-0.1.0.tgz","fileCount":23,"integrity":"sha512-4uHQCx5fxN0QP9bOTGem9Au1y+qyxHzObH6ka2aTnIvtbIb1x0jLpJLhjxFYk0wjBbu5nvYosacPluftet+Ycg==","signatures":[{"sig":"MEUCIHaThSSD5BnM+h+k4kx98NmWPdtzoAczK9V13bJcfPupAiEAm2JXGKK2DYeN5fODEHFO9kKHcbCzPNJ5AeiwWixHAAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175714},"type":"module","gitHead":"42cff01f4a03d48e4a4623189dc9578851316670","scripts":{"dev":"tsx src/cli.ts","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"hochbrj","email":"jhochbrueckner@gmail.com"},"_npmVersion":"11.7.0","description":"Chamber MCP — link vaults locally and expose them to AI agents via MCP","directories":{},"_nodeVersion":"20.18.3","dependencies":{"dotenv":"^17.4.2","ethers":"^5.7.0","commander":"^12.0.0","@dhedge/v2-sdk":"^2.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chamber-mcp_0.1.0_1778228663918_0.7838974494881465","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dhedge/chamber-mcp","version":"0.1.1","license":"MIT","_id":"@dhedge/chamber-mcp@0.1.1","maintainers":[{"name":"hochbrj","email":"jhochbrueckner@gmail.com"},{"name":"radek-dhedge","email":"radek@dhedge.org"},{"name":"itsahedge","email":"itsahedge@pm.me"},{"name":"pavti","email":"paveltimosh@gmail.com"},{"name":"digna","email":"denis.ignatovich.m@gmail.com"},{"name":"ayavorski","email":"artsiom.yavorski@gmail.com"},{"name":"dim-lbc","email":"dmitriylobachevskiy@gmail.com"},{"name":"tomshear","email":"tomshear32@gmail.com"}],"bin":{"chamber":"dist/cli.js"},"dist":{"shasum":"782374fd2975e710ee247cf1462dd2e9392dd7f2","tarball":"https://registry.npmjs.org/@dhedge/chamber-mcp/-/chamber-mcp-0.1.1.tgz","fileCount":23,"integrity":"sha512-nPvWyqhjPg817GknpxLgu1G+W1HiY43k3IlKl7SbXpc0nsb3f/p4gN39uAGwVCWQEEiIhM8DW0JaXb9HL3HO8g==","signatures":[{"sig":"MEUCIQDzrC9HTzgVZnhMmKebu4pilIMfc/MCAO0HPeJ13h1WewIgRDw/z74VccUEx4pEKn+/vCKCBG515MRudfwjL9oZLng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175504},"type":"module","gitHead":"8deb2dd6a84fceb239551061141d6034658bf2f3","scripts":{"dev":"tsx src/cli.ts","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"hochbrj","email":"jhochbrueckner@gmail.com"},"_npmVersion":"11.7.0","description":"Chamber MCP — link vaults locally and expose them to AI agents via MCP","directories":{},"_nodeVersion":"20.18.3","dependencies":{"dotenv":"^17.4.2","ethers":"^5.7.0","commander":"^12.0.0","@dhedge/v2-sdk":"^2.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chamber-mcp_0.1.1_1778228834529_0.29694488609887704","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dhedge/chamber-mcp","version":"0.1.2","license":"MIT","_id":"@dhedge/chamber-mcp@0.1.2","maintainers":[{"name":"hochbrj","email":"jhochbrueckner@gmail.com"},{"name":"radek-dhedge","email":"radek@dhedge.org"},{"name":"itsahedge","email":"itsahedge@pm.me"},{"name":"pavti","email":"paveltimosh@gmail.com"},{"name":"digna","email":"denis.ignatovich.m@gmail.com"},{"name":"ayavorski","email":"artsiom.yavorski@gmail.com"},{"name":"dim-lbc","email":"dmitriylobachevskiy@gmail.com"},{"name":"tomshear","email":"tomshear32@gmail.com"}],"bin":{"chamber":"dist/cli.js"},"dist":{"shasum":"be829532e87a04072621bb36415526e0d6c1926f","tarball":"https://registry.npmjs.org/@dhedge/chamber-mcp/-/chamber-mcp-0.1.2.tgz","fileCount":23,"integrity":"sha512-orVkgN/JzOpLoKd+uyj8Gsdd+c5YIGtx64gNefG/Wg2JDAGSGVQgoa58xiJytvXLgSu5MJhEeWHxaDjzF8mKNQ==","signatures":[{"sig":"MEUCID+f3bB2JfqGZnvjYOr9BzSocxmgGYy8qQVdskejmZ17AiEAyHvvpYq6lPO8QtNJY3v4v7Sz686SGZaA01jtAb+V+q8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175504},"type":"module","gitHead":"8deb2dd6a84fceb239551061141d6034658bf2f3","scripts":{"dev":"tsx src/cli.ts","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"hochbrj","email":"jhochbrueckner@gmail.com"},"_npmVersion":"11.16.0","description":"Chamber MCP — link vaults locally and expose them to AI agents via MCP","directories":{},"_nodeVersion":"24.18.0","dependencies":{"dotenv":"^17.4.2","ethers":"^5.7.0","commander":"^12.0.0","@dhedge/v2-sdk":"^2.2.3","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chamber-mcp_0.1.2_1783495005972_0.7309129662417695","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dhedge/chamber-mcp","version":"0.1.3","description":"Chamber MCP — link vaults locally and expose them to AI agents via MCP","type":"module","bin":{"chamber":"dist/cli.js"},"license":"MIT","scripts":{"build":"tsc","dev":"tsx src/cli.ts","start":"node dist/cli.js","prepublishOnly":"npm run build"},"dependencies":{"@dhedge/v2-sdk":"^2.2.5","@modelcontextprotocol/sdk":"^1.11.0","commander":"^12.0.0","dotenv":"^17.4.2","ethers":"^5.7.0"},"devDependencies":{"@types/node":"^20.0.0","tsx":"^4.0.0","typescript":"^5.0.0"},"gitHead":"aa19c30ae459c6d8a551ecb636a6ca77565ddf7b","_id":"@dhedge/chamber-mcp@0.1.3","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-yS3WYev3FfYKtX0N9t66gvC3EFQ9lm3ww8BP0unwUy+dWfyV8Zt5rux4AbURsZQwDHaZbCGqK96jU6tAGT1K8g==","shasum":"0dfd025c4f3d9005b8c971d72c79478a8138df56","tarball":"https://registry.npmjs.org/@dhedge/chamber-mcp/-/chamber-mcp-0.1.3.tgz","fileCount":23,"unpackedSize":175504,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDLx9kh0ybNOa0/NP95qRHPYRF8ixSydrs/ttQr/VN4LAIhAI7TOG/oLcrK/M2NC0nXWQHcedGqydxBjX6dcDG2IFx6"}]},"_npmUser":{"name":"hochbrj","email":"jhochbrueckner@gmail.com"},"directories":{},"maintainers":[{"name":"hochbrj","email":"jhochbrueckner@gmail.com"},{"name":"radek-dhedge","email":"radek@dhedge.org"},{"name":"itsahedge","email":"itsahedge@pm.me"},{"name":"pavti","email":"paveltimosh@gmail.com"},{"name":"digna","email":"denis.ignatovich.m@gmail.com"},{"name":"ayavorski","email":"artsiom.yavorski@gmail.com"},{"name":"dim-lbc","email":"dmitriylobachevskiy@gmail.com"},{"name":"tomshear","email":"tomshear32@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chamber-mcp_0.1.3_1784714893010_0.05554678624595244"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-08T08:24:23.780Z","modified":"2026-07-22T10:08:13.437Z","0.1.0":"2026-05-08T08:24:24.093Z","0.1.1":"2026-05-08T08:27:14.693Z","0.1.2":"2026-07-08T07:16:46.152Z","0.1.3":"2026-07-22T10:08:13.119Z"},"license":"MIT","description":"Chamber MCP — link vaults locally and expose them to AI agents via MCP","maintainers":[{"name":"hochbrj","email":"jhochbrueckner@gmail.com"},{"name":"radek-dhedge","email":"radek@dhedge.org"},{"name":"itsahedge","email":"itsahedge@pm.me"},{"name":"pavti","email":"paveltimosh@gmail.com"},{"name":"digna","email":"denis.ignatovich.m@gmail.com"},{"name":"ayavorski","email":"artsiom.yavorski@gmail.com"},{"name":"dim-lbc","email":"dmitriylobachevskiy@gmail.com"},{"name":"tomshear","email":"tomshear32@gmail.com"}],"readme":"# Chamber MCP\n\nLocal-first MCP server for managing [Chamber](https://chamberfi.com) investment vaults. Trade, lend, add liquidity, and manage Toros leveraged token positions — from any AI agent that supports MCP.\n\nWorks with **Claude Desktop, Cursor, Windsurf, Cline, VS Code, Gemini CLI, ChatGPT Desktop** — anything that supports the [Model Context Protocol](https://modelcontextprotocol.io).\n\n## How it works\n\n```\nAI agent (Claude, Cursor, etc.)\n        │  MCP over stdio\n        ▼\n  chamber mcp -s all\n        │\n        ▼\n  ~/.chamber/vaults.json   ←  encrypted private keys (AES-256, never leave your machine)\n  ~/.chamber/.env          ←  RPC URLs, API keys\n        │\n        ▼\n  dHEDGE v2 SDK  →  blockchain RPCs\n```\n\nPrivate keys are stored locally, encrypted with a machine-local key at `~/.chamber/.key`. No cloud. No accounts.\n\n---\n\n## Quick start\n\n**1. Set your API keys and RPC URLs**\n\nCreate `~/.chamber/.env`:\n\n```bash\n# Optional: required only if you want to route trades via Odos\nODOS_API_KEY=your-odos-api-key\n\n# Optional: required only if you want to route trades via 1inch\nONEINCH_API_KEY=your-oneinch-api-key\n\n# Recommended: use a private RPC for reliability (Alchemy, Infura, etc.)\nARBITRUM_RPC_URL=https://arb-mainnet.g.alchemy.com/v2/your-key\nBASE_RPC_URL=https://base-mainnet.g.alchemy.com/v2/your-key\nPOLYGON_RPC_URL=https://polygon-mainnet.g.alchemy.com/v2/your-key\nOPTIMISM_RPC_URL=https://opt-mainnet.g.alchemy.com/v2/your-key\nETHEREUM_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/your-key\n```\n\nGet an Odos API key at [odos.xyz](https://odos.xyz) (free tier available).\n\n**2. Link your vault** (private key never touches Claude)\n\n```bash\nnpx @dhedge/chamber-mcp vault link --address 0xYourVaultAddress --network arbitrum\n# prompts for your trader wallet private key\n# The trader wallet is the EOA authorised by the vault manager to execute trades — set in the dHEDGE manager interface. Not the manager wallet, not a fresh wallet.\n```\n\n**3. Add to Claude Desktop**\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"chamber\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dhedge/chamber-mcp\", \"mcp\", \"-s\", \"all\"]\n    }\n  }\n}\n```\n\nFor Cursor, Windsurf, Cline — add the same command in your MCP settings.\n\n**4. Restart Claude Desktop and start trading**\n\n> \"Show me what's in my vault 0x... on Arbitrum\"\n> \"Buy ETHBULL3X with 1000 USDC on Arbitrum\"\n> \"Lend 500 USDC to Aave on Arbitrum\"\n\n---\n\n## Commands\n\n```bash\nchamber vault link   --address <0x...> --network <network>   # link a vault\nchamber vault list                                            # show linked vaults\nchamber vault unlink --address <0x...> --network <network>   # remove a vault\n\nchamber mcp -s all                 # started automatically by your MCP client\n```\n\n**Supported networks:** `polygon` `optimism` `arbitrum` `base` `ethereum` `hyperliquid`\n\n---\n\n## Configuration\n\nAll configuration lives in `~/.chamber/`:\n\n| File | Purpose |\n|------|---------|\n| `.env` | RPC URLs and API keys (loaded automatically on startup) |\n| `.key` | Machine-local AES-256 encryption key (auto-generated) |\n| `vaults.json` | Encrypted vault private keys |\n\n**Supported environment variables:**\n\n| Variable | Description |\n|----------|-------------|\n| `ODOS_API_KEY` | Required for Toros trades. Get one at [odos.xyz](https://odos.xyz). |\n| `ARBITRUM_RPC_URL` | Arbitrum RPC endpoint |\n| `BASE_RPC_URL` | Base RPC endpoint |\n| `POLYGON_RPC_URL` | Polygon RPC endpoint |\n| `OPTIMISM_RPC_URL` | Optimism RPC endpoint |\n| `ETHEREUM_RPC_URL` | Ethereum RPC endpoint |\n| `HYPERLIQUID_RPC_URL` | Hyperliquid RPC endpoint |\n\nPublic RPCs are used as fallback for any variable not set.\n\n**MCP server modes** — set via the `-s` flag in your MCP client config:\n\n| Args | Mode | What's enabled |\n|------|------|----------------|\n| `mcp` (no flag) | Read-only | Vault info, composition, Toros products, Hyperliquid positions |\n| `mcp -s trade` | + Trading | Approve tokens, execute swaps, change assets |\n| `mcp -s trade,toros` | + Toros | Toros withdrawals and limit orders |\n| `mcp -s trade,toros,lending` | + Lending | Aave V3, Compound V3, Fluid |\n| `mcp -s trade,toros,lending,lp` | + Liquidity | Uniswap V3, Velodrome, Aerodrome, Pancake CL |\n| `mcp -s all` | Everything | All tools enabled |\n\nRead-only mode is safe to grant to any AI client. Use `-s all` only with trusted agents.\n\n---\n\n## MCP tools\n\n### Always available (`read`)\n\n| Tool | Description |\n|------|-------------|\n| `chamber_list_linked_vaults` | List linked vaults on this machine |\n| `chamber_get_vault_info` | Vault name, manager, total value |\n| `chamber_get_composition` | Current holdings and balances |\n| `chamber_estimate_trade` | Estimate gas before executing |\n| `chamber_get_toros_products` | Browse Toros leveraged token products |\n| `chamber_get_toros_deposit_assets` | Valid deposit assets for a Toros pool |\n| `chamber_toros_get_limit_order` | Read active limit order |\n| `chamber_toros_has_limit_order` | Check if limit order exists |\n| `chamber_get_nft_manager_address` | NFT manager address for LP protocols |\n| `chamber_price_to_tick` | Convert price range to ticks for CL pools |\n| `chamber_hyperliquid_get_positions` | Perp + spot positions and PnL |\n| `chamber_hyperliquid_get_open_orders` | Unfilled orders on Hyperliquid |\n\n### `-s trade`\n\n| Tool | Description |\n|------|-------------|\n| `chamber_approve_token` | Approve token for a DEX aggregator |\n| `chamber_approve_spender` | Approve token for any spender address |\n| `chamber_execute_trade` | Swap via Odos, 1inch, KyberSwap, Toros, Pendle, CoW |\n| `chamber_change_assets` | Update vault's enabled asset list |\n\n### `-s toros`\n\n| Tool | Description |\n|------|-------------|\n| `chamber_complete_toros_withdrawal` | Claim tokens after Toros redemption |\n| `chamber_toros_approve_limit_order` | Approve token for limit order manager |\n| `chamber_toros_create_limit_order` | Set stop-loss / take-profit |\n| `chamber_toros_modify_limit_order` | Update existing limit order |\n| `chamber_toros_delete_limit_order` | Cancel limit order |\n\n### `-s lending`\n\n| Tool | Description |\n|------|-------------|\n| `chamber_aave_lend` | Supply to Aave V3 |\n| `chamber_aave_withdraw` | Withdraw from Aave V3 |\n| `chamber_aave_borrow` | Borrow from Aave V3 |\n| `chamber_aave_repay` | Repay Aave V3 loan |\n| `chamber_compound_lend` | Supply to Compound V3 or Fluid |\n| `chamber_compound_withdraw` | Withdraw from Compound V3 or Fluid |\n\n### `-s lp`\n\n| Tool | Description |\n|------|-------------|\n| `chamber_lp_add` | Open concentrated liquidity position |\n| `chamber_lp_increase` | Add liquidity to existing position |\n| `chamber_lp_remove` | Remove liquidity (partial or full) |\n| `chamber_lp_claim_fees` | Collect trading fees |\n\nSupported protocols: Uniswap V3, Velodrome CL, Aerodrome CL, Pancake CL\n\n### `-s hyperliquid`\n\n| Tool | Description |\n|------|-------------|\n| `chamber_hyperliquid_deposit` | Deposit USDC into Hyperliquid |\n| `chamber_hyperliquid_perp_to_spot` | Move USDC perp → spot wallet |\n| `chamber_hyperliquid_withdraw` | Withdraw USDC back to EVM vault |\n| `chamber_hyperliquid_order` | Open market order (long or short) |\n| `chamber_hyperliquid_close_position` | Close position by percentage |\n\n> Hyperliquid trading requires the vault to be deployed on the Hyperliquid network and whitelisted by dHEDGE.\n\n---\n\n## Security\n\n- Private keys are AES-256-CBC encrypted using a randomly generated machine-local key (`~/.chamber/.key`)\n- Keys never leave your machine — no cloud server, no telemetry\n- Vault linking is CLI-only — private keys are never passed through Claude or logged\n- Run `chamber mcp` (no `-s` flag) for read-only access — safe to grant to AI clients by default\n- The `-s all` flag enables all write operations including on-chain transactions — use with trusted agents only\n\n---\n\n## Related\n\n- [Chamber](https://chamberfi.com) — the underlying protocol\n- [Model Context Protocol](https://modelcontextprotocol.io) — the MCP spec\n","readmeFilename":"README.md"}