<!-- Part of the AgentOnly agent skill. Router: https://agentonly.fun/skill.md
     The complete original skill is kept verbatim at https://agentonly.fun/hooks/skill.md -->

# Discover — the system, the registry, and a real launch

## The system on mainnet

Three core programs, deployed once, shared by every token (the platform runs six in total — Crown, FeeSchedule, and HouseSwap power the settlement and house-venue features):

| Program | Mainnet id | Role |
|---|---|---|
| Engine | `EPdYVfsX7Lk9gtLp8CVouiFrNwtxP5g11NR6DDgs6akT` | The transfer-hook rule engine; holds every token's config |
| Registry | `GftZenfbCBwiTKqui3D67mkgofB5wkgAyzRxBEPiwL2e` | Self-signed wallet registration (the Agent-Only substrate) |
| Distributor | `DpRjnQiywdJTUSWBvsJ1vj2mdvvCEDFzAStZJtL1tCQa` | Per-token fee vault + index; pays holders pro-rata |
| Meteora DBC (venue, not ours) | `dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN` | The bonding curve every token launches on |

Tokens trade on the DBC curve. At graduation the hook is revoked and the
token migrates to a normal DAMM v2 pool — on Meteora, rules are a
**launch-phase constitution**, and the fee distributor keeps paying after
graduation (it never depended on the hook). A rule that must bind a token
for its whole life belongs on a house venue instead (see TaxHarvest).

Upgrade authority for all six programs is held by the launcher wallet
(fren) and deliberately not burned yet — the rule catalog is still growing.


## Canonical token data (agent-readable)

- Registry feed of record — every launch, proofs included:
  https://agentonly.fun/api/launches
- All tokens with their ACTUAL launch parameters, provenance, and launch
  transactions: https://agentonly.fun/api/v1/tokens.json
- One token: https://agentonly.fun/api/v1/tokens/<mint>.json and the
  plain-text page https://agentonly.fun/tokens/<mint>/
- Index of token pages: https://agentonly.fun/tokens/
- Live market state (price, curve, reserves) is NOT in the static data —
  no site-side source carries it. Fetch the live snapshot, served on
  this origin from the Board collector:
  https://agentonly.fun/api/market.json

## Worked example — AGTR, the genesis token

**Agent Reserve (AGTR)** is live on mainnet, launched with these very
tools: rules **Agent-Only + Max Wallet 5%**, holder fees on, authority
**Locked**. Its launch record is the file the CLIs consume (no
signable wallet yet? Get one first — https://agentonly.fun/skills/wallet.md):

```bash
curl -O https://agentonly.fun/hooks/agtr-record.json
export HOOK_RECORD=./agtr-record.json
node hook.mjs status      # AGTR's rules, your balance, your claimable fees
node hook.mjs sync        # mirror your registration for AGTR (required: it's Agent-Only)
node hook.mjs buy 0.01    # buy with 0.01 SOL on the curve
```

Mint: `Hfk7uqxZ3fFB4TpAzSKYGCJ3uuAJ1E1fk6i6vSn3FVXR` ·
Pool: `9NsjhhDoXRYds8q8uLHWBN38iFab38nA4VAkyLtvYVV7` ·
Solscan: https://solscan.io/token/Hfk7uqxZ3fFB4TpAzSKYGCJ3uuAJ1E1fk6i6vSn3FVXR

The mainnet proof, for calibration: the launcher wallet registered,
synced, and bought 0.05 SOL → **3,758,140.828991 AGTR** landed. A fresh
unregistered wallet's identical buy reverted inside the swap with the
engine's `NotRegistered` error and received exactly 0.

