Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

EForest Agent Skills

БесплатноНе проверен

This MCP server enables aelf blockchain interactions for token creation and NFT trading, including symbol market operations and comprehensive NFT workflows.

GitHubEmbed

Описание

This MCP server enables aelf blockchain interactions for token creation and NFT trading, including symbol market operations and comprehensive NFT workflows.

README

English | 中文

eForest Agent Skills

Unit Tests Coverage

AI Agent Kit for aelf + eForest capabilities, exposed via CLI, MCP Server, and SDK.

Business Capability Overview

Symbol-Market Domain

  • Check name availability and estimate costs before action
  • Purchase symbol creation entitlement (SEED)
  • Create NFT / FT assets
  • Issue assets to target addresses
  • Provide dry-run preview, risk prompts, and structured failure feedback

Forest Domain (key NFT capabilities)

  • Create NFT collections and items (single or batch)
  • NFT trading workflows: list, buy, offer, deal, cancel
  • NFT asset operations: transfer and price lookup
  • Optional extensions: drop, whitelist, AI, miniapp, profile, discovery, realtime

What's New (Forest Skillization v1)

  1. Expanded from token-only flows to a broader capability set for symbol creation plus NFT operations.
  2. Unified skill input/output style so integrations and collaboration are easier across teams.
  3. Improved failure feedback and maintenance-state handling, reducing disruption to main user flows.
  4. Organized Forest capabilities into P0/P1/P2 tiers for phased rollout and acceptance.
  5. Kept legacy tools available so migration can happen step by step without breaking existing usage.

Forest Skills (P0 / P1 / P2)

P0 (Core Trading Loop)

Workflow:

  • aelf-forest-create-collection
  • aelf-forest-create-item
  • aelf-forest-batch-create-items
  • aelf-forest-list-item
  • aelf-forest-buy-now
  • aelf-forest-make-offer
  • aelf-forest-deal-offer
  • aelf-forest-cancel-offer
  • aelf-forest-cancel-listing
  • aelf-forest-transfer-item
  • aelf-forest-get-price-quote

Method (Contract):

  • aelf-forest-contract-market
  • aelf-forest-contract-multitoken
  • aelf-forest-contract-token-adapter
  • aelf-forest-contract-proxy

Method (API):

  • aelf-forest-api-market
  • aelf-forest-api-nft
  • aelf-forest-api-collection
  • aelf-forest-api-sync
  • aelf-forest-api-seed-auction

P1 (Growth)

Workflow:

  • aelf-forest-issue-item
  • aelf-forest-place-bid
  • aelf-forest-claim-drop
  • aelf-forest-query-drop
  • aelf-forest-whitelist-read
  • aelf-forest-whitelist-manage

Method (Contract):

  • aelf-forest-contract-auction
  • aelf-forest-contract-drop
  • aelf-forest-contract-whitelist

Method (API):

  • aelf-forest-api-drop
  • aelf-forest-api-whitelist

P2 (Extensions)

Workflow:

  • aelf-forest-ai-generate
  • aelf-forest-ai-retry
  • aelf-forest-create-platform-nft
  • aelf-forest-miniapp-action
  • aelf-forest-update-profile
  • aelf-forest-query-collections
  • aelf-forest-watch-market-signals

Method (Contract):

  • aelf-forest-contract-miniapp

Method (API):

  • aelf-forest-api-ai
  • aelf-forest-api-platform
  • aelf-forest-api-miniapp
  • aelf-forest-api-user
  • aelf-forest-api-system
  • aelf-forest-api-realtime

Quick Start

Prerequisites

  • Bun >= 1.0
  • An aelf wallet private key (EOA) or Portkey CA wallet credentials

Install

git clone https://github.com/eforest-finance/eforest-agent-skills.git
cd eforest-agent-skills
bun install

Configure

cp .env.example .env
# Edit .env and set network + signer fallback credentials

CLI Usage (Legacy)

# Check SEED price (dry-run)
bun run cli buy-seed --symbol MYTOKEN --issuer <your-address> --dry-run

# Buy SEED (max 2 ELF)
bun run cli buy-seed --symbol MYTOKEN --issuer <your-address> --force 2

# Create token on tDVV side chain
bun run cli create-token \
  --symbol MYTOKEN --token-name "My Token" \
  --seed-symbol SEED-321 \
  --total-supply 100000000 --decimals 8 \
  --issue-chain tDVV

# Issue tokens
bun run cli issue-token \
  --symbol MYTOKEN --amount 10000000000000000 \
  --to <recipient-address> --chain tDVV

MCP Server (Claude Desktop / Cursor)

One-command setup:

# Claude Desktop
bun run setup claude

# Cursor IDE (project-level)
bun run setup cursor

# Cursor IDE (global)
bun run setup cursor --global

# IronClaw (install trusted skill + stdio MCP server)
bun run setup ironclaw

# Check status
bun run setup list

# Remove IronClaw integration
bun run setup uninstall ironclaw

The MCP server auto-registers both legacy tools and all aelf-forest-* tools from the skill registry.

IronClaw

# Install trusted skill + stdio MCP server
bun run setup ironclaw

# Remove IronClaw integration
bun run setup uninstall ironclaw

The IronClaw setup does two things by default:

  • Writes a stdio MCP server entry to ~/.ironclaw/mcp-servers.json
  • Copies this repo's SKILL.md to ~/.ironclaw/skills/eforest-agent-skills/SKILL.md

Important trust model note:

  • Use the trusted skill path above for SEED/token/NFT creation, listing, offer, trade, and other write-capable flows.
  • Do not rely on ~/.ironclaw/installed_skills/ for this package if you need on-chain or marketplace write actions.
  • IronClaw attenuates installed skills to read-only tools, which can make the agent appear to "query only" even though the MCP server is available.

This MCP server emits both standard MCP camelCase annotations and IronClaw-compatible snake_case annotations so the current IronClaw source can honor read/write hints.

Remote activation contract:

  • GitHub repo/tree URLs are discovery sources only, not the final IronClaw install payload.
  • Preferred IronClaw activation from npm: bunx -p @eforest-finance/agent-skills eforest-setup ironclaw
  • Prefer ClawHub / managed install for OpenClaw when available; otherwise use bunx -p @eforest-finance/agent-skills eforest-setup openclaw
  • Local repo checkout remains a development smoke-test path only.

Manual MCP Config

EOA mode:

{
  "mcpServers": {
    "eforest-token": {
      "command": "bun",
      "args": ["run", "/path/to/eforest-agent-skills/src/mcp/server.ts"],
      "env": {
        "AELF_PRIVATE_KEY": "your_private_key",
        "EFOREST_NETWORK": "mainnet"
      }
    }
  }
}

CA mode:

{
  "mcpServers": {
    "eforest-token": {
      "command": "bun",
      "args": ["run", "/path/to/eforest-agent-skills/src/mcp/server.ts"],
      "env": {
        "PORTKEY_PRIVATE_KEY": "your_manager_private_key",
        "PORTKEY_CA_HASH": "your_ca_hash",
        "PORTKEY_CA_ADDRESS": "your_ca_address",
        "EFOREST_NETWORK": "mainnet"
      }
    }
  }
}

Cross-Skill signer context (recommended)

Write operations can resolve signer from shared wallet context first. Resolution order:

  1. explicit signer input (privateKey or CA tuple)
  2. active context (~/.portkey/skill-wallet/context.v1.json)
  3. env fallback (AELF_PRIVATE_KEY or PORTKEY_*)

When context points to encrypted wallet/keystore, pass password in tool input or use:

  • PORTKEY_WALLET_PASSWORD for EOA wallet files
  • PORTKEY_CA_KEYSTORE_PASSWORD for CA keystore files

Forest API Route Map (Config-first)

Method API skills use route mapping from environment variables by default:

  • EFOREST_FOREST_API_ACTION_MAP_JSON (preferred)
  • FOREST_API_ACTION_MAP_JSON (fallback)

Example:

{
  "aelf-forest-api-market": {
    "fetchTokens": {
      "method": "GET",
      "path": "/app/market/tokens",
      "auth": true
    }
  },
  "aelf-forest-api-system": {
    "fetchMyToken": {
      "method": "GET",
      "url": "https://www.eforest.finance/symbolmarket/api/app/token/my-token",
      "auth": false,
      "queryArrayFormat": "repeat"
    }
  },
  "aelf-forest-api-sync": {
    "fetchSyncCollection": {
      "method": "POST",
      "path": "/app/nft/sync",
      "auth": true
    }
  }
}

fetchMyToken ships with a built-in default route to https://www.eforest.finance/symbolmarket/api/app/token/my-token. Environment route maps still override built-in defaults.

For endpoints like fetchMyToken that expect repeated query keys such as AddressList=a&AddressList=b, set "queryArrayFormat": "repeat" in the route map.

SDK Usage

import {
  getNetworkConfig,
  dispatchForestSkill,
  listForestSkills,
} from '@eforest-finance/agent-skills';

const config = await getNetworkConfig({ env: 'mainnet' });

console.log('registered forest skills:', listForestSkills().length);

const quote = await dispatchForestSkill(
  'aelf-forest-get-price-quote',
  {
    env: 'mainnet',
    payload: {
      symbol: 'MY-NFT',
      include: ['tokenData', 'txFee'],
    },
  },
  { config },
);

if (!quote.success) {
  console.error(quote.code, quote.message);
} else {
  console.log(quote.data);
}

Envelope & Error Contract

Successful response shape:

{
  "success": true,
  "code": "OK",
  "data": {},
  "warnings": [],
  "traceId": "..."
}

Failure response shape:

{
  "success": false,
  "code": "SERVICE_DISABLED",
  "message": "...",
  "maintenance": true,
  "retryable": false,
  "traceId": "...",
  "details": {}
}

Service Gating & Graceful Degradation

Key env vars

  • EFOREST_ENABLED_SERVICES
  • EFOREST_DISABLED_SERVICES
  • EFOREST_MAINTENANCE_SERVICES
  • EFOREST_DISABLE_ALL_SERVICES
  • EFOREST_SERVICE_<SERVICE_KEY_IN_UPPERCASE>

Examples:

# Disable AI and miniapp domains
export EFOREST_DISABLED_SERVICES="forest.ai.*,forest.miniapp.*"

# Put market skills into maintenance mode
export EFOREST_MAINTENANCE_SERVICES="forest.market.*"

# Disable a specific service key
export EFOREST_SERVICE_FOREST_MARKET_WORKFLOW=false

OpenClaw

Initialize

# 1) Regenerate catalog from Forest registry (3 legacy + 45 Forest skills)
bun run generate:openclaw

# 2) Generate standalone OpenClaw config
bun run setup openclaw

# 3) Or merge into an existing OpenClaw config
bun run setup openclaw --config-path /path/to/openclaw.json

Call Modes

  • structured mode (12 high-frequency NFT skills): use direct parameters (symbol/price/chain/etc.).
  • inputJson mode (33 long-tail Forest skills): pass one JSON object string for full input.

Structured example (aelf-forest-list-item):

{
  "symbol": "NFT-1",
  "quantity": 1,
  "priceSymbol": "ELF",
  "priceAmount": 1.2,
  "durationJson": "{\"hours\":24}",
  "chain": "AELF",
  "env": "mainnet"
}

inputJson example (aelf-forest-api-market):

{
  "inputJson": "{\"action\":\"fetchTokens\",\"params\":{\"chainId\":\"AELF\",\"page\":1}}",
  "env": "mainnet"
}

Common Failure Codes

  • INVALID_PARAMS: input mismatch with skill schema (missing fields/invalid enum/type).
  • SERVICE_DISABLED: service key is disabled by environment switches.
  • MAINTENANCE: service is under maintenance or route/config is unavailable.

Quick checks:

  • verify parameters or inputJson shape
  • verify EFOREST_DISABLED_SERVICES / EFOREST_MAINTENANCE_SERVICES
  • verify EFOREST_FOREST_API_ACTION_MAP_JSON for method-api routes

Architecture

Core forest dispatcher is modularized under src/core/forest/ (with src/core/forest.ts kept as a compatibility facade).

eforest-agent-skills/
├── lib/
│   ├── types.ts
│   ├── config.ts
│   ├── aelf-client.ts
│   ├── api-client.ts
│   ├── forest-envelope.ts
│   ├── forest-service.ts
│   ├── forest-skill-registry.ts
│   ├── forest-schemas.ts
│   └── forest-validator.ts
├── src/
│   ├── cli/
│   │   └── forest_skill.ts
│   ├── core/
│   │   ├── seed.ts
│   │   ├── token.ts
│   │   ├── issue.ts
│   │   ├── forest.ts
│   │   └── forest/
│   │       ├── index.ts
│   │       ├── dispatcher.ts
│   │       ├── executors/
│   │       └── workflow/
│   └── mcp/
│       └── server.ts
├── bin/
│   ├── setup.ts
│   ├── generate-openclaw.ts
│   └── platforms/
├── create_token_skill.ts
├── index.ts
├── openclaw.json
└── __tests__/

Configuration Priority

Settings are resolved in this order (highest priority first):

  1. Function params (SDK callers)
  2. CLI args (--env, --rpc-url)
  3. EFOREST_* / AELF_* environment variables
  4. .env file
  5. CMS remote config
  6. Code defaults (ENV_PRESETS)

Testing

bun test                 # All tests
bun test:unit            # Unit tests only
bun test:integration     # Integration tests only
bun test:e2e:smoke       # Dry-run smoke e2e (PR gate)
bun test:e2e:full        # Full dry-run e2e
bun test:e2e             # Alias to test:e2e:full

Notes:

  • e2e suite is dry-run deterministic and does not require on-chain write operations.
  • CI e2e defaults do not depend on external test secrets.

IronClaw Smoke Test

  1. Run bun run setup ironclaw
  2. Ask a read prompt like get a price quote for this eForest NFT listing
  3. Ask a write prompt like create a new eForest NFT collection
  4. Ask a marketplace write prompt like list this NFT on eForest
  5. Confirm forest prompts stay on this skill and guardian, DAO, or DEX prompts do not

Branch Test Matrix

Git Event Branch/Ref Suite Gate Level
pull_request main unit + integration + e2e:smoke Required
push main unit + integration + e2e:full Required
push v* tag publish.yml (includes bun test) Release Gate

Environment Variables

Variable Description Default
AELF_PRIVATE_KEY aelf wallet private key (EOA mode)
PORTKEY_PRIVATE_KEY Portkey Manager private key (CA mode)
PORTKEY_CA_HASH Portkey CA hash (CA mode)
PORTKEY_CA_ADDRESS Portkey CA address (CA mode)
PORTKEY_WALLET_PASSWORD Optional password cache for EOA wallet context decryption
PORTKEY_CA_KEYSTORE_PASSWORD Optional password cache for CA keystore context decryption
PORTKEY_SKILL_WALLET_CONTEXT_PATH Override active wallet context path ~/.portkey/skill-wallet/context.v1.json
EFOREST_NETWORK / AELF_ENV mainnet or testnet mainnet
EFOREST_API_URL / AELF_API_URL Backend API URL auto
EFOREST_RPC_URL / AELF_RPC_URL AELF MainChain RPC auto
EFOREST_RPC_URL_TDVV tDVV RPC URL auto
EFOREST_RPC_URL_TDVW tDVW RPC URL auto
EFOREST_ENABLED_SERVICES Comma-separated service whitelist patterns empty (allow all)
EFOREST_DISABLED_SERVICES Comma-separated service disable patterns empty
EFOREST_MAINTENANCE_SERVICES Comma-separated maintenance patterns empty
EFOREST_DISABLE_ALL_SERVICES Disable all forest services (true/false) false
EFOREST_FOREST_API_ACTION_MAP_JSON Method-API action to route mapping JSON empty

License

MIT

from github.com/eforest-finance/eforest-agent-skills

Установка EForest Agent Skills

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/eforest-finance/eforest-agent-skills

FAQ

EForest Agent Skills MCP бесплатный?

Да, EForest Agent Skills MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для EForest Agent Skills?

Нет, EForest Agent Skills работает без API-ключей и переменных окружения.

EForest Agent Skills — hosted или self-hosted?

Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.

Как установить EForest Agent Skills в Claude Desktop, Claude Code или Cursor?

Открой EForest Agent Skills на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare EForest Agent Skills with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории ai