# Agentica (AGTC) — Market Guide for AI Agents

You are an AI agent acting for a human who holds a **Binance Agent ID**.
This document tells you exactly how to list, buy, and cancel Agentica NFTs
on the official **Agentica Market** on BNB Smart Chain. Read it fully first.

> ⚠️ GOLDEN RULE: Never sign or broadcast any transaction without your
> human's explicit confirmation of the exact action and cost. Show them a
> preview first. The official website (agenticanft.xyz) NEVER asks anyone
> to connect a wallet or sign anything — trading happens only through
> agents like you, on-chain. Any website that asks your human to connect
> or sign "for the Agentica Market" is a scam.

## Contracts (BNB Smart Chain, chainId 56)

- Agentica NFT (AGTC): `0x9c5405c348A3B2DbC6860C538c9B46573AF8DBCd`
- Agentica Market: `0xde9b39224e878b79b34b4815e03bf25aac6a3eeb`
- Payment token — BSC USDT (BEP20, **18 decimals**):
  `0x55d398326f99059fF775485246999027B3197955`
- RPC: `https://agenticanft.xyz/rpc` (read-only proxy) or any BSC RPC.

## Market rules (enforced by the contract itself)

1. **Agent ID required to list AND to buy.** The market checks the same
   Binance Agent ID registry as the mint, for every call:
   `AGTC.isAgent(wallet)` must be true.
2. **Fixed prices in USDT.** Platform fee **0%**. On a sale, the ERC-2981
   royalty (**2.5%**) goes to the collection owner and the remaining
   97.5% to the seller — split atomically inside the buy transaction.
3. **Locked anti-dump minimums.** Each rarity has a minimum listing
   price, fixed once at the market's launch: Common 2 · Uncommon 4 ·
   Rare 8 · Epic 15 · Legendary 30 (USDT). A listing below the
   minimum is rejected by the contract instantly. The minimums can
   NEVER be changed — the contract has no function to raise, lower,
   or remove them, for anyone, including the collection owner. Above
   the minimum, pricing is completely free. Read a token's minimum
   any time: `minimumOf(tokenId)` (selector `0x021f8324`).
4. **Escrow.** Listing moves the NFT into the market contract until it
   sells or the seller cancels. The seller can cancel at any time —
   including while the market is paused — and reclaim the NFT. Nobody
   else can move a listed NFT.
5. **Approvals, exactly scoped.** Approve the market for the ONE token
   being listed (never `setApprovalForAll`), and for buying approve
   exactly the listing price in USDT — never more.

All amounts below are USDT with 18 decimals: 8 USDT = `8000000000000000000`.

## Sell (list a token)

1. Verify: `AGTC.ownerOf(tokenId)` (selector `0x6352211e`) is your human's
   wallet, and `AGTC.isAgent(wallet)` is true.
2. Read the locked minimum: market `minimumOf(tokenId)`. Your human's
   price must be ≥ that minimum; above it, the price is entirely theirs.
3. Preview for your human: token, price, "NFT will sit in escrow until
   sold or cancelled". Wait for their confirmation.
4. Approve: call AGTC `approve(marketAddress, tokenId)`
   (selector `0x095ea7b3`, value 0).
5. List: call market `list(tokenId, priceWei)` (selector `0x50fd7367`).
6. Verify: market `listingOf(tokenId)` (selector `0xe3404981`) returns
   (your wallet, price, true) and `AGTC.ownerOf(tokenId)` is the market.

## Buy a listed token

1. Read the listing: market `listingOf(tokenId)` → (seller, price, active).
   If `active` is false, it is not for sale. If the live price differs
   from what your human approved, STOP and ask them.
2. Verify: `AGTC.isAgent(your wallet)` is true, and USDT
   `balanceOf(wallet)` (selector `0x70a08231`) ≥ price.
3. Preview for your human: token, exact price, royalty split. Wait for
   their confirmation.
4. Approve USDT: call USDT `approve(marketAddress, priceWei)` — exactly
   the price, selector `0x095ea7b3`.
5. Buy: call market `buy(tokenId)` (selector `0xd96a094a`).
6. Verify: `AGTC.ownerOf(tokenId)` is your human's wallet.

## Cancel a listing

1. Verify `listingOf(tokenId)` shows your human as the seller.
2. Preview + confirmation, then call market `cancel(tokenId)`
   (selector `0x40e58ee5`).
3. Verify: `AGTC.ownerOf(tokenId)` is your human's wallet again.

## Notes for Binance Agentic Wallet (`baw`) agents

Use `baw contract-call` with a preview first, show the preview summary to
your human, and execute only after their confirmation, passing the
preview's `--requestId` — the same discipline as the Agentica mint guide.
Selectors you need are listed above; build `inputData` as
selector + 32-byte arguments (addresses left-padded with zeros).

## If something reverts

- `seller: no Agent ID` / `buyer: no Agent ID` — the wallet holds no
  Binance Agent ID.
- `below minimum` — the price is under the token rarity's locked
  minimum; read it with `minimumOf(tokenId)`.
- `already listed` / `not listed` / `not seller` / `own listing` — the
  listing state does not match the attempted action.
- `paused` — the owner has paused listing/buying. Cancelling still works.
- USDT transfer failures — allowance or balance below the price.
