{"_id":"@blockchain-forever/aelf-node-skill","_rev":"4-36865b39495c65906b620258e92780b9","name":"@blockchain-forever/aelf-node-skill","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@blockchain-forever/aelf-node-skill","version":"0.1.0","keywords":["aelf","mcp","agent","blockchain","sdk","skill"],"license":"MIT","_id":"@blockchain-forever/aelf-node-skill@0.1.0","maintainers":[{"name":"hzz780","email":"hzz780@qq.com"},{"name":"aelf-project","email":"azure@aelf.io"}],"homepage":"https://github.com/AElfProject/aelf-node-skill#readme","bugs":{"url":"https://github.com/AElfProject/aelf-node-skill/issues"},"bin":{"aelf-node-setup":"bin/setup.js","aelf-node-skill":"aelf_node_skill.ts"},"dist":{"shasum":"4d2f773271cef7cd1ccc7393d6e7b9db15ba5ff6","tarball":"https://registry.npmjs.org/@blockchain-forever/aelf-node-skill/-/aelf-node-skill-0.1.0.tgz","fileCount":34,"integrity":"sha512-6Vbocmsp87LTaW9rPatri63XvY4DOR7MczZQevraNvxTPK6eBC1yxe48ARAm5Cwn6tt+qvJb3gCOoxarJy/3nQ==","signatures":[{"sig":"MEUCIQCA87beJlJJkOyIZl/DJ4JsCTC4z+agb+urVDXb4T7y1gIgQNqumSDEkk3Pmbdeu3R6ge97b5f2QjIFJStTsFyziBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76051},"main":"index.ts","type":"module","exports":{".":"./index.ts","./mcp":"./src/mcp/server.ts"},"gitHead":"92909a8bbaefac43223ab00b12ec3958e1120057","scripts":{"cli":"bun run aelf_node_skill.ts","mcp":"bun run src/mcp/server.ts","test":"bun test tests/","setup":"bun run bin/setup.ts","test:live":"RUN_LIVE_TESTS=1 bun test tests/integration/","test:unit":"bun test tests/unit/","coverage:core":"bun run bin/check-core-coverage.ts","test:integration":"bun test tests/integration/","test:unit:coverage":"bun run test:unit --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage","test:unit:coverage:gate":"bun run test:unit:coverage && bun run coverage:core"},"_npmUser":{"name":"hzz780","email":"hzz780@qq.com"},"repository":{"url":"git+https://github.com/AElfProject/aelf-node-skill.git","type":"git"},"_npmVersion":"11.6.2","description":"AElf Node Skill for AI agents: REST for reads, SDK for contract execution, and selective fallback for fee estimate.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.24.0","aelf-sdk":"3.5.1-beta.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/aelf-node-skill_0.1.0_1772112028088_0.8772540035756777","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@blockchain-forever/aelf-node-skill","version":"0.1.1","keywords":["aelf","mcp","agent","blockchain","sdk","skill"],"license":"MIT","_id":"@blockchain-forever/aelf-node-skill@0.1.1","maintainers":[{"name":"hzz780","email":"hzz780@qq.com"},{"name":"aelf-project","email":"azure@aelf.io"}],"homepage":"https://github.com/AElfProject/aelf-node-skill#readme","bugs":{"url":"https://github.com/AElfProject/aelf-node-skill/issues"},"bin":{"aelf-node-setup":"bin/setup.js","aelf-node-skill":"aelf_node_skill.ts"},"dist":{"shasum":"753c45d953fa519be523d810dbd9cc972d32a754","tarball":"https://registry.npmjs.org/@blockchain-forever/aelf-node-skill/-/aelf-node-skill-0.1.1.tgz","fileCount":36,"integrity":"sha512-8YwsCROGxYlQq84rCM1+LeW0VXtfH+kHqF3yEX+2ZXqbjNkq1TXSVXRzI0popyoaC5HnZcP9TXeJVErZkD8VMw==","signatures":[{"sig":"MEQCIFM3AXftDZ/VK/WQhNvKhk56vfajUg8P7qJRhqSMLO7QAiAgOWNXgzd5rpIiTPOUcrNiFvUeUfM2DH48HWJWHKmzkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blockchain-forever%2faelf-node-skill@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":85676},"main":"index.ts","type":"module","exports":{".":"./index.ts","./mcp":"./src/mcp/server.ts"},"gitHead":"93ecbe146464884a15a243732d07dbed48da2966","scripts":{"cli":"bun run aelf_node_skill.ts","mcp":"bun run src/mcp/server.ts","test":"bun test tests/","setup":"bun run bin/setup.ts","test:live":"RUN_LIVE_TESTS=1 bun test tests/integration/","test:unit":"bun test tests/unit/","deps:check":"bun run scripts/check-deps-baseline.ts","coverage:core":"bun run bin/check-core-coverage.ts","coverage:gate":"bun run scripts/coverage-gate.ts","build:openclaw":"bun run bin/generate-openclaw.ts","coverage:badge":"bun run bin/generate-coverage-badge.ts","test:coverage:ci":"COVERAGE_MIN_LINES=85 COVERAGE_MIN_FUNCS=80 bun run test:unit:coverage && bun run coverage:gate","test:integration":"bun test tests/integration/","test:unit:coverage":"bun run test:unit --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage","build:openclaw:check":"bun run bin/generate-openclaw.ts --check","test:unit:coverage:gate":"bun run test:unit:coverage && bun run coverage:core"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c2e4d78d-ef60-419c-b948-e5a365b379ba"}},"repository":{"url":"git+https://github.com/AElfProject/aelf-node-skill.git","type":"git"},"_npmVersion":"11.11.0","description":"AElf Node Skill for AI agents: REST for reads, SDK for contract execution, and selective fallback for fee estimate.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.24.0","aelf-sdk":"^3.5.1-beta.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/aelf-node-skill_0.1.1_1772290673613_0.3940107599405902","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@blockchain-forever/aelf-node-skill","version":"0.1.2","keywords":["aelf","mcp","agent","blockchain","sdk","skill"],"license":"MIT","_id":"@blockchain-forever/aelf-node-skill@0.1.2","maintainers":[{"name":"hzz780","email":"hzz780@qq.com"},{"name":"aelf-project","email":"azure@aelf.io"}],"homepage":"https://github.com/AElfProject/aelf-node-skill#readme","bugs":{"url":"https://github.com/AElfProject/aelf-node-skill/issues"},"bin":{"aelf-node-setup":"bin/setup.js","aelf-node-skill":"aelf_node_skill.ts"},"dist":{"shasum":"143eec9cd2d7d523f201219bffa937d94830ad0b","tarball":"https://registry.npmjs.org/@blockchain-forever/aelf-node-skill/-/aelf-node-skill-0.1.2.tgz","fileCount":39,"integrity":"sha512-8y7ZM1QZV20VdtfOhc1G0cu1EqPJghJmJ6L/toBgJD8Ifhkj7sAD7p0VMk2opc3ru/Qj9MluPkFuvE+bYvzHNQ==","signatures":[{"sig":"MEUCIQCgvQrh4fMUf2YISphU2OqR6a1GT1Bp6+8kQr8DhNGyyAIgWK6IhM7KD4Tv99jaSRWgJ869+zyJ7PMlTb28vCcgBDw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blockchain-forever%2faelf-node-skill@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":105263},"main":"index.ts","type":"module","exports":{".":"./index.ts","./mcp":"./src/mcp/server.ts"},"gitHead":"ed9efc91c29dbc12f90641c071eb2734d6397336","scripts":{"cli":"bun run aelf_node_skill.ts","mcp":"bun run src/mcp/server.ts","test":"bun test tests/","setup":"bun run bin/setup.ts","test:live":"RUN_LIVE_TESTS=1 bun test tests/integration/","test:unit":"bun test tests/unit/","typecheck":"bun run typecheck:src && bun run typecheck:test","deps:check":"bun run scripts/check-deps-baseline.ts","coverage:core":"bun run bin/check-core-coverage.ts","coverage:gate":"bun run scripts/coverage-gate.ts","typecheck:src":"bunx tsc -p tsconfig.src.json --noEmit","build:openclaw":"bun run bin/generate-openclaw.ts","coverage:badge":"bun run bin/generate-coverage-badge.ts","typecheck:test":"bunx tsc -p tsconfig.test.json --noEmit","test:coverage:ci":"COVERAGE_MIN_LINES=85 COVERAGE_MIN_FUNCS=80 bun run test:unit:coverage && bun run coverage:gate","test:integration":"bun test tests/integration/","test:unit:coverage":"bun run test:unit --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage","build:openclaw:check":"bun run bin/generate-openclaw.ts --check","test:unit:coverage:gate":"bun run test:unit:coverage && bun run coverage:core"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c2e4d78d-ef60-419c-b948-e5a365b379ba"}},"repository":{"url":"git+https://github.com/AElfProject/aelf-node-skill.git","type":"git"},"_npmVersion":"11.11.0","description":"AElf Node Skill for AI agents: REST for reads, SDK for contract execution, and selective fallback for fee estimate.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.24.0","aelf-sdk":"^3.5.1-beta.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","@types/bun":"latest","typescript":"^5.7.0","@types/node":"latest"},"_npmOperationalInternal":{"tmp":"tmp/aelf-node-skill_0.1.2_1772640514851_0.6265591819730241","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@blockchain-forever/aelf-node-skill","version":"0.1.3","description":"AElf Node Skill for AI agents: REST for reads, SDK for contract execution, and selective fallback for fee estimate.","type":"module","main":"index.ts","exports":{".":"./index.ts","./mcp":"./src/mcp/server.ts"},"bin":{"aelf-node-skill":"aelf_node_skill.ts","aelf-node-setup":"bin/setup.js"},"scripts":{"setup":"bun run bin/setup.ts","mcp":"bun run src/mcp/server.ts","cli":"bun run aelf_node_skill.ts","test":"bun test tests/","test:unit":"bun test tests/unit/","test:unit:coverage":"bun run test:unit --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage","coverage:core":"bun run bin/check-core-coverage.ts","test:unit:coverage:gate":"bun run test:unit:coverage && bun run coverage:core","test:integration":"bun test tests/integration/","test:live":"RUN_LIVE_TESTS=1 bun test tests/integration/","coverage:gate":"bun run scripts/coverage-gate.ts","test:coverage:ci":"COVERAGE_MIN_LINES=85 COVERAGE_MIN_FUNCS=80 bun run test:unit:coverage && bun run coverage:gate","typecheck:src":"bunx tsc -p tsconfig.src.json --noEmit","typecheck:test":"bunx tsc -p tsconfig.test.json --noEmit","typecheck":"bun run typecheck:src && bun run typecheck:test","build:openclaw":"bun run bin/generate-openclaw.ts","build:openclaw:check":"bun run bin/generate-openclaw.ts --check","coverage:badge":"bun run bin/generate-coverage-badge.ts","deps:check":"bun run scripts/check-deps-baseline.ts"},"keywords":["aelf","mcp","agent","blockchain","sdk","skill"],"repository":{"type":"git","url":"git+https://github.com/AElfProject/aelf-node-skill.git"},"homepage":"https://github.com/AElfProject/aelf-node-skill#readme","bugs":{"url":"https://github.com/AElfProject/aelf-node-skill/issues"},"publishConfig":{"access":"public"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0","aelf-sdk":"^3.5.1-beta.0","commander":"^12.1.0","zod":"^3.24.0"},"devDependencies":{"@types/bun":"latest","@types/node":"latest","ajv":"^8.17.1","typescript":"^5.7.0"},"gitHead":"ed61747aae42e851d95339405d853b0d90ae9b5e","_id":"@blockchain-forever/aelf-node-skill@0.1.3","_nodeVersion":"22.22.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-c0z+y6MIuTY4nySEO13FPb7RcXdrLqcHfamLtrpPxjirybKR74uEBZ8uPhm8bKC3HUc/o9Ke5bQOfV88qxS77A==","shasum":"b42500ec8c28b654357999c06d9fda739f140460","tarball":"https://registry.npmjs.org/@blockchain-forever/aelf-node-skill/-/aelf-node-skill-0.1.3.tgz","fileCount":39,"unpackedSize":105318,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blockchain-forever%2faelf-node-skill@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDsbcB/xtBNgfZVfMatwLCYxtNZSjIaxKULiem968/viwIhAIemRhAUGbTIRa/sCukv0oOrDPShxArRBBdeU7wecXvi"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c2e4d78d-ef60-419c-b948-e5a365b379ba"}},"directories":{},"maintainers":[{"name":"hzz780","email":"hzz780@qq.com"},{"name":"aelf-project","email":"azure@aelf.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aelf-node-skill_0.1.3_1772647026507_0.18459384355915898"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-26T13:20:27.981Z","modified":"2026-03-04T17:57:06.958Z","0.1.0":"2026-02-26T13:20:28.255Z","0.1.1":"2026-02-28T14:57:53.760Z","0.1.2":"2026-03-04T16:08:35.008Z","0.1.3":"2026-03-04T17:57:06.642Z"},"bugs":{"url":"https://github.com/AElfProject/aelf-node-skill/issues"},"license":"MIT","homepage":"https://github.com/AElfProject/aelf-node-skill#readme","keywords":["aelf","mcp","agent","blockchain","sdk","skill"],"repository":{"type":"git","url":"git+https://github.com/AElfProject/aelf-node-skill.git"},"description":"AElf Node Skill for AI agents: REST for reads, SDK for contract execution, and selective fallback for fee estimate.","maintainers":[{"name":"hzz780","email":"hzz780@qq.com"},{"name":"aelf-project","email":"azure@aelf.io"}],"readme":"# AElf Node Skill\n\n[中文](./README.zh-CN.md) | [English](./README.md)\n\n[![Unit Tests](https://github.com/AElfProject/aelf-node-skill/actions/workflows/test.yml/badge.svg)](https://github.com/AElfProject/aelf-node-skill/actions/workflows/test.yml)\n[![Coverage](https://img.shields.io/endpoint?url=https://AElfProject.github.io/aelf-node-skill/coverage.json)](https://AElfProject.github.io/aelf-node-skill/coverage.json)\n\nAElf Node Skill 提供 MCP、CLI、SDK 三种接口，采用“读走 REST、合约执行走 SDK、手续费估算选择性 fallback”的架构访问 AElf 公共节点。\n\n## 功能\n\n- 链路读取：链状态、区块高度、区块详情、交易结果\n- 合约元数据：View Methods 和 System Contract Address（REST adapter）\n- 合约执行：View 调用与交易发送（SDK）\n- 手续费估算：REST 优先，SDK 兜底\n- 节点管理：导入与列出自定义节点\n\n## 默认节点\n\n- `AELF`: `https://aelf-public-node.aelf.io`\n- `tDVV`: `https://tdvv-public-node.aelf.io`\n\n## 安装\n\n```bash\nbun install\n```\n\n## 使用方式\n\n### MCP\n\n```bash\nbun run mcp\n```\n\n### CLI\n\n```bash\nbun run cli get-chain-status --chain-id AELF\n```\n\n### OpenClaw\n\n```bash\nbun run build:openclaw\nbun run build:openclaw:check\n```\n\n## 快速开始\n\n```bash\n# 启动 MCP server\nbun run mcp\n\n# 使用 CLI\nbun run cli get-chain-status --chain-id AELF\n\n# 运行单测\nbun run test:unit\n```\n\n## Setup CLI\n\n仓库内置一键 setup，支持 Claude、Cursor、OpenClaw。\n\n```bash\nbun run setup claude\nbun run setup cursor\nbun run setup cursor --global\nbun run setup openclaw\nbun run setup openclaw --config-path /path/to/openclaw-config.json\nbun run setup list\nbun run setup uninstall claude\nbun run setup uninstall cursor --global\nbun run setup uninstall openclaw --config-path /path/to/openclaw-config.json\n```\n\n安装后的包也可直接执行：\n\n```bash\naelf-node-setup claude\n```\n\n## MCP 配置示例\n\n参考文件：[`mcp-config.example.json`](./mcp-config.example.json)\n\n```json\n{\n  \"mcpServers\": {\n    \"aelf-node-skill\": {\n      \"command\": \"bun\",\n      \"args\": [\"run\", \"/ABSOLUTE/PATH/TO/src/mcp/server.ts\"],\n      \"env\": {\n        \"AELF_PRIVATE_KEY\": \"可选_env_回退私钥\",\n        \"PORTKEY_WALLET_PASSWORD\": \"可选钱包密码\",\n        \"PORTKEY_CA_KEYSTORE_PASSWORD\": \"可选keystore密码\"\n      }\n    }\n  }\n}\n```\n\n## 环境变量\n\n复制并编辑：\n\n```bash\ncp .env.example .env\n```\n\n- `AELF_PRIVATE_KEY`：写操作的 env 回退私钥（可选，env 优先级最高）\n- `PORTKEY_PRIVATE_KEY`：共享 skill 兼容的次级 env 回退私钥（可选）\n- 写操作工具（`aelf_send_contract_transaction`、`aelf_estimate_transaction_fee`）按 `explicit -> context -> env` 解析 signer\n- `PORTKEY_WALLET_PASSWORD`：EOA wallet context 的密码缓存（可选）\n- `PORTKEY_CA_KEYSTORE_PASSWORD`：CA keystore context 的密码缓存（可选）\n- `PORTKEY_SKILL_WALLET_CONTEXT_PATH`：active context 路径覆盖（默认 `~/.portkey/skill-wallet/context.v1.json`）\n- `signerMode=daemon` 仅预埋接口，本轮返回 `SIGNER_DAEMON_NOT_IMPLEMENTED`\n- `AELF_NODE_AELF_RPC_URL`：可选，覆盖 AELF 节点\n- `AELF_NODE_TDVV_RPC_URL`：可选，覆盖 tDVV 节点\n- `AELF_NODE_REGISTRY_PATH`：可选，自定义节点注册表路径\n- `AELF_SDK_INSTANCE_CACHE_MAX`：可选，SDK 实例缓存上限（默认 `32`）\n- `AELF_SDK_CONTRACT_CACHE_MAX`：可选，SDK 合约缓存上限（默认 `256`）\n- `AELF_REST_CLIENT_CACHE_MAX`：可选，REST 客户端缓存上限（默认 `64`）\n\n## Tool 列表\n\nMCP tool 名称：\n\n- `aelf_get_chain_status`\n- `aelf_get_block_height`\n- `aelf_get_block`\n- `aelf_get_transaction_result`\n- `aelf_get_contract_view_methods`\n- `aelf_get_system_contract_address`\n- `aelf_call_contract_view`\n- `aelf_send_contract_transaction`\n- `aelf_estimate_transaction_fee`\n- `aelf_import_node`\n- `aelf_list_nodes`\n\n## 架构\n\n- `src/core/`：业务编排\n- `lib/sdk-client.ts`：`aelf-sdk` 封装\n- `lib/rest-client.ts`：REST adapter + 错误归一\n- `lib/node-router.ts`：链与节点路由/fallback\n- `src/mcp/server.ts`：MCP 入口\n- `aelf_node_skill.ts`：CLI 入口\n- `index.ts`：SDK 导出\n\n## 测试\n\n```bash\nbun run test\nbun run test:coverage:ci\n```\n\n## 安全\n\n- 不要在对话输出中暴露 `AELF_PRIVATE_KEY`。\n- Active wallet context 不存明文私钥。\n- 所有密钥均通过环境变量管理。\n\n## License\n\nMIT\n","readmeFilename":"README.zh-CN.md"}