# Meow Tide — guide for AI agents > Meow Tide is a pixel cat-and-fish NFT game on BNB Smart Chain (chain id 56). Wallets that > hold a Binance Agent ID (.ai handle) mint NFTs with BNB; Chainlink VRF makes each one a fish (90%) > or a cat (10%). Fish earn TIDE every day, and cats take a cut of every fish claim. > Use this file to help a user who asks you to mint, claim TIDE, settle, or mint Gen 1. > Always show the user the exact cost and confirm before you send a transaction or spend funds. > Nothing here is investment advice. Meow Tide is an independent project, not affiliated with Binance or Chainlink. "Agent ID" means the .ai identity NFT on BNB Smart Chain that Binance's AI wallets use; the game contract only reads it to decide who may mint. Website: https://meowtide.fun ## Contracts (BNB Smart Chain, chain id 56) - Game contract (also the MEOW NFT, ERC-721): 0x5a819a7a702A41a848439D619F31281C07223A73 - TIDE token (ERC-20, 18 decimals): 0xC3652d3464601587e775673B9f60C9Cdd49e19c5 - PancakeSwap V2 TIDE/WBNB pool: 0xA80745a25047022AF33AA2DF1b2b966A7f0218D9 - Agent ID registrar: 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F Never send BNB or tokens straight to these addresses with a plain transfer. Only call the functions below. ## Before anything: check the wallet - Agent ID: `registrar.handleOf(wallet)` returns a handle; `registrar.ownerOf(uint256(keccak256(handle)))` must equal the wallet. No Agent ID means `mint` and `mintGen1` revert with `NoAgent()`. - Mints used by this Agent ID: `game.mintedById(uint256(keccak256(handle)))`. The limit is 10. - Sold so far: `game.sold()` (out of 10,000). - Tokens the wallet owns: `game.ownedIn(wallet, from, to)` for id ranges, for example 1–2000, 2001–4000 and so on up to `game.sold()`; Gen 1 ids start at 10001 and run below `game.gen1Next()`. - What a token is: `game.peek(id)` returns `(kind, alpha, dna)`; kind 0 = not revealed yet, 1 = fish, 2 = cat. `game.tok(id)` returns `(batch, kind, alpha, last)`; kind 0 there means it isn't settled yet. - Claimable: `game.pending(ids)` returns `(fishGross, catEarned)`. A claim pays the owner 70% of fishGross plus catEarned. ## Mint (genesis) mint(uint256 n) payable, 1 ≤ n ≤ 10 - Send at least `game.quote(n)` wei of BNB as the value. The price steps up at 2,000, 5,000 and 8,000 sold, and other people's mints can land before yours, so near a step the exact quote can revert with `Underpaid()`. Send a margin instead: use the `value` from `POST https://meowtide.fun/api/build` with `{"from": wallet, "action": "mint", "count": n}`, or quote(n) plus 50%. The contract refunds everything above the real price in the same transaction, so tell the user the real cost is quote(n). - Prices per NFT: 0.002 BNB for #1–2,000, 0.003 for #2,001–5,000, 0.004 for #5,001–8,000, 0.005 for #8,001–10,000. - Reverts: `NotStarted()` the sale isn't open yet (check `game.saleStarted()`), `NoAgent()` no Agent ID, `BadCount()` n out of range or over 10 per Agent ID, `SoldOut()` not enough left, `Underpaid()` value below quote. - The NFTs arrive right away but show as unrevealed until Chainlink VRF answers. Chainlink only answers once the game's VRF subscription holds the lane's worst-case fee (about 0.054 BNB); every mint adds 0.00006 BNB, so early in the sale reveals wait until mints have filled it. Check `GET https://meowtide.fun/api/state` → `vrf.ready`. Fish start making TIDE from the moment they're revealed. ## Settle ("wake my cats") settleMany(uint256[] ids) Writes revealed tokens into the game. Cats only start earning their cut after they are settled. Anyone can settle anyone's tokens. Reverts with `NotRevealed()` if a token's batch isn't revealed. ## Claim TIDE claim(uint256[] ids) All ids must be owned by the sender (`NotOwner()` otherwise) and revealed. Settles them if needed. Each fish earns 36,000 TIDE a day, halving every 7 days. On claim: 70% to the owner, 20% shared among settled cats by alpha, 10% never minted. Cat ids pay out their accumulated cut. TIDE can't be transferred until the pool opens at 3,000 mints. ## Gen 1 (after all 10,000 genesis mints) mintGen1(uint256 n) 1 ≤ n ≤ 10, no BNB value Burns `game.gen1Quote(n)` TIDE from the sender (no approval needed). Reverts with `NotGenesisDone()` before the genesis sells out. After Chainlink reveals the batch, anyone calls settleGen1(uint256 batch) to hand the NFTs out. Each one has a 10% chance to go to the owner of a random settled cat instead. The batch number is in the `Minted(minter, batch, firstId, count, paid, gen1)` event of the mint. ## Market (buy and sell cats and fish for BNB) Market contract: 0x04e13cE0775eaCb2E415836e6D81192E116B3d5F - Listings don't move the NFT: it stays in the seller's wallet until a buyer pays, then the market transfers it with `transferFrom`. A listing stops working if the NFT moves or the approval is revoked. - Sell: once per wallet call `game.setApprovalForAll(market, true)`, then `market.list(id, priceWei)`. Listing the same id again changes the price. Take it down with `market.cancel(id)`. Reverts: `NotOwner()`, `NotApproved()` (approve first), `BadPrice()`. - Buy: `market.buy(id)` with value = the listing price (`market.listings(id)` returns (seller, price)); anything above is refunded. Check `market.isValid(id)` first; `Stale()` means the listing is dead. - 2% of each sale goes to the project wallet, 98% to the seller. - Unclaimed TIDE belongs to the NFT, so it moves to the buyer. Tell sellers to claim first and tell buyers how much comes with it (`game.pending([id])`: 70% of fishGross plus catEarned). - `market.page(offset, limit)` lists ids, sellers, prices and whether each is still valid. `POST https://meowtide.fun/api/build` with `{"from": wallet, "action": "list", "id": n, "priceBnb": "0.01"}`, `"buy"`, `"cancel"` or `"approveMarket"` returns ready-made transactions. ## Other facts - Pool: mint 3,000 opens the TIDE/WBNB PancakeSwap V2 pool in the same transaction; LP tokens go to the dead address. After that, 45% of each mint's BNB is added to the pool with matching TIDE. - Pool share: 40% of each mint's BNB (after a tiny fixed VRF fee). - Buyback: 45% of each mint's BNB is spent over about 14 days (at most 0.05 BNB at a time) buying TIDE from the pool and burning it. Anyone can call `buyback()`. - Project: 15% of each mint's BNB goes to the project wallet. The only admin action is `startSale()`, once. Nobody can withdraw pool or buyback funds, change parameters or pause the game. - Sell tax: transfers of TIDE into the official pool (sells, adding liquidity) send 2% of the TIDE to the project wallet. Buys and wallet-to-wallet transfers are untaxed. To sell through PancakeSwap V2 use `swapExactTokensForETHSupportingFeeOnTransferTokens` and allow at least 3% slippage. - Read the contract source on the block explorer before you act.