A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Portkey EOA wallet skill for wallet lifecycle, asset queries, transfers, and contract interactions on aelf.
中文版 | English
AI Agent Skills for Portkey EOA Wallet on aelf blockchain. Provides MCP, CLI, and SDK interfaces for wallet management, token transfers, asset queries, and smart contract interactions.
| Mode | Entry | Use Case |
|---|---|---|
| MCP | src/mcp/server.ts | Claude Desktop, Cursor, GPT, and other AI tools |
| CLI | portkey_eoa_skill.ts | Terminal scripts, OpenClaw |
| SDK | index.ts | LangChain, LlamaIndex, custom agents |
# Local repo checkout / smoke test only
bun install
bunx -p @portkey/eoa-agent-skills portkey-setup openclaw. This path requires Bun or a managed runtime that provides Bun.bun install for development and smoke tests only.~/.codex/skills/portkey-eoa without installing dependencies is not a supported install path and is not guaranteed to boot.# Claude Desktop
bun run bin/setup.ts claude
# Cursor (project-level)
bun run bin/setup.ts cursor
# Cursor (global)
bun run bin/setup.ts cursor --global
# OpenClaw (output config)
bun run bin/setup.ts openclaw
# OpenClaw (merge into existing config)
bun run bin/setup.ts openclaw --config-path /path/to/openclaw-config.json
# Check status
bun run bin/setup.ts list
# Build staged assets and package the release bundle locally
bun run ironclaw:wasm:build
bun run ironclaw:wasm:bundle
# Install the staged local artifact into IronClaw
ironclaw tool install ./artifacts/ironclaw/portkey-eoa-ironclaw.wasm
Release assets follow this naming contract:
portkey-eoa-ironclaw-v<version>-wasm32-wasip2.tar.gzportkey-eoa-ironclaw-v<version>-wasm32-wasip2.sha256portkey-eoa-ironclaw.wasmportkey-eoa-ironclaw.capabilities.jsoncp .env.example .env
# Edit .env with your values
| Variable | Description | Default |
|---|---|---|
PORTKEY_NETWORK | mainnet | mainnet |
PORTKEY_API_URL | Override API base URL | Auto from network |
PORTKEY_PRIVATE_KEY | Plaintext private key (optional) | — |
PORTKEY_WALLET_DIR | Custom wallet storage directory | ~/.portkey/eoa/wallets/ |
PORTKEY_WALLET_PASSWORD | Password for local wallet encryption | — |
PORTKEY_SKILL_WALLET_CONTEXT_PATH | Override shared wallet context path | ~/.portkey/skill-wallet/context.v1.json |
portkey_create_wallet / portkey_import_wallet, this skill auto-updates shared active wallet context.explicit -> active context -> env (auto mode).bun run src/mcp/server.ts
Or add to your MCP client config (see mcp-config.example.json):
{
"mcpServers": {
"portkey-eoa-agent-skills": {
"command": "bun",
"args": ["run", "/path/to/src/mcp/server.ts"],
"env": {
"PORTKEY_NETWORK": "mainnet",
"PORTKEY_WALLET_PASSWORD": "your_password"
}
}
}
}
# Local development install
ironclaw tool install ./artifacts/ironclaw/portkey-eoa-ironclaw.wasm
Native-wasm notes:
ironclaw-wasm/ and is published as GitHub Release assets..tar.gz bundle that contains exactly portkey-eoa-ironclaw.wasm and portkey-eoa-ironclaw.capabilities.json.aelf-web3.rust@0.1.0-alpha.1 instead of the earlier hand-rolled AElf transaction helpers.portkey-eoa/ workspace namespace.password.walletExport (portkey-eoa-export-v2) for native recovery.Remote activation contract:
.tar.gz asset and import it through IronClaw's WASM extension flow../artifacts/ironclaw/portkey-eoa-ironclaw.wasm.bunx -p @portkey/eoa-agent-skills portkey-setup openclaw with Bun or a managed runtime that provides Bun.bun install.~/.codex/skills/portkey-eoa without dependency installation is not a supported runtime path.# Wallet
bun run portkey_eoa_skill.ts wallet create --password mypass
bun run portkey_eoa_skill.ts wallet list
bun run portkey_eoa_skill.ts wallet import --mnemonic "word1 word2 ..." --password mypass
# Queries
bun run portkey_eoa_skill.ts query tokens --address YOUR_ADDRESS
bun run portkey_eoa_skill.ts query balance --address YOUR_ADDRESS --symbol ELF --chain-id AELF
bun run portkey_eoa_skill.ts query price --symbols ELF,USDT
bun run portkey_eoa_skill.ts query history --address YOUR_ADDRESS
bun run portkey_eoa_skill.ts query chains
# Transfer
bun run portkey_eoa_skill.ts transfer --to RECIPIENT --symbol ELF --amount 100000000 --chain-id AELF
# Contract
bun run portkey_eoa_skill.ts contract view --contract-address ADDR --method GetBalance --params '{"symbol":"ELF","owner":"..."}' --chain-id AELF
bun run portkey_eoa_skill.ts contract send --contract-address ADDR --method Approve --params '{"symbol":"ELF","spender":"...","amount":"100000000"}' --chain-id AELF --address YOUR_ADDRESS --password mypass
Choose the contract tool by method type:
portkey_call_view_method / CLI contract view are for Get* and other read-only methods.portkey_call_send_method / CLI contract send are for state-changing methods only.Empty-input view methods such as GetConfig, omit --params entirely so the read call stays argument-free.GetConfig, GetPairQueueStatus, or other resonance Get* methods through the send path. A send receipt cannot replace a direct view response.Resonance examples:
# Read-only queue status lookup
bun run portkey_eoa_skill.ts contract view \
--contract-address 28Lot71VrWm1WxrEjuDqaepywi7gYyZwHysUcztjkHGFsPPrZy \
--method GetPairQueueStatus \
--params '"<address>"' \
--chain-id tDVV
# State-changing queue join
bun run portkey_eoa_skill.ts contract send \
--contract-address 28Lot71VrWm1WxrEjuDqaepywi7gYyZwHysUcztjkHGFsPPrZy \
--method JoinPairQueue \
--params '{}' \
--chain-id tDVV \
--address YOUR_ADDRESS \
--password mypass
import { getConfig, createWallet, getTokenList, transfer } from '@portkey/eoa-agent-skills';
const config = getConfig('mainnet');
// Create wallet
const wallet = await createWallet(config, { password: 'mypass' });
console.log('Address:', wallet.address);
// Query tokens
const tokens = await getTokenList(config, { address: wallet.address });
console.log('Tokens:', tokens.data);
// Transfer
const result = await transfer(config, {
privateKey: 'YOUR_PRIVATE_KEY',
to: 'RECIPIENT_ADDRESS',
symbol: 'ELF',
amount: '100000000',
chainId: 'AELF',
});
console.log('TX:', result.transactionId);
Chain list discovery remains CLI/SDK only via bun run portkey_eoa_skill.ts query chains or getChainInfo(). It is intentionally not exposed as an MCP tool in this package.
portkey_create_wallet — Create new wallet with encrypted local storageportkey_import_wallet — Import from mnemonic, private key, or encrypted walletExportportkey_get_wallet_info — View wallet public infoportkey_list_wallets — List all local walletsportkey_backup_wallet — Export compatible mnemonic/privateKey fields and additive encrypted walletExportportkey_delete_wallet — Delete a local wallet (requires password)portkey_get_active_wallet — Read shared active wallet contextportkey_set_active_wallet — Set shared active wallet context manuallyportkey_get_token_list — Token portfolio with balancesportkey_get_token_balance — Single token balanceportkey_get_token_prices — Token USD pricesportkey_get_nft_collections — NFT collection listportkey_get_nft_items — NFT items in collectionportkey_get_transaction_history — Transaction historyportkey_get_transaction_detail — Single transaction detailportkey_transfer — Same-chain token transferportkey_cross_chain_transfer — Cross-chain aelf transferportkey_approve — Token spending approvalportkey_call_view_method — Generic contract read (Get* / read-only only)portkey_call_send_method — Generic contract write (state-changing only)portkey_estimate_fee — Transaction fee estimationportkey_ebridge_transfer — eBridge cross-chain transferportkey_ebridge_info — eBridge limits and feesindex.ts (SDK) ─┐
server.ts (MCP) ─┼─> src/core/ ──> lib/
portkey_eoa_skill.ts (CLI) ─┘ (pure logic) (infra)
Three adapters call the same core functions — zero duplicated logic.
bun test # All tests
bun test tests/unit/ # Unit tests
bun run tests/e2e/mcp-verify.ts # MCP verification
After you install IronClaw locally, run this minimal verification:
bun run ironclaw:wasm:buildbun run ironclaw:wasm:bundleironclaw tool install ./artifacts/ironclaw/portkey-eoa-ironclaw.wasmaelf-sdk has a transitive dependency on elliptic with a known low-severity vulnerability. This is an upstream issue — tracked for resolution when aelf-sdk updates its dependency.MIT
1000+ skills curated from Anthropic, Vercel, Stripe, and other engineering teams
A Claude Code skill by Hao (駱君昊) that learns your Facebook voice and auto-posts to FB / IG / Threads / X with a 14-day c
Claude Code skill for YouTube creators — channel audits, video SEO, retention scripts, thumbnails, content strategy, Sho
Design enforcement with memory — keeps your UI consistent across a project