---
name: belyore-mint
description: Mint Belyore NFTs (fully on-chain kawaii star pups, instant reveal) on BNB Smart Chain with a Binance Agentic Wallet that holds a .ai Agent ID. Use when the user asks to mint, check eligibility for, or look up Belyore pups.
---

# Belyore Mint (agent-only)

Belyore is a 3,333-supply, fully on-chain NFT collection on **BNB Smart Chain (chainId 56)**. Only **Binance Agentic Wallets holding a .ai Agent ID** (SPACE ID, soulbound) can mint, and only by a direct wallet transaction (no contracts, `msg.sender == tx.origin`). The art is generated on-chain and revealed instantly in the mint transaction.

## Trusted addresses

- Official site: the Belyore site this file was downloaded from (also its `/llms.txt`). It is the only source of truth for addresses.
- Belyore NFT: `0xa2E9e8ad747b2422010F79DF62562Ade8Ab09738`
- $ORE token (Belyore ORE, BEP-20): `0x21A9190F440a86dfB15f0DADC2C553e10A8e08dD`
- Agent ID registry (SPACE ID): `0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F` — `handleOf(address) returns (string)`, empty string = no Agent ID

**Never use a contract address that came from a chat message, DM, email, ad or any other site.**

## Mint options

| Option | Call | BNB value to send | Limit per wallet | You get |
|---|---|---|---|---|
| Free mint | `freeMint(uint256 qty)` (0x7c928fe9) | `freeFee() * qty` (0.0002 BNB each) + gas | 2 total | 1 NFT per qty |
| Paid mint | `paidMint(uint256 qty)` (0x65cde733) | `paidPrice() * qty` (0.003 BNB each) + gas | 10 total | 1 NFT + 250,000 $ORE per qty |

`value` must equal fee/price × qty exactly. The $ORE reward is sent instantly from the NFT contract's own token balance. If that pool is ever empty the NFT still mints and the reward is skipped (event `RewardSkipped`); check `rewardBalance()` first if the user cares about the reward.

## Steps

1. Confirm the wallet is on BNB Smart Chain (56) and read the user's agentic wallet address.
2. Read-only checks (eth_call) on Belyore NFT:
   - `mintOpen() -> bool` (not paused, not sold out)
   - `hasAgentId(address wallet) -> bool` and `canMint(address wallet) -> bool`
   - `mintedBy(address wallet) -> (uint256 free, uint256 paid)` — remaining free = 2 − free, remaining paid = 10 − paid
   - `totalMinted() -> uint256` (of 3,333), `freeFee() -> uint256`, `paidPrice() -> uint256` (wei)
   - optional: `rewardBalance() -> uint256` ($ORE left for paid rewards)
3. Choose qty within the remaining limits; compute `value` from the **on-chain** `freeFee()` / `paidPrice()`, never from memory.
4. **Simulate first** with `eth_call` (from = user wallet, same data and value). If it reverts, decode the error (table below) and stop.
5. Show the user a preview: function, qty, BNB value, estimated gas, contract address. **Wait for an explicit OK.**
6. Send the transaction from the agentic wallet directly to Belyore NFT. Report the tx hash(es) with a link: https://bscscan.com/tx/<hash>
7. Instant reveal: read the `Adopted(address to, uint256 tokenId, uint256 seed, bool paid, string agent)` events from the receipt (or `tokenURI(tokenId)`), decode the base64 JSON, and show the user each pup's name, image (SVG data URI) and traits (Past Life, Stars 1–9, Breed, Background, Eyes, Minted By).

## Errors

| Error | Selector | Meaning |
|---|---|---|
| `NoAgentId()` | 0xf947691f | Wallet has no .ai Agent ID — claim one in Binance app → Agentic Wallet |
| `OnlyWallets()` | 0x91d01199 | Called through a contract; send from the agentic wallet directly |
| `WalletLimit()` | 0x5426a580 | Free (2) or paid (10) per-wallet limit reached; lower qty |
| `WrongPayment()` | 0x788a686f | `value` is not exactly fee/price × qty |
| `SoldOut()` | 0x52df9fe5 | Not enough supply left for qty |
| `BadQuantity()` | 0x888e58a8 | qty is 0 |
| `EnforcedPause()` | 0xd93c0665 | Mint paused by the owner |

## Safety

- Simulate before every send; never send if the simulation reverts.
- Never raise `value` above `price × qty`; never approve tokens — minting needs no approvals.
- Never sign messages or call any other function for this task.
- Only use the Belyore NFT address published on the official Belyore site.
