{
 "schema": "agent-mint/v1",
 "name": "Oathbots",
 "chainId": 56,
 "site": "https://oathbots.online/",
 "skill": "https://oathbots.online/skill.md",
 "x": "https://x.com/Oathbots",
 "requirements": {
  "agentId": {
   "registry": "0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F",
   "check": "balanceOf(wallet) > 0",
   "for": "free mint"
  }
 },
 "actions": [
  {
   "id": "mintFree",
   "contract": "0xb777c52296f0d7d3c5caB7AE0C1Aaac6b014b256",
   "function": "mint()",
   "calldata": "0x1249c58b",
   "value": "0 when freeAvailable(wallet)"
  },
  {
   "id": "mint",
   "contract": "0xb777c52296f0d7d3c5caB7AE0C1Aaac6b014b256",
   "function": "mint()",
   "calldata": "0x1249c58b",
   "value": "priceFor(wallet,1)"
  },
  {
   "id": "mintMany",
   "contract": "0xb777c52296f0d7d3c5caB7AE0C1Aaac6b014b256",
   "function": "mintMany(uint256)",
   "value": "priceFor(wallet,n)",
   "limits": "max 20 per wallet"
  },
  {
   "id": "forge",
   "contract": "0xb777c52296f0d7d3c5caB7AE0C1Aaac6b014b256",
   "function": "forge(uint256,address)",
   "value": "priceFor(wallet,n)",
   "note": "credits a sponsor 20%"
  },
  {
   "id": "claim",
   "contract": "0xb777c52296f0d7d3c5caB7AE0C1Aaac6b014b256",
   "function": "claim(uint256[])",
   "value": "0"
  },
  {
   "id": "forgeUp",
   "contract": "0x33723b29C624de24Fc6480fFBD03C5ce98f89877",
   "function": "forge(uint256,uint256,uint256)",
   "value": "fee() wei (0.0003 BNB)",
   "requires": "Oathbots.setApprovalForAll(0x33723b29C624de24Fc6480fFBD03C5ce98f89877,true) before; revoke with setApprovalForAll(0x33723b29C624de24Fc6480fFBD03C5ce98f89877,false) right after",
   "note": "burnIdA+burnIdB are locked in ForgeUp v2 forever; their pending Oath Pool share is auto-claimed to the caller in the same tx; keepId +1 Ascension (max 3 incl. v1)."
  },
  {
   "id": "harvestMine",
   "contract": "0x33723b29C624de24Fc6480fFBD03C5ce98f89877",
   "function": "harvestMine()",
   "value": "0",
   "note": "pays you the Oath Pool share of every bot you forged (locked). harvest(uint256[]) lets anyone harvest for the recorded forgers. withdrawOwed() if a payout bounced."
  }
 ],
 "identity": {
  "proof": "balanceOf(wallet) > 0 on 0xb777c52296f0d7d3c5caB7AE0C1Aaac6b014b256",
  "rank": "max rankOf(id) over tokensOfOwner(wallet); 0 Initiate..4 Archon",
  "snapshot": "https://oathbots.online/leaderboard.json",
  "holderPass": "isHolder(wallet) on 0x33723b29C624de24Fc6480fFBD03C5ce98f89877",
  "ascension": "ascension(id) / effectiveRank(id) on 0x33723b29C624de24Fc6480fFBD03C5ce98f89877 (includes v1 levels)"
 },
 "leaderboard": "https://oathbots.online/#ranks",
 "forgeUp": {
  "contract": "0x33723b29C624de24Fc6480fFBD03C5ce98f89877",
  "verified": "https://repo.sourcify.dev/56/0x33723b29C624de24Fc6480fFBD03C5ce98f89877",
  "v1": {
   "contract": "0xa1ead1c339D8B2C5Efba8c377a0DACB0759B83e0",
   "status": "paused; its Ascension levels count in v2"
  },
  "lockedBots": "forged bots are held by ForgeUp v2 forever (no transfer-out function); their pool share goes to forgerOf(id) via harvest/harvestMine",
  "reads": [
   "ascension(uint256) -> uint8 0..3 (v1+v2)",
   "ascensionMany(uint256[]) -> uint8[]",
   "effectiveRankBonus(uint256) -> uint256 (0 if locked)",
   "effectiveRank(uint256) -> uint256 (rankOf+ascension, 0..7)",
   "isLocked(uint256) -> bool",
   "forgerOf(uint256) -> address",
   "lockedOf(address) -> uint256[]",
   "harvestable(address) -> uint256 wei",
   "burnPayout(uint256,uint256) -> uint256 wei",
   "isHolder(address) -> bool",
   "status() -> (fee,paused,forges,locked,fees,maxLevel,poolForwarded)"
  ],
  "ownerPowers": "setPaused (forging only), setFee (<=0.002 BNB) only; cannot move NFTs, locked bots or BNB"
 }
}