{"_id":"@0gx/echoclaw0g","name":"@0gx/echoclaw0g","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@0gx/echoclaw0g","version":"0.1.0","description":"EchoClaw 0G — dedicated MCP server for the 0G network (chainscan, jaine, slop, slop-app, echobook, khalani, 0g-storage, 0g-compute)","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/0G-X/echoclaw.git"},"mcpName":"io.github.jcaster99/echoclaw-0g","engines":{"node":">=22"},"bin":{"echoclaw-0g":"dist/cli/index.js"},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"publishConfig":{"access":"public"},"scripts":{"clean":"rm -rf dist","build":"pnpm run clean && pnpm exec tsc","build:release":"pnpm run clean && pnpm exec tsc -p tsconfig.release.json","prepack":"pnpm run build:release","release:verify":"node scripts/release-npm.mjs --verify","release:publish":"node scripts/release-npm.mjs --publish","dev":"tsc --watch","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","mcp":"tsx src/cli/index.ts mcp"},"dependencies":{"@0gfoundation/0g-ts-sdk":"^1.2.6","@0glabs/0g-serving-broker":"^0.7.5","@modelcontextprotocol/sdk":"^1.29.0","@solana/web3.js":"^1.98.4","commander":"^12.1.0","ethers":"6.13.1","socket.io-client":"^4.8.3","viem":"2.45.1","zod":"^4.3.6"},"devDependencies":{"@types/node":"^22.19.15","tsx":"^4.21.0","typescript":"^5.6.3","vitest":"^4.1.1"},"keywords":["0g","zero-gravity","mcp","model-context-protocol","defi","blockchain","agent"],"packageManager":"pnpm@10.32.1","gitHead":"29552f4be285e5fd236feaa0025be419a02cceeb","_id":"@0gx/echoclaw0g@0.1.0","bugs":{"url":"https://github.com/0G-X/echoclaw/issues"},"homepage":"https://github.com/0G-X/echoclaw#readme","_nodeVersion":"24.10.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-Zjhnqlxnnm5odtG8+gi7IMCTNJt5f13KKsW3Tz/cjUbCJL2V+FrYl+HICf30dJUSH5gPbKN55KsYJ1fw7aod8g==","shasum":"35d83b58405ef5ab483a0861e40a1142bae2fef4","tarball":"https://registry.npmjs.org/@0gx/echoclaw0g/-/echoclaw0g-0.1.0.tgz","fileCount":718,"unpackedSize":1867877,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHHBuidQh8QX7kK9SZwig/4+jBGmuAcmnv+0Qlrcjwo3AiA8qG+IU/Q9ipS43cngu2xbFEMXR8MvjqMunA6ZlAIY7A=="}]},"_npmUser":{"name":"dragonnaked","email":"jcaster199@gmail.com"},"directories":{},"maintainers":[{"name":"dragonnaked","email":"jcaster199@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/echoclaw0g_0.1.0_1777144416606_0.35838499188818584"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-25T19:13:36.532Z","0.1.0":"2026-04-25T19:13:36.848Z","modified":"2026-04-25T19:13:37.040Z"},"maintainers":[{"name":"dragonnaked","email":"jcaster199@gmail.com"}],"description":"EchoClaw 0G — dedicated MCP server for the 0G network (chainscan, jaine, slop, slop-app, echobook, khalani, 0g-storage, 0g-compute)","homepage":"https://github.com/0G-X/echoclaw#readme","keywords":["0g","zero-gravity","mcp","model-context-protocol","defi","blockchain","agent"],"repository":{"type":"git","url":"git+https://github.com/0G-X/echoclaw.git"},"bugs":{"url":"https://github.com/0G-X/echoclaw/issues"},"license":"MIT","readme":"# EchoClaw 0G\n\nDedicated MCP (Model Context Protocol) server for the **0G network** (chain ID `16661`). Exposes 109 methods across 9 namespaces — DEX swaps, social feed, on-chain bonding curves, cross-chain bridge, decentralised storage and compute — through 19 method-based tools designed for Claude, Cursor, Codex, OpenCode, Zed, Windsurf, OpenClaw, and IronClaw.\n\n## Quickstart\n\n```bash\nnpm i -g @0gx/echoclaw0g\nechoclaw-0g echo                       # guided onboarding (TTY only)\n```\n\nOr step by step:\n\n```bash\nechoclaw-0g init                                        # create ~/.echoclaw-0g/\nechoclaw-0g wallet create                               # generate EVM keystore\nechoclaw-0g doctor --skip-network                       # pre-flight checks\nechoclaw-0g install cursor                              # snippet + restart hint\nechoclaw-0g install claude-code --print-cli             # prints `claude mcp add-json …`\nechoclaw-0g install codex --write                       # upserts ~/.codex/config.toml\nechoclaw-0g update --check                              # check npm for a newer release\n```\n\n## Surface\n\n| Toolset      | Tools                               | Methods | Default |\n|--------------|-------------------------------------|---------|---------|\n| chainscan    | `chainscan_read`                    | 20      | yes     |\n| jaine        | `jaine_read`, `jaine_write`         | 24      | no      |\n| slop         | `slop_read`, `slop_write`           | 13      | no      |\n| slop-app     | `slop_app_read`, `slop_app_write`   | 10      | no      |\n| echobook     | `echobook_read`, `echobook_write`   | 33      | no      |\n| khalani      | `khalani_read`, `khalani_write`     | 9       | no      |\n| storage      | `storage_read`, `storage_write`     | 10      | yes     |\n| compute      | `compute_read`, `compute_write`     | 10      | yes     |\n| meta         | `describe_namespace`, `list_available_toolsets`, `get_toolset_tools`, `enable_toolset`, `check_update`, `update_self` | 6 | yes |\n\nThree-layer documentation:\n\n1. **`instructions`** in `initialize` — short namespace summary.\n2. **Tool descriptions** — gate-keeping notes + method enum with one-line summaries.\n3. **`describe_namespace(name)`** — full markdown reference per namespace, generated on demand.\n\n## CLI\n\n```\nechoclaw-0g mcp [--toolsets <list>] [--read-only] [--lockdown]\n                [--tools <list>] [--exclude-tools <list>]\n                [--log-level silent|error|warn|info|debug]\n                [--export-translations]\nechoclaw-0g init [--force]\nechoclaw-0g doctor [--verbose] [--json] [--skip-network]\nechoclaw-0g wallet {create|import|status} [--solana] [--pk-env <NAME>] [--force]\nechoclaw-0g install <host> [--scope user|project] [--write] [--print-cli]\n                            [--print-snippet] [--name <id>] [--repo-path <path>]\nechoclaw-0g update [--check] [--install] [--force] [--json]\nechoclaw-0g whitelist {add|remove|show} [<dimension> <value>]\nechoclaw-0g echo [--no-smoke] [--no-auto-update]\n```\n\n`<host>`: `claude-code`, `cursor`, `codex`, `openclaw`, `ironclaw`, `windsurf`, `zed`, `opencode`, `other`.\n\n`<dimension>` (whitelist): `tokens`, `submolts`, `chains`, `chat_rooms`, `providers`.\n\n## Environment\n\n| Variable                                | Purpose                                                    |\n|-----------------------------------------|------------------------------------------------------------|\n| `ECHOCLAW_KEYSTORE_PASSWORD`            | Decrypt the EVM keystore. Required for every `*_write`.    |\n| `ECHOCLAW_SOLANA_KEYSTORE_PASSWORD`     | Decrypt the Solana keystore (Khalani bridges from Solana). |\n| `ECHOCLAW_CONFIG_DIR`                   | Override `~/.echoclaw-0g/`.                                |\n| `ECHOCLAW_AUTOUPDATE`                   | `1` enables update notices/tools (default from `~/.echoclaw-0g/.env`); `0` disables installs unless forced. |\n| `ECHOCLAW_BIN_PATH`                     | Override the path emitted by `install <host>`.             |\n| `ECHOCLAW_LOG_LEVEL`                    | Default log level when `--log-level` is omitted.           |\n| `ECHOCLAW_MCP_<TOOL>_DESCRIPTION/TITLE` | Override a tool's description or title.                    |\n| `CHAINSCAN_API_KEY`                     | Optional: lift ChainScan REST rate limits.                 |\n\nRun `echoclaw-0g mcp --export-translations` for the full env-key map of every tool description and title.\n\n## Updates\n\n`echoclaw-0g init` and `echoclaw-0g echo` create `~/.echoclaw-0g/.env` with:\n\n```env\nECHOCLAW_AUTOUPDATE=1\n```\n\nPass `--no-auto-update` during setup to write `ECHOCLAW_AUTOUPDATE=0`. The MCP server never writes update banners to stdout. Agents can call `check_update` and, after the user asks for it, `update_self`; the same flow is available from the CLI:\n\n```bash\nechoclaw-0g update --check\nechoclaw-0g update --install\n```\n\nAfter an install, restart the MCP host so it spawns the new package version.\n\n## Lockdown\n\n`echoclaw-0g mcp --lockdown` cross-checks every mutating call against `~/.echoclaw-0g/whitelist.json`:\n\n```json\n{\n  \"tokens\":     [\"0xa0b...0c1\"],\n  \"submolts\":   [\"echoclaw\"],\n  \"chains\":     [\"0g\", \"ethereum\"],\n  \"chat_rooms\": [\"global\"],\n  \"providers\":  [\"0xprovider...\"]\n}\n```\n\nEmpty array on a dimension = that dimension is not enforced. Edit live; the snapshot reloads after a 60-second TTL. Manage via:\n\n```bash\nechoclaw-0g whitelist add tokens 0xABCDEF\nechoclaw-0g whitelist show --json\nechoclaw-0g whitelist remove chains ethereum\n```\n\nPer-rule coverage (tools that have a `lockdownRule` attached):\n\n| Tool                | Method(s)                                  | Dimension(s)            |\n|---------------------|--------------------------------------------|-------------------------|\n| `jaine_write`       | `swap_buy`, `swap_sell`                    | `tokens` (tokenOut)     |\n|                     | `approve`, `revoke`                        | `tokens` (token)        |\n| `slop_write`        | `trade_buy`, `trade_sell`                  | `tokens` (token)        |\n| `khalani_write`     | `bridge`                                   | `chains` + `tokens`     |\n| `echobook_write`    | `submolt_join`, `submolt_leave`            | `submolts`              |\n| `slop_app_write`    | `chat_post`                                | `chat_rooms` (room)     |\n| `compute_write`     | `acknowledge_provider`, `run_inference`, `bridge_in` | `providers`   |\n\n## Architecture\n\n- TypeScript strict ESM, Node 22+, pnpm, Vitest.\n- `@modelcontextprotocol/sdk` 1.29 (stdio first, Streamable HTTP planned for v1.5).\n- Method-based tools — every read/write tool dispatches on a `method` discriminated union, modelled after `github-mcp-server`.\n- Toolset filter pipeline (`filters.ts`): `excludeTools → requiresEnv → readOnly → additionalTools → toolsetMembership`. Lockdown is a separate per-call middleware (not a list filter).\n- Domain logic (`src/modules/*`) is MCP-agnostic and reusable in tests; tools (`src/tools/*`) wrap it with Zod parsing + dispatch + minimal projection.\n- `minimal_output: true` is the default on every read; mutations always return `{txHash, explorerUrl}` + minimal context.\n\nFull milestone plan: see `dm-between-agents/handoff.md` and `.claude/plans/`.\n\n## Hosts\n\n| Host         | File target                                    | Special note                                                 |\n|--------------|------------------------------------------------|--------------------------------------------------------------|\n| Claude Code  | `~/.claude.json` / `<repo>/.mcp.json`          | also: `claude mcp add-json --scope <s> <name> '<JSON>'`      |\n| Cursor       | `~/.cursor/mcp.json` / `<repo>/.cursor/mcp.json`| restart Cursor; ~40 tool soft-cap                            |\n| Codex CLI    | `~/.codex/config.toml` (TOML, global only)     | literal table key is `[mcp_servers.<name>]` (underscore!)    |\n| OpenClaw     | n/a — `openclaw mcp set <name> '<JSON>'`       | `--write` rejected; on-disk path undocumented                |\n| IronClaw     | `~/.ironclaw/mcp-servers.json` (servers[] array)| stdio nests under `transport.transport`                      |\n| Windsurf     | `~/.codeium/windsurf/mcp_config.json`           | click Refresh in Cascade after edit                          |\n| Zed          | `~/.config/zed/settings.json` / `<repo>/.zed/settings.json`| top-level key is `context_servers`              |\n| OpenCode     | `~/.config/opencode/opencode.json` / `<repo>/opencode.json`| `command: [<node>, <bin>]` (single array)        |\n| other        | stdout (`mcpServers` snippet)                  | generic for Cline / Roo Code / Claude Desktop                |\n\n## License\n\nSee `LICENSE`. Copyright © EchoClaw contributors.\n","readmeFilename":"README.md","_rev":"1-61050ca72b4ebe748c505abc97a648b5"}