{
 "protocol": "MESO PROTOCOL",
 "one_liner": "3,000 fixed-supply specimens on BNB Chain with 5 on-chain life stages; every rule and price can be read from the contract.",
 "chain": {
  "name": "BNB Smart Chain",
  "chainId": 56,
  "explorer": "https://bscscan.com"
 },
 "contracts": {
  "nft": "0x054237fe97dad04FB51526dB15aA386075054710",
  "market": "0xc88244FbCEdF927D7BBBc05B8f3090979d903281",
  "floorFund": "0x297F97be9f16bec1f85c1A8d37b0eca9C9B68dF3"
 },
 "supply": {
  "max": 3000,
  "minted": 36,
  "walletCap": 3,
  "ascendedCap": 300
 },
 "costs_bnb": {
  "mint": 0.002,
  "hatch": 0.0002,
  "feed": {
   "hatchling": 5e-05,
   "juvenile": 0.0001,
   "adult": 0.00015
  }
 },
 "timing": {
  "hatchDelayHours": 1,
  "feedCooldownHours": 1,
  "evolveXp": {
   "1to2": 100,
   "2to3": 300,
   "3to4": 700
  }
 },
 "royalty": {
  "erc2981_bps": 500,
  "ascendedShare": "50% of royalty stream split by ascended count"
 },
 "steps": [
  {
   "n": 1,
   "do": "read price/supply",
   "call": "price() / minted() / maxSupply()"
  },
  {
   "n": 2,
   "do": "mint one egg",
   "call": "mint()",
   "value": "price()",
   "note": "max 3 per wallet, hard cap enforced on-chain"
  },
  {
   "n": 3,
   "do": "wait then reveal rarity",
   "call": "hatch(id)",
   "value": "hatchFee()",
   "note": "rarity seed = blockhash, not true randomness"
  },
  {
   "n": 4,
   "do": "feed for xp",
   "call": "feed(id)",
   "value": "per-stage fee",
   "note": "1h cooldown"
  },
  {
   "n": 5,
   "do": "evolve at xp thresholds",
   "call": "evolve(id)",
   "note": "stage 4 capped at 300 specimens"
  }
 ],
 "rules": {
  "freeMint": false,
  "coupons": false,
  "paused": false,
  "ownerCanMint": false,
  "proxy": false
 },
 "endpoints": {
  "stats": "/meso/api/stats",
  "abi": "/meso/meta/abi.json",
  "collection": "/meso/meta/collection.json",
  "mcp": "/meso/mcp",
  "docs": "/meso/llms.txt",
  "quickstart": "/meso/quickstart.json",
  "simulate": "/api/meso/simulate"
 },
 "risks": [
  "no floor price is promised; secondary liquidity is thin",
  "rarity uses blockhash, not a verifiable randomness beacon",
  "metadata is hosted on this domain",
  "specimens cannot be fed or hatched by a third party; the owner must sign"
 ],
 "zero_cost_trial": {
  "endpoint": "/api/meso/simulate",
  "what": "Reads the contract live and returns per-rarity all-in cost, feeds needed and hours to ascend. Nothing is signed.",
  "example": "GET /api/meso/simulate?rarity=2&n=1"
 },
 "actions": {
  "why": "Every step returns an unsigned tx {chain_id,to,data,value_wei}. Sign it with your own wallet; we never hold keys.",
  "what_can_i_do_now": "GET /api/meso/actions?address={wallet} -> per-specimen next step + precheck",
  "build_one_tx": "GET /api/meso/action?address={wallet}&step=mint | hatch | feed | evolve&tokenId={id}",
  "precheck": "server eth_calls the tx with your from/value first; failures return the real revert (cooldown / not owner / too early / not enough xp)",
  "example": {
   "url": "/api/meso/action?address=0x5529F29bc88eb35CC1610E7D38A7082443BdCB37&step=feed&tokenId=2",
   "returns": {
    "ok": true,
    "step": "feed",
    "tx": {
     "chain_id": 56,
     "to": "0x054237fe97dad04FB51526dB15aA386075054710",
     "data": "0xf59dfdfb...",
     "value_wei": "50000000000000",
     "value_bnb": 5e-05
    }
   }
  },
  "verified": "2026-10-27: a tx built by this endpoint was signed and sent on BSC; token 2 xp went 0 -> 10, and the next precheck correctly returned cooldown."
 }
}