---
name: pandaheadclub
description: "Mint, list, buy, and bid on Panda Head Club heads on BNB Chain. Use when an agent is asked to mint a panda head or trade one."
version: 2.0.0
license: MIT
---

# Panda Head Club

One thousand panda heads, drawn by hand. Four tiers: Common 689, Rare 215,
Epic 76, Legendary 20. Artwork and metadata live at
`https://pandaheadclub.site/metadata/<tokenId>.json`.

## Where everything is

- **Chain** BNB Smart Chain, chainId 56
- **RPC** `https://bsc-dataseed.binance.org`
- **Explorer** `https://bscscan.com`
- **NFT contract** `0x1DD09f964b1bc8476ef200b29558EFBd586eb705`
- **Market contract** `0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09`
- **Royalty** 5 percent, paid by the market on every resale

Both contracts are verified on BscScan. Read them before trusting this file.

## Rules you must follow

- Never ask a user for a private key in chat. Use the wallet already configured
  on the machine, or let the user sign.
- Never send a transaction without telling the user the exact amount first.
- Price is not a constant. Always read `currentPrice()` or `totalCost(qty)` and
  send exactly that value.
- Gas is paid by the minter. The collection never pays gas for anyone.

## Minting

Price starts at 0.0014 BNB and rises 25 percent for every 250 paid mints, hard
capped at 0.0035 BNB. Maximum three heads per wallet, 900 paid heads in total.

```bash
# what one head costs right now
cast call 0x1DD09f964b1bc8476ef200b29558EFBd586eb705 "currentPrice()(uint256)" \
  --rpc-url https://bsc-dataseed.binance.org

# exact cost for the quantity you want
cast call 0x1DD09f964b1bc8476ef200b29558EFBd586eb705 "totalCost(uint256)(uint256)" 2 \
  --rpc-url https://bsc-dataseed.binance.org

# mint, sending exactly that value
cast send 0x1DD09f964b1bc8476ef200b29558EFBd586eb705 "mintPaid(uint256)" 2 \
  --value 0.0028ether --rpc-url https://bsc-dataseed.binance.org --private-key $PK
```

Confirm with `totalMinted()`, then read the token back with `tokenURI(id)`.
The first 100 heads are reserved for an allowlist that is not open yet. Until the
owner sets the merkle root, `mintFree` rejects every wallet, so never promise a
free head to a user.

## Trading

The market never holds a head. A seller keeps the token in their wallet and
grants approval once. Payment and transfer land in the same transaction.

Approve the market before listing or accepting an offer:

```bash
cast send 0x1DD09f964b1bc8476ef200b29558EFBd586eb705 \
  "setApprovalForAll(address,bool)" 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 true \
  --rpc-url https://bsc-dataseed.binance.org --private-key $PK
```

Then any of these:

```bash
# list a head at a fixed price, price is in wei
cast send 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "list(uint256,uint256)" 721 2000000000000000 \
  --rpc-url https://bsc-dataseed.binance.org --private-key $PK

# change the price, or cancel the listing
cast send 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "changePrice(uint256,uint256)" 721 2500000000000000 --private-key $PK
cast send 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "cancel(uint256)" 721 --private-key $PK

# read the listing, then buy it with exactly that value
cast call 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "listingOf(uint256)(address,uint256)" 721 --rpc-url https://bsc-dataseed.binance.org
cast send 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "buy(uint256)" 721 --value 2000000000000000 --private-key $PK

# item offer for one head. A higher bid refunds the previous bidder
cast send 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "makeItemOffer(uint256)" 721 --value 500000000000000 --private-key $PK

# accept the best item offer on a head you own
cast send 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "acceptItemOffer(uint256)" 721 --private-key $PK

# collection offer, open to any head, the first owner to accept sells
cast send 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "makeCollectionOffer()" --value 1000000000000000 --private-key $PK
cast send 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "acceptCollectionOffer(uint256)" 721 --private-key $PK
```

Read state without spending gas:

```bash
cast call 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "listed()(uint256)" --rpc-url https://bsc-dataseed.binance.org
cast call 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "itemOfferOf(uint256)(address,uint256)" 721 --rpc-url https://bsc-dataseed.binance.org
cast call 0x7Ca8E586D11D6330e9bce64C93d3DAB6BF7aBc09 "collectionOfferOf()(address,uint256)" --rpc-url https://bsc-dataseed.binance.org
```

## What to report back

Give the user the transaction hash, the block it landed in, and the token id.
If a call reverts, report the reason instead of guessing. The common ones:
`WrongValue` means the value sent did not match the price, `NotApproved` means the
market was not approved, `NotOwner` means the wallet does not hold that head,
`TooLow` means the offer was not above the current best.
