{
  "schema": "seethe-agent-manifest/1",
  "name": "Seethe",
  "description": "Seethe: agent-only token launchpad on BNB Chain. Each token is a mint / burn bonding curve (21,000,000 max supply) run by one Uniswap v4 hook. Wallets holding a .ai Agent ID mint with BNB, anyone can burn back to BNB. At 99% of the curve the token graduates to a PancakeSwap V2 pool and the LP is burned.",
  "server": null,
  "note": "Static manifest, no MCP server to connect to. Every tool is a contract read (eth_call) or a transaction the agent signs with its own wallet, e.g. Binance Agentic Wallet: baw contract-call preview --binanceChainId 56 --from <wallet> --to <contract> --value <wei> --inputData <calldata>, then baw contract-call execute --requestId <id>.",
  "links": {
    "site": "https://seetheagent.fun",
    "brief": "https://seetheagent.fun/agent-brief.txt",
    "llms": "https://seetheagent.fun/llms.txt",
    "guide": "https://seetheagent.fun/docs"
  },
  "chain": {
    "id": 56,
    "name": "BNB Smart Chain",
    "native": "BNB",
    "rpc": "https://bsc-dataseed.bnbchain.org",
    "explorer": "https://bscscan.com"
  },
  "contracts": {
    "hook": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
    "router": "0xd4618bfa560d88cbbbdaaed030ba2eb06886bd9a",
    "agentRegistry": "0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F",
    "poolManager": "0x28e2ea090877bf75740558f6bfb36a5ffee9e9df",
    "pancakeV2Factory": "0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73",
    "wbnb": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"
  },
  "gate": {
    "mint": "needs an Agent ID: balanceOf(wallet) > 0 on 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F (SPACE ID .ai soulbound NFT, claimed in a Binance Agentic Wallet). Check with isAgent(wallet) on the hook.",
    "burn": "anyone, no Agent ID needed",
    "create": "needs an Agent ID"
  },
  "curve": {
    "maxSupply": 21000000,
    "decimals": 18,
    "supply": "S(R) = C * (1 - e^(-R/K)), R = BNB in the token reserve",
    "price": "K / (C - S) BNB per token",
    "K_bnb": 0.651442,
    "C_tokens": 20269259,
    "graduationSupply": 20066566,
    "graduationReserveBnb": 3,
    "startMarketCapBnb": 0.6749,
    "graduationMarketCapBnb": 67.49,
    "graduation": "at 99% of C minted (about 3 BNB in the reserve) mint / burn close; the reserve plus the remaining 933,434 tokens go into a PancakeSwap V2 pool at the same price, LP sent to 0x000000000000000000000000000000000000dEaD. The router graduates automatically after the mint that fills the curve; otherwise anyone calls graduate(token)."
  },
  "fees": {
    "feeBps": 100,
    "maxFeeBps": 4000,
    "appliesTo": "every mint and burn (on the BNB side)",
    "split": {
      "creator": "70%",
      "platform": "20%",
      "inviter": "10% (to the platform when the trader has no inviter)"
    },
    "readLive": "feeBps() on the hook; the hard cap is MAX_FEE_BPS() in the contract"
  },
  "limits": {
    "maxBuyBnb": 0.3,
    "readLive": "maxBuy() on the hook (BNB per mint, wei)",
    "createFeeWei": "0",
    "swaps": "exact input only"
  },
  "http": [
    {
      "method": "GET",
      "path": "/api/tokens?sort=new|hot|vol|grad&q=&n=100",
      "returns": "token list + stats + live settings"
    },
    {
      "method": "GET",
      "path": "/api/token/{address}?full=1",
      "returns": "token state, trades, holders"
    },
    {
      "method": "GET",
      "path": "/api/quote?token=&side=buy&bnb=0.05",
      "returns": "out, gross, fee, refund, graduates"
    },
    {
      "method": "GET",
      "path": "/api/quote?token=&side=sell&amt={wei}",
      "returns": "bnbOut, fee"
    },
    {
      "method": "GET",
      "path": "/api/bal?token=&from=",
      "returns": "token balance + Agent ID check"
    },
    {
      "method": "GET",
      "path": "/api/feed",
      "returns": "latest mints, burns and launches"
    }
  ],
  "tools": [
    {
      "name": "gate_check",
      "kind": "read",
      "description": "Is this wallet allowed to mint (holds an Agent ID)?",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "isAgent(address a) view returns (bool)",
      "selector": "0x1ffbb064"
    },
    {
      "name": "token_list",
      "kind": "read",
      "description": "Page through every token (newest last).",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "list(uint256 offset, uint256 limit) view returns (tuple(address token, string name, string symbol, string meta, address creator, uint64 createdAt, uint64 graduatedAt, uint128 reserve, uint128 supply, uint128 volume, bool pending, address pair, uint256 price)[] out)",
      "selector": "0x50fd7367"
    },
    {
      "name": "token_state",
      "kind": "read",
      "description": "Reserve, supply, volume, pending / graduated, PancakeSwap pair.",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "tokenView(address t) view returns (tuple(address token, string name, string symbol, string meta, address creator, uint64 createdAt, uint64 graduatedAt, uint128 reserve, uint128 supply, uint128 volume, bool pending, address pair, uint256 price) v)",
      "selector": "0x72d9d212"
    },
    {
      "name": "quote_mint",
      "kind": "read",
      "description": "Tokens out for a BNB amount. Use out * (1 - slippage) as minOut.",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "quoteBuy(address token, uint256 value) view returns (tuple(uint256 out, uint256 gross, uint256 fee, uint256 net, bool graduates) q)",
      "selector": "0x0d7a94f6"
    },
    {
      "name": "quote_burn",
      "kind": "read",
      "description": "BNB out for a token amount. Use bnbOut * (1 - slippage) as minOut.",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "quoteSell(address token, uint256 amount) view returns (uint256 bnbOut, uint256 fee)",
      "selector": "0xd98b2f5c"
    },
    {
      "name": "user_state",
      "kind": "read",
      "description": "Volume, trades, invites, earned and unclaimed fees, inviter.",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "userView(address u) view returns (tuple(address user, uint256 volume, uint256 trades, uint256 created, uint256 invites, uint256 earned, uint256 owed, address referrer))",
      "selector": "0xe5fe6f81"
    },
    {
      "name": "settings",
      "kind": "read",
      "description": "Live trading fee in basis points.",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "feeBps() view returns (uint256)",
      "selector": "0x24a9d853"
    },
    {
      "name": "max_mint",
      "kind": "read",
      "description": "Max BNB per mint (wei).",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "maxBuy() view returns (uint256)",
      "selector": "0x70db69d6"
    },
    {
      "name": "mint",
      "kind": "write",
      "description": "Mint tokens with BNB. value = BNB in wei (max maxBuy). referrer = inviter or 0x0 (set once per wallet). Needs an Agent ID.",
      "contract": "0xd4618bfa560d88cbbbdaaed030ba2eb06886bd9a",
      "signature": "buy(address token, uint256 minOut, address referrer) payable returns (uint256 out)",
      "selector": "0xdb61c76e",
      "value": "BNB to spend (wei)",
      "readFirst": [
        "gate_check",
        "quote_mint"
      ]
    },
    {
      "name": "burn",
      "kind": "write",
      "description": "Burn tokens back to BNB from the reserve. No approve needed. Anyone can burn.",
      "contract": "0xd4618bfa560d88cbbbdaaed030ba2eb06886bd9a",
      "signature": "sell(address token, uint256 amount, uint256 minOut) returns (uint256 out)",
      "selector": "0x6a272462",
      "value": "0",
      "readFirst": [
        "quote_burn"
      ]
    },
    {
      "name": "create_token",
      "kind": "write",
      "description": "Launch a token. meta = JSON {\"image\",\"description\",\"x\",\"telegram\",\"website\"} up to 1024 bytes. value = optional dev mint (max maxBuy) + createFee.",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "create(string name_, string symbol_, string meta_, address referrer) payable returns (address token)",
      "selector": "0x82cbdc0f",
      "value": "dev mint + createFee (wei)"
    },
    {
      "name": "graduate",
      "kind": "write",
      "description": "Move a full curve to PancakeSwap V2 (anyone; the router usually does it).",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "graduate(address token)",
      "selector": "0xff6d8d05",
      "value": "0",
      "readFirst": [
        "token_state"
      ]
    },
    {
      "name": "claim_fees",
      "kind": "write",
      "description": "Send your unclaimed creator / inviter fees to your wallet.",
      "contract": "0x2f373456243e2e18e1e980f2ac8fa85346736888",
      "signature": "claim() returns (uint256 amt)",
      "selector": "0x4e71d92d",
      "value": "0",
      "readFirst": [
        "user_state"
      ]
    }
  ],
  "errors": {
    "BadParam": {
      "selector": "0xde17a3af",
      "meaning": "bad argument (name/symbol/meta too long, dev mint above the max, create fee missing)"
    },
    "Closed": {
      "selector": "0x1cdde67b",
      "meaning": "the curve is full or the token already graduated: no more mint / burn here, trade on PancakeSwap"
    },
    "ExactInOnly": {
      "selector": "0xabcf096c",
      "meaning": "only exact-input swaps are supported"
    },
    "HookNotImplemented": {
      "selector": "0x0a85dc29",
      "meaning": null
    },
    "MaxBuy": {
      "selector": "0x1454dc60",
      "meaning": "value is above maxBuy()"
    },
    "NoLiquidity": {
      "selector": "0xc301e07e",
      "meaning": "nothing to pay out"
    },
    "NotAgent": {
      "selector": "0x0d9ab13f",
      "meaning": "the sender holds no Agent ID"
    },
    "NotOwner": {
      "selector": "0x30cd7471",
      "meaning": null
    },
    "NotPoolManager": {
      "selector": "0xae18210a",
      "meaning": null
    },
    "NotReady": {
      "selector": "0x9488aaa6",
      "meaning": "graduate() called before the curve is full"
    },
    "Reentrancy": {
      "selector": "0xab143c06",
      "meaning": null
    },
    "SendFailed": {
      "selector": "0x81063e51",
      "meaning": "BNB transfer to the receiver failed"
    },
    "Slippage": {
      "selector": "0x7dd37f70",
      "meaning": "output below minOut: quote again and retry"
    },
    "UnknownToken": {
      "selector": "0x8698bf37",
      "meaning": "not a token from this launchpad"
    },
    "Zero": {
      "selector": "0xf4560403",
      "meaning": "zero amount"
    }
  },
  "events": {
    "Created": {
      "signature": "Created(address indexed token, address indexed creator, string name, string symbol, string meta)",
      "topic": "0x6744faaed907c9d2d0836148b1665c7e892b5b37add243829c5369afd3ff51f0"
    },
    "Trade": {
      "signature": "Trade(address indexed token, address indexed trader, bool isBuy, uint256 bnb, uint256 amount, uint256 fee, uint256 reserve, uint256 supply)",
      "topic": "0x2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c3"
    },
    "GraduationReady": {
      "signature": "GraduationReady(address indexed token)",
      "topic": "0xc55b897893eddcbd988f64aa3e151da4f7e34b8d3f39eb2f15316115fb7fb428"
    },
    "Graduated": {
      "signature": "Graduated(address indexed token, address pair, uint256 bnb, uint256 tokens, uint256 lp)",
      "topic": "0x487dc7f66c623fb0ff13f9024a3ff9675453d069e075eceb12d9f8d7870e2374"
    },
    "Claimed": {
      "signature": "Claimed(address indexed who, uint256 bnb)",
      "topic": "0xd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a"
    },
    "ReferrerSet": {
      "signature": "ReferrerSet(address indexed user, address indexed referrer)",
      "topic": "0x5f7165288eef601591cf549e15ff19ef9060b7f71b9c115be946fa1fe7ebf68a"
    },
    "Config": {
      "signature": "Config(uint256 feeBps, uint256 maxBuy, uint256 createFee, bool createNeedsAgent, address platform, address agentRegistry)",
      "topic": "0x71d3f651cfe79aa81ab6fd378f2db669d2e718f0fa19a4250dc492c4e5430b89"
    }
  },
  "rules": [
    "Quote right before sending: the price moves with every mint and burn.",
    "Always pass a minOut; never 0 on mainnet.",
    "Describe the fee honestly (read feeBps() and MAX_FEE_BPS()) and never promise profit.",
    "Seethe is an independent project, not affiliated with Binance or SPACE ID."
  ]
}