---
name: AISNACK
description: Teach an AI agent to claim AISNACK (phase 1 or 2), claim phase-3 leftover, query the sell wall, buy a listing, or sell (list) AISNACK on BSC. Use when the user asks about AISNACK claim, share, market, buy, or sell.
---

# AISNACK — AI agent skill

BSC (`chainId = 56`). Wallet must hold a Binance Agent ID for **claim / claim2**. Market trades use the same Agent wallet. Not affiliated with Binance. Not investment advice.

**Always:** preview → ask the human → execute. Never guess addresses. If an address is still `TBD`, stop.

| | Address |
|---|---|
| Token `<AISNACK_CONTRACT>` | `0x4903Ce0f68f763B8EdBB80A6E9E836373d3190C8` |
| Market `<AISNACK_MARKET>` | `0xD18d117B11e1c3c84f46d1e9ecdC6FD4c8c847A2` |
| Agent ID | `0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F` |

| Constant | Value |
|---|---|
| `CLAIM_AMOUNT` | 100 × 1e18 |
| `CLAIM2_AMOUNT` | 200 × 1e18 |
| `SHARE_MIN` | 10 × 1e18 |
| `MIN_BNB` | 0.1 ether (native BNB balance at claim2 time) |
| `claimFee` | 0 |
| `PHASE1_ENDS_AT` / `CLAIM_ENDS_AT` | 1793145600 (= 2026-10-28 00:00:00 UTC) |
| `PHASE2_ENDS_AT` | 1793491200 (= 2026-11-01 00:00:00 UTC) |
| Market fee | 0 (`price` = **total BNB wei** for the lot) |

Public wall (humans, read-only): https://snack.is-a.si/#market  
Agent instructions page: https://snack.is-a.si/agent

One claim pool. Phase 1 ends → remaining stays in pool for phase 2 → then phase 3.

---

## 1. Claim 100 tokens (phase 1)

**When:** before `PHASE1_ENDS_AT` (2026-10-28 00:00 UTC), user wants the fixed airdrop.

**Checks**

1. `IAgentID.balanceOf(wallet) > 0` — else stop (no Agent ID on this wallet).
2. Token address is not TBD.
3. `hasClaimed(wallet) == false`, `claimOpen() == true`, `claimFee() == 0`.

**Do**

```bash
baw contract-call preview \
  --binanceChainId 56 \
  --from <AGENT_WALLET> \
  --to <AISNACK_CONTRACT> \
  --value 0 \
  --inputData 0x4e71d92d \
  --json
```

Human OK → same with `execute`. Report tx hash. Payout: **100 AISNACK**.

Selector: `claim()` = `0x4e71d92d`

---

## 2. Claim 200 tokens (phase 2)

**When:** at/after `PHASE1_ENDS_AT` and before `PHASE2_ENDS_AT` (2026-11-01 00:00 UTC).

**Checks**

1. `IAgentID.balanceOf(wallet) > 0`.
2. Native BNB `balance` of wallet ≥ `0.1` BNB (`MIN_BNB`) — else stop.
3. `hasClaimed2(wallet) == false`, `claim2Open() == true`.
4. Token address is not TBD.

**Do**

```bash
baw contract-call preview \
  --binanceChainId 56 \
  --from <AGENT_WALLET> \
  --to <AISNACK_CONTRACT> \
  --value 0 \
  --inputData 0x01eaaec4 \
  --json
```

Human OK → `execute`. Selector: `claim2()` = `0x01eaaec4`. Value always `0`. Payout: **200 AISNACK**.

Phase 1 and phase 2 are independent (same wallet may do both if eligible).

---

## 3. Claim leftover (phase 3)

**When:** at/after `PHASE2_ENDS_AT` (2026-11-01 00:00 UTC), user already called `claim2` successfully.

**Checks**

1. `hasClaimed2(wallet) == true` — else cannot share.
2. `hasShared(wallet) == false`.
3. `claim2Count > 0` and pool can pay: either equal unit ≥ 10, or FCFS needs `poolRemaining >= 10e18`.

**Do**

```bash
baw contract-call preview \
  --binanceChainId 56 \
  --from <AGENT_WALLET> \
  --to <AISNACK_CONTRACT> \
  --value 0 \
  --inputData 0x666da64f \
  --json
```

Human OK → `execute`. Selector: `claimShare()` = `0x666da64f`. Value always `0`.

On-chain: if `pool / claim2Count >= 10` → equal split (last puller gets dust); else each successful pull gets **10**, first-come-first-served.

---

## 4. Query open listings

**When:** user asks what is for sale / open orders. **No gas.**

**Checks:** Market address is not TBD.

**Do**

1. Read `listingCount()` on `<AISNACK_MARKET>` (selector `0xa9b07c26`).
2. For each `id` from `0` to `count-1`, read `getListing(id)` (selector `0x107a274a`) → `(seller, amount, price, active)`.
3. Show only rows with `active == true`:

| id | AISNACK (`amount / 1e18`) | BNB (`price` wei) | seller |

Optional: point the human to `web/market.html`.

---

## 5. Buy tokens (buy a listing)

**When:** user wants to buy from the sell wall.

**Checks**

1. Market address is not TBD.
2. Run **§4** (or take an `id` from the user).
3. `getListing(id)`: `active == true`, `seller != wallet`.

**Do**

1. Tell the human: id, amount, **exact BNB** = `price` (wei).
2. Preview `buy(id)` on Market with `--value` = **exactly** `price`.
3. Human OK → execute. Report tx hash.

- Selector: `buy(uint256)` = `0xd96a094a`
- Calldata: `0xd96a094a` + `id` padded to 32 bytes
- **Wrong value → revert**

---

## 6. Sell tokens (list)

**When:** user wants to sell AISNACK for BNB on the wall.

**Checks**

1. Token and Market addresses are not TBD.
2. Ask the human: **how many AISNACK** and **total BNB price** (not per-token).
3. Token `balanceOf(wallet) >= amountWei` (`amount * 1e18`).

**Do**

1. `approve(<AISNACK_MARKET>, amountWei)` on the **token** — value `0` — preview → ask → execute.  
   Selector `0x095ea7b3` + market address (32) + amountWei (32).
2. `list(amountWei, priceWei)` on **Market** — value `0` — preview → ask → execute.  
   Selector `0x50fd7367` + amountWei (32) + priceWei (32).
3. Report tx hash. The new listing shows up in §4 / `market.html`.

**Cancel a sale (delist):** only if `getListing(id).seller == wallet` and `active`.  
`delist(id)` value `0`, selector `0x964bc33f` + id (32). Preview → ask → execute.

---

## Selector cheat sheet

| Action | To | Selector | Value |
|---|---|---|---|
| Claim 100 (phase 1) | Token | `0x4e71d92d` | 0 |
| Claim 200 (phase 2) | Token | `0x01eaaec4` | 0 |
| Claim leftover (phase 3) | Token | `0x666da64f` | 0 |
| Query wall | Market | view `listingCount` / `getListing` | — |
| Buy | Market | `0xd96a094a` | = listing.price |
| Approve (before sell) | Token | `0x095ea7b3` | 0 |
| Sell / list | Market | `0x50fd7367` | 0 |
| Delist | Market | `0x964bc33f` | 0 |
