About soulboard
SoulBoard Skill provides agent-gated token launch and trading operations for SoulBoard on Robinhood Chain, intended for AI agents holding an Agent-ID. It prepares on-chain actions through the backend and relays them to the user's agentic wallet for signing without handling keys.
Key features
- 01Query token boards and details
- 02Prepare mint, launch, and trade actions
- 03Manage token mint whitelists
- 04Check and claim fee rewards
- 05Preview and sign transactions with baw
Use cases
- 01Inspect SoulBoard tokens and market information
- 02Launch a token or buy a market listing
- 03Restrict minting to selected addresses
- 04Claim fee rewards for $BOARD holders
MCP support
The bundled scripts/soulboard_mcp.py exposes board, token, config, and action-preparation functions as MCP tools. prepare_* tools return data for the host to sign with baw.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ soulboardfun/ soulboard --skill soulboardAfter installing, type/soulboardin Claude Code to confirm it loaded.
Bundled filesscripts/soulboardscripts/soulboard_mcp.py
Details
From the project READMESoulBoard Skill
SoulBoard is an agent-gated launchpad on Robinhood Chain (chainId 4663). Only verified AI agents can mint, trade, and launch — a plain human wallet is refused. "Agent" means a wallet that holds a soulbound Agent-ID on BNB Chain (SPACE ID "Agent ID", 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F). The platform token is $BOARD.
This skill is non-custodial: it only prepares actions via the SoulBoard backend and relays them to the user's own agentic wallet for signing. It never holds keys. Signing is done through the baw CLI (the binance-agentic-wallet skill) — install that skill too; this skill drives it.
Live contracts (Robinhood Chain 4663): $BOARD 0x9518a406109d6072a76aC7aB8816cF267ad291c3 · LaunchFactory 0x5a661a8976a519B8840d1797CB5935Fb6f6520b9 · Market 0x75A076715d9E126c1146f0B9a8a0eb70A647F69e · FeeDistributor 0x1fbBABe27779E687129E52776b05dAC7aE22db88. {backend}/config returns these live.
Prerequisites
- The
binance-agentic-walletskill is installed and the user is signed in (baw wallet status→ CONNECTED). Developer Mode must be ON in the Binance App (needed forcontract-call). - The wallet holds a soulbound Agent-ID on BNB Chain. If not, the backend refuses every action — tell the user to claim the free Agent-ID in the Binance app first.
- The wallet has a little Robinhood-Chain ETH for gas.
Backend
Set SOULBOARD_BACKEND (default https://soulboard.fun). All on-chain state and action-preparation goes through it.
Command routing
| User intent | What to do |
|---|---|
| "what's live / show the board" | GET {backend}/api/board → list tokens (symbol, name, progress, price). |
| "details of " | GET {backend}/api/token/<ca> (+ /holders, /orderbook, /activity). |
| "am I eligible?" | POST {backend}/prepare/mint {asset:<any live ca>, wallet} — a no Agent-ID error means not eligible; otherwise eligible. |
| "mint [Nx]" | prepare → sign (see below). First mint per wallet is free (value 0). |
| "launch a fair-mint token …" | POST {backend}/prepare/launch {...} → returns approve + launch steps; sign each with baw. Launching burns 1,000 $BOARD. |
| "whitelist mint on " / "only these addresses can mint" | After the token is deployed, set its whitelist — see Whitelist mint below. |
| "buy listing on " | POST {backend}/prepare/buy {wallet, listingId} → sign. |
| "sell of at " | POST {backend}/prepare/sell {wallet, asset, amount, priceWei} → approve + list; sign. |
| "cancel listing " | POST {backend}/prepare/cancel {listingId} → sign (no voucher). |
| "what fee rewards can I claim?" | GET {backend}/api/claimable?wallet=<addr> → unclaimed holder-reward epochs. |
| "claim my fee rewards" | POST {backend}/prepare/claim {wallet [, epochId]} → sign each claim step (no voucher). $BOARD holders earn 50% of platform fees via daily (00:00 UTC) merkle epochs. |
| "fund / withdraw RH ETH" | POST {backend}/prepare/transfer {to, value_wei} → native send; sign. |
The prepare → sign flow (how every on-chain action works)
- Get the user's wallet address:
baw wallet address --json(use the EVM address — same for chain 4663 and 56). - Prepare the action against the SoulBoard backend, e.g. mint:
The response isPOST {backend}/prepare/mint { "asset": "<ca>", "wallet": "<addr>", "value_wei": "0" }{ "ok": true, "sign_this": { "to", "data", "value" }, "voucher": {...} }. If it returns{ "error": "no Agent-ID …" }, stop and tell the user to claim an Agent-ID. Forlaunch/sellthe response hassteps: [ {to,data,value}, … ]— do each step in order (the first is usually an ERC-20approve). - Sign + send each
sign_this/step with the agentic wallet via the binance skill:baw contract-call preview --binanceChainId 4663 --from <addr> --to <to> --value <value> --inputData <data> --json # show the user parsedTx + risks, confirm, then: baw contract-call execute --requestId <id> --json - Report the transaction hash and confirm on the explorer (
https://robinhoodchain.blockscout.com).
One-shot CLI
A convenience wrapper is bundled (scripts/soulboard) that does steps 1–4 for minting, launching and trading:
soulboard mint <token_address> [N] # N mints (default 1); first mint free
soulboard "<token_address> mint 2x" # natural form
soulboard launch <SYMBOL> --supply 21000000 --per-mint 1000 --price 0.0002 [--logo ./logo.png] [--tax 1] [--free 1]
soulboard buy <listingId> --price <ETH> # buy a secondary-market listing (price = its ask)
soulboard sell <token_address> <amount> --price <ETH> # list your tokens for sale
soulboard cancel <listingId> # cancel your own listing
soulboard claim [epochId] # claim your $BOARD-holder fee rewards
Units: --supply/--per-mint are WHOLE tokens; --price is in ETH. It reads the wallet from baw, prepares the action, previews, asks to confirm, and signs each step. Requires baw signed in + Developer Mode on.
Whitelist mint (optional — restrict who can mint a token)
A token's creator can restrict minting to a specific set of addresses. It's off-chain and voucher-gated: the backend only signs a mint voucher for whitelisted wallets. Open by default — no whitelist means any verified agent can mint.
Set it after the token is deployed (you need its address), signed by the creator:
- Collect the addresses (e.g. from a CSV). Normalize: lowercase, dedupe, sort ascending.
- Compute
listHash = keccak256( utf8( addresses.join(",") ) )over that normalized list. - Prove you're the creator with an EIP-712 signature via baw:
- domain:
{ "name": "SoulBoardWhitelist", "version": "1", "chainId": 4663 } - type:
Whitelist(address token, bytes32 listHash, uint256 deadline) - message:
{ "token": "<ca>", "listHash": "<0x…>", "deadline": <unix_now + 600> }
baw sign-message preview --binanceChainId 4663 --from <creator> --typedData '<the EIP-712 JSON above>' --json baw sign-message execute --requestId <id> --json - domain:
- Submit it:
The backend recomputesPOST {backend}/whitelist/set { "ca":"<ca>", "addresses":[ … ], "signature":"<sig>", "deadline":<deadline> }listHash, recovers the signer, and requires it to equal the token's on-chain creator (assetMeta().creator). On success only those addresses receive mint vouchers.
- Status:
GET {backend}/whitelist/get?ca=<ca>→{ count, restricted }. - Update anytime by signing + posting a new list (it replaces the old one). Max 10,000 addresses.
MCP
scripts/soulboard_mcp.py exposes the same actions as MCP tools (board, token, config, prepare_mint/buy/sell/cancel/launch/transfer) for MCP hosts (Claude Desktop, Cursor). The prepare_* tools return sign_this; the host then signs with baw. Run: pip install mcp then python3 scripts/soulboard_mcp.py.
Security
- Non-custodial. Never ask for, log, or handle private keys or seed phrases. Signing happens only inside the user's agentic wallet via
baw. - Always preview before executing. Show the user
parsedTx+risksfromcontract-call previewand get explicit confirmation beforeexecute. - Agent-gating is the backend's job. Do not try to bypass the Agent-ID check or fabricate vouchers. A refusal means the wallet isn't a verified agent.
- No token/price advice. Present factual on-chain data; the user decides.