--- name: mint-agent-ordi-on-bnb description: Mint one AGENT ORDI ("agent-20" / tick aordi) inscription on BNB Smart Chain with a wallet that holds a Binance Agent ID (*.ai). Each mint costs exactly 0.0005 BNB plus gas (~0.00001 BNB at 0.05 Gwei). Use when the user asks to mint, inscribe, or check AGENT ORDI / aordi, its progress, or why a mint failed. metadata: {"openclaw": {"always": false, "emoji": "🧬", "homepage": "https://agent-ordi.pages.dev", "requires": {"anyBins": ["node", "npx", "npm"]}}} --- # Mint AGENT ORDI on BNB Chain AGENT ORDI is a fixed-supply inscription on BNB Smart Chain (chainId 56). Only wallets that own a Binance Agent ID (`*.ai`, Agent ID Registry `0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F`) can mint. Every mint is a real on-chain transaction to the AGENT ORDI contract, emits `Inscribed(id, minter, handle, inscription)`, and is counted in `totalMinted()` β€” progress is fully on-chain. **Cost per mint: exactly `0.0005 BNB` (the contract's `mintFee`, sent as `msg.value`) + network gas.** Always tell the user this amount and get a clear "yes" before broadcasting. ## ⚠️ Security Notice - This skill moves real BNB. Never broadcast without the user's explicit confirmation of the cost. - Never ask the user to paste a private key into chat. Sign with their own wallet, the Binance Agentic Wallet (`baw`), or the bundled script reading the key **only** from the env var `AGENT_ORDI_PRIVATE_KEY`. - Only send to the contract address given in `references/contract.md` (or one the user confirms). The contract has no owner, no admin functions and no withdraw β€” it never holds funds. - If the contract's `mintFee()` is not `500000000000000` wei, stop and ask the user. ## Directory structure ``` mint-agent-ordi-on-bnb/ β”œβ”€β”€ SKILL.md ← this file β”œβ”€β”€ README.md ← δΈ­ζ–‡η”¨ζ³•θ―΄ζ˜Ž (for humans) β”œβ”€β”€ PROMPT.md ← copy-paste prompts β”œβ”€β”€ references/ β”‚ β”œβ”€β”€ preflight.md ← Step 0: tooling, RPC, wallet, Agent ID, balance β”‚ β”œβ”€β”€ contract.md ← contract address, selectors, view functions β”‚ β”œβ”€β”€ abi.json ← full contract ABI β”‚ β”œβ”€β”€ inscription.md ← the exact mint inscription + hex (Route B) β”‚ β”œβ”€β”€ binance-agentic-wallet.md ← minting from a Binance Agentic Wallet (baw CLI) β”‚ β”œβ”€β”€ script.md ← how to run scripts/mint-agent-ordi.mjs β”‚ └── reason-codes.md ← canMint reasons / revert errors β†’ what to tell the user └── scripts/ └── mint-agent-ordi.mjs ← Node + ethers v6 helper (pre-check, simulate, mint) ``` Read each reference file at the step that needs it; do not pre-load all of them. ## Step 0 β€” Preflight check Read `references/preflight.md`. Confirm: Node β‰₯ 18 (or the `baw` CLI), a chainId-56 RPC, the user's wallet address, that it owns an Agent ID, and that it holds at least `0.0005 BNB + gas`. ## Step 1 β€” Read the contract state Read `references/contract.md`. Call `info()` and `canMint(wallet)`: - `canMint` β†’ `(true, "OK")`: continue. - anything else: look the reason up in `references/reason-codes.md`, tell the user, stop. Report progress to the user: `totalMinted / maxMints`, per-Agent-ID limit, whether it is open. ## Step 2 β€” State the cost and get confirmation Read `mintFee()` (expected `0.0005 BNB`). Tell the user, in plain words: "Minting 1 AGENT ORDI costs 0.0005 BNB plus gas (about 0.00001 BNB). Proceed?" Do not continue without an explicit yes. ## Step 3 β€” Choose the route | Route | `to` | `value` | `data` | When | |---|---|---|---|---| | **A β€” call `mint()`** (default) | contract | `500000000000000` | `0x1249c58b` | Any wallet / agent that can do a contract call | | **B β€” inscription transfer** | contract | `500000000000000` | UTF-8 hex of the mint inscription (`references/inscription.md`) | "Ordinals-style" β€” wallets that let you paste hex data | Both routes run the same checks and share the same per-Agent-ID limit. A plain transfer with empty data is rejected (`NoData`); any other data is rejected (`BadInscription`). ## Step 4 β€” Sign and send Pick the signer the user actually has: - **Binance Agentic Wallet** β†’ `references/binance-agentic-wallet.md` (`baw contract-call preview` β†’ show risks β†’ `execute`). - **Script with env key** β†’ `references/script.md`: run with `--dry-run` first, then `--yes` after confirmation. - **User's own wallet** (MetaMask, OKX, Trust, Binance Wallet, BscScan "Write Contract") β†’ give them the `to / value / data` from Step 3; or tell them to use the website's Mint button. Always simulate first (`eth_estimateGas` / `eth_call` with `from = wallet`). If simulation reverts, decode it with `references/reason-codes.md` and do not send. ## Step 5 β€” Verify From the receipt, find the `Inscribed` event: report `id`, `handle`, tx hash and `https://bscscan.com/tx/`. Re-read `totalMinted()` and `mintedBy(wallet)` to confirm. ## Decision map | Situation | Action | |---|---| | No Agent ID on wallet | Stop: "claim a Binance Agent ID first (Binance App β†’ Agentic Wallet)" | | `NOT_STARTED` | Report `startTime` (UTC + user's zone) | | `SOLD_OUT` / `LIMIT_REACHED` | Stop, report progress | | Contract call from a smart-contract wallet | Not supported (`ONLY_EOA`): must be sent directly by the Agent ID wallet | | `mintFee` β‰  0.0005 BNB | Stop and ask the user | | Balance < 0.0005 BNB + gas | Ask the user to top up |