# $BAGENT mint guide for AI agents Website: https://basedagent.live · Whitepaper: https://basedagent.live/whitepaper · X: https://x.com/BasedAgentBSC The token is **$BAGENT** (Based Agent) on BNB Smart Chain. It is minted in **mint units**: 1 unit = 50,000,000 BAGENT. The program sells at most 44,400 units. Other tokens using the BAGENT ticker exist on BSC; they are not this project. Only the contracts below are real. ## Contracts (BNB Smart Chain, chainId 56) - $BAGENT mint contract: `0xE3baAd369B4C30E6c6bfB0ffc6658C4a66062D81` (the ONLY address that accepts payment) - $BAGENT token: `0x3bfFC7e51Ac00668041fC70a2043bf78753a4544` (18 decimals). For wallet display only. **Never send USDT or BNB to the token address**; it does not mint and the funds are lost. - Pair (PancakeSwap v2, BAGENT/USDT): `0x4193661093b3c36Ac6e9f8A32a8e6220D5a31ef1` — created by the token contract; this is the only pair the token taxes or recognises. - Poster SBT contract: `0x126eB05C19807bb9BAF6C63668dF3972904f9472` (soulbound; see the free-mint flow, step 4) - Genesis Badge contract: `0xe5fa36d281C9ae646CFc469dA4563c21fc19EF29` (soulbound; Ally minters claim it after minting) - Tax splitter: `0x5A4C1Ce3a6f510fBAb53Fe1f7172dCA35Eb4bee5` (receives the trading tax automatically; never send funds to it) - USDT (BEP-20): `0x55d398326f99059fF775485246999027B3197955` - .ai Agent ID registry (SPACE ID): `0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F` ## Status right now - Program status: contracts deployed, program NOT started yet. Minting opens when the deployer wallet calls start() at the announced launch moment; before that, every mint call reverts. Live status JSON: https://basedagent.live/api/status ## Who can mint The sending wallet must hold a `.ai` Agent ID: `balanceOf(wallet)` on the registry above must equal exactly 1. Each Agent ID may mint **10 units in total for the whole program** (free + paid, all phases). Bonuses: +1 unit if the wallet holds the Poster SBT, +1 unit claimable by a referrer whose invitee qualifies (see Rules). Maximum 10 units per transaction. ## Prices - Phase 1 (units 1–10,000): flat **1.125 USDT per unit**. When unit 10,000 is minted, the pool opens in the same transaction: 8,000.10 USDT + 320,004,000,000 BAGENT go to the pair and the LP is burned. - Phase 2 (units 10,001–44,400): a tier price acts as a ceiling ($1.25 rising by $0.0025 per 100 units, last tier $2.1075). The actual price of a mint is `min(tier, 0.97 × min(spot, 60-minute TWAP))` per unit, computed from the pair at the start of the transaction — by construction the mint price is below the market price at that moment. There is no floor on the Phase 2 mint price. - Always pass `maxCost` = quoted cost × 1.02 as slippage protection. A mint whose cost exceeds `maxCost` reverts and charges nothing. - **Never transfer USDT directly to the mint contract.** A plain transfer does not mint. ## Paid mint (USDT) 1. Call USDT `approve(spender, amount)` (selector 0x095ea7b3) with spender = `0xE3baAd369B4C30E6c6bfB0ffc6658C4a66062D81` and amount = cost × 1.02. 2. Call `mintPaid(uint256 units, uint256 maxCost, address referrer)` (selector 0xc3e3d4d9) on `0xE3baAd369B4C30E6c6bfB0ffc6658C4a66062D81`. Use the zero address if there is no referrer. Add 20% to the gas estimate. 3. Ally holders who also want their Genesis Badge should instead call `mintPaidWithAllyVoucher(uint256 units, uint256 maxCost, address referrer, address origin, uint256 nonce, uint256 deadline, bytes sig)` (selector 0x791e2c3a) with a voucher from the eligibility API (below). The mint itself is identical; the voucher only marks Ally status on-chain. ## Paid mint (BNB) 1. Call `bnbQuote(uint256 units)` (selector 0x68bce8cd) on `0xE3baAd369B4C30E6c6bfB0ffc6658C4a66062D81` to get the BNB amount needed: the USDT cost converted at the Chainlink BNB/USD price plus 1% headroom. 2. Call `mintPaidWithBnb(uint256 units, uint256 maxCost, address referrer)` (selector 0xb79de69d), payable, sending the quoted BNB amount as value and passing the same amount as `maxCost` (here `maxCost` is in BNB wei). Use the zero address if there is no referrer. Add 20% to the gas estimate. 3. Ally holders who also want their Genesis Badge should instead call `mintPaidWithAllyVoucherBnb(uint256 units, uint256 maxCost, address referrer, address origin, uint256 nonce, uint256 deadline, bytes sig)` (selector 0x7f846fa5) with a voucher from the eligibility API. The mint itself is identical. 4. The quoted BNB is swapped to USDT inside the call. If the swap lands below the USDT cost, the call reverts and no BNB is spent beyond gas. USDT received above the cost is not returned to the payer: while bonding it is escrowed with the treasury leg (and if bonding fails it comes back as part of the refund, which for BNB payers equals the USDT their swap obtained); once the pool is open it goes to the treasury. BNB sent above the quote is refunded in the same transaction. A plain BNB transfer to the mint contract reverts; it does not mint. ## Free mint — Ally holders only, first 10 hours 1,111 units are claimable free during the **first 10 hours** after the start time, one per Agent ID, first-come-first-served, and only by wallets currently holding at least one of: - JAGENT `0x8e6442663A4F8C50b6132c68d42A30E7DFE4Ae15` — ≥ 2,000,000 - CENSUS `0xfC96737a40DBf169782E60539B82d4eE17f25708` — ≥ 10,000,000 - GANG `0x0c6302401aa5325C2E36F170f52C00B1d220B405` — ≥ 4,000 Flow: 1. Check and obtain a voucher: `POST https://checker.basedagent.live/voucher` with `{"address": "", "origin": ""}`. The API verifies the .ai ID and both balance points and returns the voucher fields. Read-only check without a voucher: `GET https://checker.basedagent.live/eligibility?address=`. 2. Call `claimFree(address origin, uint256 nonce, uint256 deadline, bytes sig)` (selector 0xddc12f82) on `0xE3baAd369B4C30E6c6bfB0ffc6658C4a66062D81` with the voucher. Vouchers are single-use and expire in 10 minutes. 3. Free units count toward the wallet's 10-unit program quota (1 free + up to 9 paid). Free units are non-transferable until 1 hour after the pool opens; paid units are never locked. 4. Claiming free also makes the wallet eligible to claim its Genesis Badge and — inside the same 10-hour window — the Poster SBT (+1 unit quota). Poster flow: a. `POST https://checker.basedagent.live/poster/code` with `{"address": ""}` returns a claim `code` and an `intentUrl`. b. Give the `intentUrl` to your user. They open it (the draft post is already written, code included), press Post, copy the post URL and return it to you. Do not post on their behalf and do not invent a URL. c. `POST https://checker.basedagent.live/poster/verify` with `{"address": "", "url": ""}`. The API fetches the post itself and verifies it (code and author match, account at least 30 days old, posted after the code was issued, single-use). It returns the PosterVoucher fields. d. Call `claim(uint256 nonce, uint256 deadline, bytes sig)` (selector 0x5eddd157) on `0x126eB05C19807bb9BAF6C63668dF3972904f9472` with the voucher, from the wallet. Vouchers expire in 10 minutes; codes and post URLs are single-use. Details: https://basedagent.live/whitepaper ## If bonding fails If 10,000 units are not reached by the deadline (5 days after the free window ends), paid minters reclaim 100% of what they paid (BNB payers: the USDT value their swap obtained): call `claimRefund()` (selector 0xb5545a3c) on `0xE3baAd369B4C30E6c6bfB0ffc6658C4a66062D81`, once per wallet. Free claims are void. ## Rules worth knowing - Trading tax on the official pair only: buy 1%, sell 2% (1% burned, 1% to the tax splitter). Wallet-to-wallet transfers are untaxed. Tax rates are fixed in code. - The contracts contain no operator withdrawal, no blacklist, no pause, and no upgrade path. The only minter is the mint contract above. - Full rules, the Phase 3 NFT Holder program and the Phase 4 staking tax split (25% treasury / 75% staking, announced in advance) are in the whitepaper.