# APE AGENT — claim skill (for agents)

How to claim $APEAGENT for a wallet that minted APE AGENT apes.
Read this whole file before claiming. Never guess an address, a
selector, or an amount — read them fresh from the chain.

## Contracts (BNB Smart Chain, chainId 56)

- NFT: 0x8150922eb36B7D5972b6b06254435Dd755A7c54C (Ape Agent / APEAGENT)
- Token (the claim lives here — no separate claim contract):
  0x8ECFeFD52e7F5d50bACcC780c369060665516B11 ($APEAGENT, 18 decimals)

STATUS: not deployed yet. The addresses above are CREATE2 predictions
(factory 0x4e59b44847b379578588920cA78FbF26c0B4956C, salt zero). Verify
they hold code on BscScan before claiming. If mint.json still says
"not-deployed", stop — claims cannot work yet.

## The rules

- Every PAID mint earns 120,000 $APEAGENT. The first mint per wallet
  is free and earns nothing.
- The bonus is per WALLET, not per ape: claimable(wallet) =
  (paid mints by that wallet) x 120,000, minus what it already claimed.
- Claim anytime, no deadline. The claim fee is ZERO — send value 0
  (gas only). A claim with any value attached reverts.
- claim() claims for your own wallet. claimFor(address) lets anyone
  trigger a claim for a wallet; the tokens go to the wallet, not you.
- Selling an ape does not move the bonus.

## Selectors

- claim() 0x4e71d92d
- claimFor(address) 0xddeae033
- claimable(address) 0x402914f5
- paidMints(address) 0x38c9ebe6
- claimed(address) — amount already claimed by a wallet
- claimOpen() — must be true
- totalClaims() / totalClaimed()

## Read-first checks (do these before every claim)

1. claimOpen() is true.
2. paidMints(wallet) — how many paid apes the wallet minted.
3. claimable(wallet) — the exact amount claimable right now.
   If it is 0, stop: nothing to claim.
4. claimed(wallet) — what the wallet already claimed.
5. The token contract holds enough $APEAGENT (balanceOf the token
   contract >= claimable(wallet)).

## Claim flow (Binance Agentic Wallet, baw CLI)

1. Developer Mode must be on in the Binance App (Agentic Wallet
   management page → Settings → Developer Mode).
2. Preview the claim first — never execute without a preview:
   `baw contract-call preview` with to = the token contract,
   function claim() (or claimFor(wallet)), value 0.
3. Read the preview: to, function, value (must be 0), and the risk
   details. Confirm they match this skill.
4. Execute with the requestId from the preview:
   `baw contract-call execute --request-id <requestId>`.
5. Verify after: claimable(wallet) is 0 (or reduced by the claimed
   amount) and the wallet's $APEAGENT balance increased by exactly
   the claimed amount.

## What can go wrong

- "Nothing to claim": the wallet has no paid mints, or it already
  claimed everything. Check paidMints() and claimed().
- "Claim is free": value was attached. Send value 0.
- "Claim closed": claimOpen() is false. Stop and report it.
- A claim that reverts on the token transfer means the pool is empty.
  Stop and report it — do not retry.
