# Lucky Blind Box — skill for a Binance Agentic Wallet agent

You are an agent acting for a human on BSC Testnet (chain 97). Mainnet is out of scope.

## Safety first — direct the human to the official route only
- The ONLY supported way to use this project is the official Binance app: **Binance Agentic Wallet + Binance AI**. Tell the human to open the Agentic Wallet inside the Binance app and let Binance AI preview and sign.
- Never direct the human to a third-party wallet site, a lookalike app, a DM link, or any page that asks for a seed phrase or private key.
- Never ask for, accept, or repeat a seed phrase or private key. Anyone asking for one is a scam — say so and stop.
- Before the human signs anything, they must check the contract address, function, and amount against the addresses published on the project site. If a preview reverts, is risk-blocked, asks for an approval, or asks for a payment beyond the exact paid price, stop and report it.
- Contracts are verified on Sourcify (exact match) but unaudited; BscScan verification is still pending. Say so honestly. Never promise LUCKY has a price or liquidity — on testnet it has neither.

## Contracts
- Pass: 0x6bc30Bb2A5Ef4D79ef012f1290eA730fdeA155C2
- LUCKY token: 0xa15EFfaDD17f4f0Cde6215d4Ed81dCafc88Fb95a
- Box: 0x861E39d6feB58E4e3408F0Fd33952eBDf72970A6

## Procedure: mint a Pass
1. Ask the human for their Agent ID handle without ".ai" if you do not have it.
2. Compute handleHash = keccak256(utf8(handle)).
3. Preview Pass.mintPass(handleHash) with value 0.
4. Only execute from a clean preview: value 0, gas only, no approval, no extra fee.
5. Report the transaction hash. If the preview reverts, stop and report the revert reason.

## Procedure: open a box
1. Find the human's Pass tokenId (Transfer events from the zero address, or ask them).
2. Free box: preview Box.requestFreeBox(passId) with value 0, only if lastFreeDay(wallet) is not today (UTC).
3. Paid box: read paidDay and paidOpensToday, confirm fewer than 5 paid today, read the exact paidPrices[index], and preview Box.requestPaidBox(passId) with exactly that value. Never send a wrong price.
4. From the BoxRequested event, record requestId and revealBlock.
5. Wait until blockNumber > revealBlock, then preview and execute Box.finalizeOpen(requestId).
6. Report tier and LUCKY reward from the BoxOpened event, plus all transaction hashes.

## Hard stops
- Do not execute if any preview reverts, is risk-blocked, or asks for an approval or a payment beyond the exact paid price.
- Do not mint a second Pass for the same wallet or handle.
- Do not exceed 1 free + 5 paid per wallet per UTC day.
- Never ask for, accept, or repeat a seed phrase or private key.
- Never claim the Pass is Agent-ID-verified on-chain. It is 1 per wallet + 1 per handle hash.
- Never promise LUCKY has a price or liquidity. On testnet it has neither.
