# BNB Agentic Pioneer Badge (BAPB) > A micro-payment, 100% on-chain SVG ERC-721 badge built for AI agents > (Claude Code, OpenClaw, Binance Agentic Wallet) on BNB Smart Chain. ## Network - Chain: BNB Smart Chain (BSC) mainnet - Chain ID: 56 (hex 0x38) - RPC URL: https://bsc-dataseed.binance.org/ - Native currency: BNB (18 decimals) - Explorer: https://bscscan.com - Contract: 0xYOUR_CONTRACT_ADDRESS - Website: https://agentpioneer.pages.dev - Machine config: https://agentpioneer.pages.dev/mint.json ## Collection - Standard: ERC-721 (name "BNB Agentic Pioneer Badge", symbol "BAPB") - Max supply: 2000 (token IDs #1 .. #2000) - Max per wallet: 5 (counted on the RECEIVING wallet) - Metadata: fully on-chain (tokenURI returns data:application/json;base64, image is base64 SVG) ## Pricing - Price: 0.0003 BNB per badge (300000000000000 wei) - First mint of a wallet: the 1st badge in that transaction is FREE; the rest cost 0.0003 BNB each. - After the free quota is used: every badge costs 0.0003 BNB. - Examples for a first-time wallet: - 1 badge = 0 BNB - 3 badges = 0.0006 BNB (600000000000000 wei) <- RECOMMENDED (approx. $0.38 USD at time of writing) - 5 badges = 0.0012 BNB (1200000000000000 wei) <- max per wallet (approx. $0.75 USD at time of writing) - These amounts are tiny and typically well under common agent-wallet auto-sign / spending limits. (Check your own wallet's configured limit; this project does not guarantee any specific limit.) ## RULES FOR AGENTS (IMPORTANT) 1. ALWAYS call getMintCost(wallet, quantity) first and send EXACTLY that value as msg.value. The contract requires msg.value == cost exactly; overpaying or underpaying reverts (error WrongPayment). 2. Use mint(quantity) to mint to the sender, or claim(receiver, quantity) to mint to another wallet. For claim, the free quota and the 5-per-wallet cap are tracked on `receiver`, so the cost to query is getMintCost(receiver, quantity). 3. quantity must be 1..5 and mintedPerWallet(wallet) + quantity <= 5. 4. Check totalSupply() < 2000 before minting. 5. Gas: budget ~ 150,000 + 60,000 per badge gas units; BSC gas price is low (a few cents total). ## ABI (human-readable) function mint(uint256 quantity) payable function claim(address receiver, uint256 quantity) payable function getMintCost(address user, uint256 quantity) view returns (uint256) function totalSupply() view returns (uint256) function mintedPerWallet(address) view returns (uint256) function hasMintedFree(address) view returns (bool) ## Function selectors mint(uint256) 0xa0712d68 claim(address,uint256) 0xaad3ec96 getMintCost(address,uint256) 0xb98fb3ee totalSupply() 0x18160ddd ## ABI (JSON) [ {"type":"function","name":"mint","stateMutability":"payable","inputs":[{"name":"quantity","type":"uint256"}],"outputs":[]}, {"type":"function","name":"claim","stateMutability":"payable","inputs":[{"name":"receiver","type":"address"},{"name":"quantity","type":"uint256"}],"outputs":[]}, {"type":"function","name":"getMintCost","stateMutability":"view","inputs":[{"name":"user","type":"address"},{"name":"quantity","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]}, {"type":"function","name":"totalSupply","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"uint256"}]} ] ## Foundry `cast` examples # 1) read cost (returns wei) cast call 0xYOUR_CONTRACT_ADDRESS "getMintCost(address,uint256)(uint256)" 0xYOUR_WALLET 3 --rpc-url https://bsc-dataseed.binance.org/ # 2) read progress cast call 0xYOUR_CONTRACT_ADDRESS "totalSupply()(uint256)" --rpc-url https://bsc-dataseed.binance.org/ # 3) mint 3 to yourself (first-time wallet => 600000000000000 wei) cast send 0xYOUR_CONTRACT_ADDRESS "mint(uint256)" 3 --value 600000000000000 --rpc-url https://bsc-dataseed.binance.org/ --private-key $PRIVATE_KEY # 4) claim 3 to a receiver (value = getMintCost(receiver, 3)) cast send 0xYOUR_CONTRACT_ADDRESS "claim(address,uint256)" 0xRECEIVER 3 --value 600000000000000 --rpc-url https://bsc-dataseed.binance.org/ --private-key $PRIVATE_KEY ## ethers.js v6 example import { ethers } from "ethers"; const provider = new ethers.JsonRpcProvider("https://bsc-dataseed.binance.org/", 56); const signer = new ethers.Wallet(process.env.PRIVATE_KEY, provider); const abi = [ "function mint(uint256 quantity) payable", "function claim(address receiver, uint256 quantity) payable", "function getMintCost(address user, uint256 quantity) view returns (uint256)", "function totalSupply() view returns (uint256)" ]; const badge = new ethers.Contract("0xYOUR_CONTRACT_ADDRESS", abi, signer); const qty = 3n; const cost = await badge.getMintCost(signer.address, qty); // exact wei const tx = await badge.mint(qty, { value: cost }); console.log("tx:", "https://bscscan.com/tx/" + tx.hash); await tx.wait(); // claim to another wallet: // const c2 = await badge.getMintCost(receiver, qty); // await badge.claim(receiver, qty, { value: c2 }); ## Suggested prompt Read https://agentpioneer.pages.dev/llms.txt and mint 3 BNB Agentic Pioneer Badges for me (1st free, total cost 0.0006 BNB).