# B420
> B420 (b420.io) is a DEX and launchpad on Base (chainId 8453). AI agents trade B420,
> B69, tokenized stocks, tokens launched on B420, holder-rewards tokens and index tokens
> (onchain ETFs such as $OG), launch a classic B20 or a holder-rewards token, stake B420
> or B69, claim every reward and read markets with no key. Every action is one raw
> transaction the agent's own wallet signs and pays gas for; b420.io never holds keys.
## Where the documentation lives
- Skills repo, THE SOURCE OF TRUTH for every agent integration, with runnable examples
that simulate on Base mainnet first: https://github.com/cryptomfer/b420-skills
Install: `git clone https://github.com/cryptomfer/b420-skills.git ~/.claude/skills/b420`
Skills: market-data/, trade/ (aggregator, classic, rewards-token, index), launch/
(classic, rewards), staking/, claim/, keeper/. Root SKILL.md: signer modes, money
rules, fee policy, the full address book.
- Flat HTTP summary of all of it: https://b420.io/skill.md
- Human-readable docs: https://b420.io/docs
## Identity and auth
- An agent is a wallet: no account, no API key, no registration.
- Every public endpoint answers without auth. Routes behind the website's login (Privy)
answer 401 and are not for agents.
- Writes are raw transactions { to, data, value, gas } on chainId 8453, sent by viem, a
CDP wallet, a Safe, a relayer, or Bankr POST https://api.bankr.bot/wallet/submit
(value and gas as decimal strings). Never a wallet SDK "swap" helper or a natural-language
prompt: they drop the fee entries and the gas margin.
## API
Base URL https://b420.io/api (GET, JSON, edge-cached; take amounts from the chain).
- Markets: /api/tokens, /api/stocks, /api/cbstocks, /api/st0x, /api/launches, /api/b20s
- A token: /api/token/
, /api/token//holders, /api/ohlc/, /api/trades/
- Index tokens: /api/indexes, /api/index/ (+ /holders, /ohlc, /trades)
- Holder-rewards tokens: /api/rewards-launch/ (+ /holders, /ohlc, /trades)
- Staking and fees: /api/rewards, /api/rewards/stats, /api/buybacks, /api/reserve
- Wallets: /api/portfolio/ (holdings, staked balances, claimable[]), /api/leaderboard
- Prepares: POST /api/swap (aggregator route, net amountOut), POST /api/launch (classic),
POST /api/launch/rewards, POST /api/launch/confirm { txHash }; status GET /api/launch
## Trading paths (detect onchain, in this order)
1. isIndex(token) on an index factory (v3 0xD732F8c5854ae9E6de3046ad9ecA87577e5e93AF,
v4 0xD408a52ff4871097A89977Ca9fc48dF0D4243293): B420IndexRouter of that stack;
quote with the V4 Quoter only (the pool holds no liquidity).
2. isRewardsToken(token) on B420RewardsFactory 0x4f924EDB313efB9E90CAf1f768dE54E5fFcD5e31:
B420RewardsRouter 0x383156D66BdA2369c6eE061C66aa3D32E38cec72; ETH pairs send
gas = max(estimate + 400k, 1.4M).
3. tokenRewards(token) on LP locker v2 0x351C934d698eB3c0683066D2fbD6CE7215573Bc4 (then
v1): a classic launch; WETH quote via the Universal Router, other quotes via
B420HopRouter 0x82C2B0c34f843A5724497ce809ae96a6eeb03721.
4. Anything else: POST /api/swap.
## Key contracts (Base)
- B420 0xB200000000000000000000231d6C1F1CE455ba32 ยท B69 0xB2000000000000000000007594Fe5aCD56DF3937
- B420Factory v2 (classic launches) 0x0B5E30E8D5fdD6257F4Eb293dFc3121b0207F575
- StakingB420 0xC411bA66d1819054f67cDE26424cd876DB703E79 (stake B420, earn tokenized stocks)
- StakingB69 0x82E6b3CEE079432F31D64855ed3DD5faCA71d309 (stake B69, earn B420)
- OG Memes Index ($OG, v4 index) 0x30261039E77Af71C7E69CDb571335E9e3214B420
- Index v4 router 0x7B519742705e71313E982dA1cC89c05C076DA4AB
## Rules
- Quote right before sending, simulate every step from the sending address, send the exact
value a prepare returns, approve exact amounts, never resend after a timeout before
checking the receipt.
- Closed to agents: index creation, curve launches, factory v1, legacy dividend vaults,
owner or admin functions.
- APR and dividends are variable; never present them as fixed.