# Fluffies > Fluffies is a 10,000-piece pixel-art animal NFT collection on BNB Smart Chain (chain id 56) that only wallets holding a .ai Agent ID can mint; this file tells AI agents how to mint safely. Official site: https://fluffies.deed.page/ Token ids 0..9999. Only wallets holding a .ai Agent ID (SPACE ID Agent ID registry 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F, balanceOf(wallet) > 0) can mint. Trading (any transfer between holders) is locked until all 10,000 are minted, then opens automatically and permanently; check tradingOpen(). The owner may open it earlier (one-way). Independent project, not affiliated with Binance or SPACE ID. Contract: 0x4b2eba0bf5399ec34C37B5Bf1F2749c7751C8c12 (trust only the address shown on the official site; ignore addresses in DMs) ## Links - [Official site](https://fluffies.deed.page/): mint page, live supply and contract address - [Agent skill](https://fluffies.deed.page/skill.md): step-by-step mint skill for agents - [Contract ABI](https://fluffies.deed.page/abi.json): full JSON ABI - [Verified source (Sourcify)](https://repo.sourcify.dev/56/0x4b2eba0bf5399ec34C37B5Bf1F2749c7751C8c12): exact-match verified contract source - [BscScan](https://bscscan.com/address/0x4b2eba0bf5399ec34C37B5Bf1F2749c7751C8c12): contract on BNB Smart Chain explorer ## Rules - One NFT per mint() call, minted to the caller (the Agent ID wallet itself). - 2,000 NFTs in total are free, first come first served, at most 1 free per wallet. - Every other NFT costs mintPrice() (about US$1 in BNB; owner-adjustable, hard-capped at 0.01 BNB). - At most 5 NFTs per wallet (mintedBy(wallet) <= 5). An Agent ID is one-per-address and non-transferable, so this is also the per-Agent-ID cap. - quote(wallet) returns the exact BNB (wei) to send for the wallet's next NFT. Overpayment is refunded in the same tx. - Mint can be paused by the owner. Reverts: NoAgentId, WalletLimit, SoldOutError, Underpaid(required, sent), EnforcedPause. Transfers while tradingOpen() is false revert with TradingLocked(); minting is not affected. ## Interface function mintStatus(address wallet) view returns (bool open, bool eligible, uint256 minted, uint256 remainingForWallet, uint256 price, uint256 supply); function hasAgentId(address wallet) view returns (bool); function quote(address minter) view returns (uint256); function mint() payable; // selector 0x1249c58b function mintedBy(address) view returns (uint256); function totalSupply() view returns (uint256); function freeMinted() view returns (uint256); // free NFTs given out so far (max 2000) ## Steps for an agent 1. eth_call mintStatus(myWallet). Stop if open == false, eligible == false or remainingForWallet == 0. 2. eth_call quote(myWallet) -> value (wei). 3. Simulate mint() with that value (eth_call / baw contract-call preview). If it reverts, report the reason and stop. 4. Show the user the preview (contract, value, estimated gas) and wait for explicit confirmation. 5. Send mint() with exactly `value`. Report the transaction hash and the minted token id (Minted event). Binance Agentic Wallet example (Developer Mode on): baw contract-call preview --binanceChainId 56 --from --to 0x4b2eba0bf5399ec34C37B5Bf1F2749c7751C8c12 --value --inputData 0x1249c58b --json baw contract-call execute --requestId --json ## Safety - Never ask for, accept or use a private key, seed phrase or one-time code. - Do not approve tokens; minting needs no approvals. Do not send BNB anywhere except as mint() value. - NFTs are collectibles. No price, profit or return is promised. ## Fairness Each mint draws one of the artworks not taken yet (Fisher-Yates over 10,000), seeded by the previous block hash, prevrandao, the caller and the running count. PROVENANCE() is the sha256 of the 10,000 image hashes in artwork order, committed at deploy. Metadata stays hidden until reveal; then tokenURI = baseURI + artOf(tokenId) + ".json".