# ORDIagent — mint guide for AI agents

Machine-readable instructions for an AI agent that holds a **Binance Agentic Wallet** (`.ai` Agent ID) and wants to mint ORDIagent shares on **BNB Smart Chain (BSC, chainId 56)** for its owner.

Site: https://ordiagent.xyz · X: https://x.com/OrdiAgent

## 0. Safety rules (always)

- Never ask the owner for a private key, seed phrase or password. ORDIagent never holds keys.
- Before **every** contract call: run `contract-call preview`, then show the owner the contract address, the function and its arguments, the BNB/USDT amount and the estimated gas. Execute only after the owner replies **yes**.
- If a preview fails, or anything differs from what the owner asked for, stop and show the error.
- Only use the addresses published in `/config.js` (`window.OA_CONFIG.addresses`). If `sale` is empty, the contracts are **not deployed yet**: stop and tell the owner. Never guess or search for an address.

## 1. Addresses

From `/config.js` → `OA_CONFIG.addresses`:

| key | meaning |
|---|---|
| `sale` | OrdiAgentSale: free claim, paid and post-open mints, owed BNB |
| `token` | ORDIagent BEP-20 token (18 decimals) |
| `pair` | ORDIagent/WBNB PancakeSwap V2 pair |
| `usdt` | `0x55d398326f99059fF775485246999027B3197955` (BSC USDT, 18 decimals) |
| `treasury` | `0x11cd235c7b19da92878245c006a7e4b4cb6eb0c4` |

Chain: BNB Smart Chain, chainId `56`. Sale start: unix `1794218400` (2026-11-09 10:00 UTC).

## 2. Rules

- Shares #1–#1,000 are free: `claimFree()`, one per `.ai` Agent ID.
- Shares #1,001–#10,000: 0.003 BNB per share (or USDT at the live PancakeSwap price). Before the pool opens the caller needs an Agent ID; max 10 paid shares per Agent ID, +1 for every friend who names you as `inviter` on their first paid share.
- Share #10,000 opens the ORDIagent/WBNB pool automatically; the LP goes to the dead address.
- After the pool opens: anyone can mint, no limit; 0.0035 BNB per share for #10,001–#10,500, then +0.0005 BNB every 500 shares. Tokens per share = tier price ÷ pool TWAP price.
- Trading tax: 5% buy / 45% sell for the first 15 minutes after the pool opens, then 2% / 2% permanently.
- If #10,000 is not reached within 30 days of the sale start, only the treasury can withdraw the LP funds and the referral pool, and minting stops.
- Read state first with `stats()` and `userInfo(address)`.

## 3. Functions (OrdiAgentSale)

```
function saleStart() view returns (uint256)
function stats() view returns (tuple(uint256 sold,uint256 freeClaimed,bool started,bool freeRound,bool open,bool soldOut,bool expired,uint256 nextShare,uint256 nextPrice,uint256 tier,uint256 tierLeft,uint256 raised,uint256 poolBnb,uint256 inviterPot,uint256 openedAt,uint256 saleEnds,uint256 tokensLeft))
function userInfo(address w) view returns (tuple(bool hasAgentId,uint256 agentId,bool freeUsed,uint256 preBought,uint256 limitLeft,uint256 invites,bool topInviter,uint256 owedBnb,uint256 tokenBalance))
function quote(uint256 shares) view returns (uint256 bnbCost,uint256 usdtCost,uint256 tokensOut,uint256 filled)
function claimFree()
function mintShares(uint256 shares,address inviter,bool payUsdt,uint256 maxUsdt) payable
function claimOwed(address to)
```

- Free: `claimFree()`, value 0.
- Paid with BNB (pre-open): `mintShares(n, inviter, false, 0)` with value `n × 0.003 BNB`.
- Post-open with BNB: `mintShares(n, 0x0000000000000000000000000000000000000000, false, 0)` with value `quote(n).bnbCost × 1.005`; any excess is refunded in the same transaction.
- USDT: first `approve(sale, quote(n).usdtCost × 1.01)` on USDT, then `mintShares(n, inviter, true, quote(n).usdtCost × 1.01)` with value 0.
- `inviter`: a wallet address, or `0x0000000000000000000000000000000000000000` for none.

## 4. Read-only view for the owner

The owner can watch your wallet on the site without connecting anything: `https://ordiagent.xyz/?agent=<your BSC address>`.
