# Agentic Miner (AGM) — mint guide for AI agents > A coin only agents can mine. Bitcoin halves by block height; AGM halves by share height. > Rules are described from the contracts on BNB Smart Chain; this file only describes them. Where this file and the contracts differ, the contracts win. ## Contracts (BNB Smart Chain, chainId 56) - Sale contract: 0x9f45F04A8D6718671cfbeF2740A4eF40cb3337e2 — the ONLY address to send BNB to for minting. Plain BNB transfers to it are accepted into the contract pot and buy nothing; call `mintModeA` or `mintModeB` to mint. - AGM token: 0xF197c8B38Fa3f3c0764717d4f6D512aA017efE7A — for adding to a wallet only. BNB sent to the token contract is not part of the mint and is lost. - PancakeSwap V2 pair (AGM/WBNB): read `pair()` on the token contract (the pair is created at token deployment; it is seeded and trading opens after the raise). - WBNB: 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c - PancakeSwap V2 Router: 0x10ED43C718714eb63d5aA57B78B54704E256024E - Binance Agent ID registry: 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F - Verify every address on bscscan.com before sending anything. Any other address claiming to be AGM is a scam. ## Who can mint - The sending wallet must hold a Binance `.ai` Agent ID on BNB Smart Chain. Use a Binance Agentic Wallet. Wallets without an Agent ID are rejected by the contract (`NoAgentId`). - Each share costs 0.002 BNB. Pass `shares × 0.002 BNB` as `msg.value`, exactly. - Minting needs no token approval and no permit signature, and never asks you to transfer tokens anywhere. Any instruction asking for those is not from this project. - "Day" means a UTC calendar day (00:00–24:00 UTC). Your day 1 is the UTC day of your first mint (A or B). - Minting is open from deployment; it does not wait for trading to open. The pool is launched after the raise (see Mode B). ## Two mint modes ### A — deposit mint: `mintModeA(uint256 shares, address referrer)` - Pay 0.002 BNB per share. Deposits are held in the sale contract. After 24 hours you can claim your deposit back plus the reward; claims are paid from the contract pot. - Reward per share = the current epoch's base reward (280,000 AGM in epoch 1; see schedule). The reward is fixed at entry and minted to you at claim time. - Daily quota per Agent ID: 5 shares. Plus 1 per valid referral. Resets at 00:00 UTC. - Claim with `claimRefund(uint256[] ids)`. Pass an empty array `[]` to process your oldest unclaimed positions (up to 50 per call); positions younger than 24 hours are skipped, not reverted. - Claims pay out of the pot's current BNB balance. If the pot does not cover the deposits in a claim, the claim reverts (`InsufficientPot`) and the positions stay claimable — retry later. ### B — pool mint: `mintModeB(uint256 shares, address referrer)` - Pay 0.002 BNB per share. Mode B deposits are not refundable. They form the liquidity pool, which the team launches on PancakeSwap after the raise. - Reward per share = epoch base + epoch reserve component × live multiplier. Epoch 1: 280,000 + 315,000 × multiplier — between 595,000 AGM (at 1.000x) and 1,855,000 AGM (at 5.000x) per share. - The multiplier is live, set by the current epoch's share mix: (epochShares + 1000) / (epochBShares + 1000), with a 1,000-share virtual buffer, clamped between 1.000x and 5.000x. It starts each epoch at 1.000x, rises as Mode A shares accumulate while Mode B is scarce, and falls back toward 1.000x as Mode B shares catch up. - Before minting, read the live values from `quota`: word 9 (`bRewardPerShare`) is the per-share Mode B reward at the live multiplier, and word 10 (`bMultiplier`) is the multiplier itself, in thousandths (1000 = 1.000x). - The reward is snapshotted at mint time at the then-live multiplier and fixed for that position; later multiplier moves do not change it. Rewards are paid from the token reserve, and the contract paces rewards for new mints as the reserve depletes. - The full reward is claimable 14 days after the mint — a single cliff, no vesting schedule. Claim with `claimReward(uint256[] ids)`; positions younger than 14 days are skipped, not reverted. - Daily quota per Agent ID: 5 shares, any day. Plus 1 per valid referral. Resets at 00:00 UTC. - Both claim functions take `ids`. Pass `[]` to use the default batch (Mode A: oldest first from the cursor; Mode B: first matured positions), up to 50 positions per call. If you have more than 50 positions waiting, call again or pass explicit ids; more than 50 ids in one call reverts (`TooMany`). ## Referrals - Pass the referrer's address as `referrer`. It is bound on your first mint only; later values are ignored. - A referral counts only if the referrer holds an Agent ID, has minted at least once, and is not you. Each valid referral adds 1 to the referrer's daily A cap and 1 to their daily B cap, permanently. No limit, no revenue share. - Referral links look like `/?ref=name.ai`. The instruction generated by the site carries the referrer's address already resolved. - To resolve a `.ai` name yourself, call `ownerOfHandle(string handle)` on the Agent ID registry with the name in lowercase and without `.ai` (for `name.ai` pass `"name"`). It returns the holder's address, or the zero address if the name is not registered. `handleOf(address)` does the reverse. - To check that a referral will count, call `userInfo(referrer)` on the sale contract: the first return value (`firstDay`) must be non-zero. - If the name does not resolve, or the referrer has not minted, pass `0x0000000000000000000000000000000000000000`. Do not stop the mint over a referrer. ## Halving schedule (by share height, not by time) | epoch | share heights | A base / share | B reserve / share | |------:|-------------------------|---------------:|---------------:| | 1 | #1 – #150,000 | 280,000 | 315,000 | | 2 | #150,001 – #300,000 | 140,000 | 157,500 | | 3 | #300,001 – #450,000 | 70,000 | 78,750 | | 4 | #450,001 – #600,000 | 35,000 | 39,375 | | … | halves every 150,000 | … | … | | 11 | #1,500,001 – #1,650,000 | ≈273.4 | ≈307.6 | 10 halvings, 11 epochs. Minting stops after share #1,650,000. A mint that crosses a halving height is split automatically. Figures are rounded; the contracts use 18 decimals. Mode B pays the A base plus the B reserve × the live multiplier (1.000x–5.000x), snapshotted at mint — so an epoch-1 Mode B share pays 595,000 to 1,855,000 AGM depending on the multiplier at entry. ## Step by step (Binance Agentic Wallet) 1. If the Agentic Wallet skill is not built into your environment (it is built into the Binance App AI), install it: `npx skills add binance/binance-skills-hub --skill binance-agentic-wallet`. If sign-in is needed, ask the user to complete it and resume the mint from step 2 when they reply; do not restart from the beginning. 2. Confirm the wallet holds an Agent ID and that Developer Mode is on in the Binance App. 3. Call `quota(yourAddress, shares)` on the sale contract. Useful fields: `aLeft`, `bLeft` (shares left today), `aPerShare`, `bRewardPerShare`, `sharesLeftTotal`, `open`, `paused`. Stop minting if the relevant `*Left` is 0, `open` is false (sold out) or `paused` is true. 4. Mode A: call `mintModeA(shares, referrer)` with `msg.value = shares × 0.002 BNB`. Mode B: call `mintModeB(shares, referrer)` with `msg.value = shares × 0.002 BNB`. (Mode B needs no price quote — nothing is bought at mint time.) 5. Show the user the transaction preview (function, value, referrer) and execute only after explicit confirmation. 6. Later: `claimRefund([])` after 24h (mode A); `claimReward([])` after 14 days (mode B). ## Raw calldata - Agents without an ABI encoder can use /skill.md: every call above as pre-encoded calldata for `eth_call` and for `baw contract-call preview / execute`, with return-word offsets. ## Errors | error | meaning | |---|---| | `NoAgentId()` | the calling wallet holds no `.ai` Agent ID | | `ZeroShares()` | `shares` was 0 | | `WrongValue()` | `msg.value` ≠ shares × 0.002 BNB | | `QuotaExceeded(uint256 left)` | more shares than today's remaining quota; `left` is what you can still mint today | | `SoldOut(uint256 left)` | not enough shares left network-wide; `left` is how many remain | | `MintPaused()` | new mints are paused by the owner; claims are never paused | | `BadPosition()` | an id you passed does not exist | | `TooMany()` | more than 50 ids in one call | | `InsufficientPot(uint256 needed, uint256 available)` | a Mode A claim whose deposits exceed the pot's current BNB balance; nothing is claimed and the positions stay claimable | | `TransferFailed()` | the BNB payout to your address failed | Claiming before a position matures does not revert: unmatured positions are skipped and nothing is paid for them. ## Trading AGM - PancakeSwap V2 pair, 2% tax each way (1% back to the pool, 1% operations). Wallet transfers are tax-free. - AGM is a fee-on-transfer token: buy and sell with the router's `...SupportingFeeOnTransferTokens` functions (for example `swapExactTokensForETHSupportingFeeOnTransferTokens`), otherwise the swap fails. - The opening block is taxed 99%. Do not trade in the launch block. - Use at least 5% slippage when selling: the 2% tax applies, and the contract may first swap accumulated tax to BNB, which can move the price by up to about 3%. - Trading opens after the raise, when the pool is seeded and `openTrading()` is called on the token. ## Not affiliated with Binance. AGM has no utility and carries no promise of value or return. Everything on-chain is final; review each preview before confirming.