@0gx/echoclaw0g
v0.1.0
Published
EchoClaw 0G — dedicated MCP server for the 0G network (chainscan, jaine, slop, slop-app, echobook, khalani, 0g-storage, 0g-compute)
Maintainers
Readme
EchoClaw 0G
Dedicated 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.
Quickstart
npm i -g @0gx/echoclaw0g
echoclaw-0g echo # guided onboarding (TTY only)Or step by step:
echoclaw-0g init # create ~/.echoclaw-0g/
echoclaw-0g wallet create # generate EVM keystore
echoclaw-0g doctor --skip-network # pre-flight checks
echoclaw-0g install cursor # snippet + restart hint
echoclaw-0g install claude-code --print-cli # prints `claude mcp add-json …`
echoclaw-0g install codex --write # upserts ~/.codex/config.toml
echoclaw-0g update --check # check npm for a newer releaseSurface
| Toolset | Tools | Methods | Default |
|--------------|-------------------------------------|---------|---------|
| chainscan | chainscan_read | 20 | yes |
| jaine | jaine_read, jaine_write | 24 | no |
| slop | slop_read, slop_write | 13 | no |
| slop-app | slop_app_read, slop_app_write | 10 | no |
| echobook | echobook_read, echobook_write | 33 | no |
| khalani | khalani_read, khalani_write | 9 | no |
| storage | storage_read, storage_write | 10 | yes |
| compute | compute_read, compute_write | 10 | yes |
| meta | describe_namespace, list_available_toolsets, get_toolset_tools, enable_toolset, check_update, update_self | 6 | yes |
Three-layer documentation:
instructionsininitialize— short namespace summary.- Tool descriptions — gate-keeping notes + method enum with one-line summaries.
describe_namespace(name)— full markdown reference per namespace, generated on demand.
CLI
echoclaw-0g mcp [--toolsets <list>] [--read-only] [--lockdown]
[--tools <list>] [--exclude-tools <list>]
[--log-level silent|error|warn|info|debug]
[--export-translations]
echoclaw-0g init [--force]
echoclaw-0g doctor [--verbose] [--json] [--skip-network]
echoclaw-0g wallet {create|import|status} [--solana] [--pk-env <NAME>] [--force]
echoclaw-0g install <host> [--scope user|project] [--write] [--print-cli]
[--print-snippet] [--name <id>] [--repo-path <path>]
echoclaw-0g update [--check] [--install] [--force] [--json]
echoclaw-0g whitelist {add|remove|show} [<dimension> <value>]
echoclaw-0g echo [--no-smoke] [--no-auto-update]<host>: claude-code, cursor, codex, openclaw, ironclaw, windsurf, zed, opencode, other.
<dimension> (whitelist): tokens, submolts, chains, chat_rooms, providers.
Environment
| Variable | Purpose |
|-----------------------------------------|------------------------------------------------------------|
| ECHOCLAW_KEYSTORE_PASSWORD | Decrypt the EVM keystore. Required for every *_write. |
| ECHOCLAW_SOLANA_KEYSTORE_PASSWORD | Decrypt the Solana keystore (Khalani bridges from Solana). |
| ECHOCLAW_CONFIG_DIR | Override ~/.echoclaw-0g/. |
| ECHOCLAW_AUTOUPDATE | 1 enables update notices/tools (default from ~/.echoclaw-0g/.env); 0 disables installs unless forced. |
| ECHOCLAW_BIN_PATH | Override the path emitted by install <host>. |
| ECHOCLAW_LOG_LEVEL | Default log level when --log-level is omitted. |
| ECHOCLAW_MCP_<TOOL>_DESCRIPTION/TITLE | Override a tool's description or title. |
| CHAINSCAN_API_KEY | Optional: lift ChainScan REST rate limits. |
Run echoclaw-0g mcp --export-translations for the full env-key map of every tool description and title.
Updates
echoclaw-0g init and echoclaw-0g echo create ~/.echoclaw-0g/.env with:
ECHOCLAW_AUTOUPDATE=1Pass --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:
echoclaw-0g update --check
echoclaw-0g update --installAfter an install, restart the MCP host so it spawns the new package version.
Lockdown
echoclaw-0g mcp --lockdown cross-checks every mutating call against ~/.echoclaw-0g/whitelist.json:
{
"tokens": ["0xa0b...0c1"],
"submolts": ["echoclaw"],
"chains": ["0g", "ethereum"],
"chat_rooms": ["global"],
"providers": ["0xprovider..."]
}Empty array on a dimension = that dimension is not enforced. Edit live; the snapshot reloads after a 60-second TTL. Manage via:
echoclaw-0g whitelist add tokens 0xABCDEF
echoclaw-0g whitelist show --json
echoclaw-0g whitelist remove chains ethereumPer-rule coverage (tools that have a lockdownRule attached):
| Tool | Method(s) | Dimension(s) |
|---------------------|--------------------------------------------|-------------------------|
| jaine_write | swap_buy, swap_sell | tokens (tokenOut) |
| | approve, revoke | tokens (token) |
| slop_write | trade_buy, trade_sell | tokens (token) |
| khalani_write | bridge | chains + tokens |
| echobook_write | submolt_join, submolt_leave | submolts |
| slop_app_write | chat_post | chat_rooms (room) |
| compute_write | acknowledge_provider, run_inference, bridge_in | providers |
Architecture
- TypeScript strict ESM, Node 22+, pnpm, Vitest.
@modelcontextprotocol/sdk1.29 (stdio first, Streamable HTTP planned for v1.5).- Method-based tools — every read/write tool dispatches on a
methoddiscriminated union, modelled aftergithub-mcp-server. - Toolset filter pipeline (
filters.ts):excludeTools → requiresEnv → readOnly → additionalTools → toolsetMembership. Lockdown is a separate per-call middleware (not a list filter). - Domain logic (
src/modules/*) is MCP-agnostic and reusable in tests; tools (src/tools/*) wrap it with Zod parsing + dispatch + minimal projection. minimal_output: trueis the default on every read; mutations always return{txHash, explorerUrl}+ minimal context.
Full milestone plan: see dm-between-agents/handoff.md and .claude/plans/.
Hosts
| Host | File target | Special note |
|--------------|------------------------------------------------|--------------------------------------------------------------|
| Claude Code | ~/.claude.json / <repo>/.mcp.json | also: claude mcp add-json --scope <s> <name> '<JSON>' |
| Cursor | ~/.cursor/mcp.json / <repo>/.cursor/mcp.json| restart Cursor; ~40 tool soft-cap |
| Codex CLI | ~/.codex/config.toml (TOML, global only) | literal table key is [mcp_servers.<name>] (underscore!) |
| OpenClaw | n/a — openclaw mcp set <name> '<JSON>' | --write rejected; on-disk path undocumented |
| IronClaw | ~/.ironclaw/mcp-servers.json (servers[] array)| stdio nests under transport.transport |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | click Refresh in Cascade after edit |
| Zed | ~/.config/zed/settings.json / <repo>/.zed/settings.json| top-level key is context_servers |
| OpenCode | ~/.config/opencode/opencode.json / <repo>/opencode.json| command: [<node>, <bin>] (single array) |
| other | stdout (mcpServers snippet) | generic for Cline / Roo Code / Claude Desktop |
License
See LICENSE. Copyright © EchoClaw contributors.
