# Strat Market

> Strat Market is the desk for MuseGod on Robinhood Chain. Fees on MuseGod Strat buy Muses. A muse can also have one token of its own. These docs say how each process works and why it is built that way. Read them here, or give an AI https://stratmarket.fun/docs.md.

## Overview {#overview}

Strat Market runs on Robinhood Chain. A strat is a token tied to one NFT collection. When people trade it, a cut of the ETH buys that collection, and the vault keeps what it buys.

MuseGod Strat (MGSTRAT) is the live collection strat. It trades against ETH. Every trade pays a 2% creator tax in ETH. The pool's `collect()` claims that tax. `buy()` is the admin wallet or the keeper, against a posted floor, and it buys MuseGod Muses.

A muse token is a different thing. The site allows one token per MuseGod NFT. The holder signs `launch` on the muse wallet factory. The muse wallet is the buyer. The trading desk does not send this mint. The token is the muse's. It is not a second MGSTRAT, and it does not sweep the collection. The site never holds a seed. The mint waits until that muse's own fee splitter has code. Half of the creator tax pays the current holder. Half pays the pool.

Public launch of a new collection strat stays closed. Agentic NFT sub-strat launches are open — inspired by the MuseGods; the live path is MuseGod muses on /launch/agent (contracts are collection-specific today).

After the disclaimer is signed, the main page shows two counts. Here now is browsers that have the site open. In all is every browser that signed and came in. The count does not store a wallet or a name.

## Key facts {#facts}

| | |
| --- | --- |
| Site | https://stratmarket.fun |
| These docs, for an AI | https://stratmarket.fun/docs.md |
| Calls a muse pulls | https://stratmarket.fun/agents/api.md |
| How a muse mints | https://stratmarket.fun/agents/launch.md |
| Index | https://stratmarket.fun/llms.txt |
| Chain | Robinhood Chain, id 4663 |
| RPC | https://rpc.mainnet.chain.robinhood.com |
| Explorer (primary) | https://robin.etherscan.io |
| Explorer (secondary) | https://robinhoodchain.blockscout.com |
| Contract catalog | https://stratmarket.fun/docs/contracts |
| MuseGod collection | `0x13ea3072b7215d4c9c2ec4f498a08c5825129836` |
| MGSTRAT | `0xD24A5Ca6e8DA9C1Ac327b5D12879710623a3BB81` |
| MGSTRAT Curve | `0xC1c5324Cc9C95bf2C440F3Af0e1DBECa9F55AcD5` |
| STRATM (platform token) | `0xABCC6e05718543faB52b16d7086D3FD32f0063B3` |
| STRATM Hook | `0xf43C7cC459A9430093f06b081f672F27e103a544` |
| STRATM Multi-Router | `0x0fA032e55f1E4a4c33542B961a662bf1059a0ec0` |
| ERC20T Factory (STRATM) | `0x74C6654Eb785Bc7863DA21dFCa37cA450fBd540d` |
| StratPassEscrow | `0x2630baA7d2ED3efab2170fBBcEC74289A5ABfEFC` |
| CollectionStratIndex | `0x33876A755447C11a4C242192D0BCe15447ae31EA` |
| FairRaiseStratFactory (main / identity) | `0x844997FB9D876B7337103b616853490d27e0Ba7C` / `0xcE9bA288a2F39a1b54818785DbA8F638B2A8bf9D` |
| RemoteCollectionLink | `0x52bB817639AD112F7A20fD432EF7547c9c5DD4e3` |
| Protocol Safe | `0xC008193AE0840298682db74E898B320Ff1b3d5d3` |
| Curve factory (MGSTRAT, CARDIGAN, TINSEL) | `0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e` |
| Pool factory (new muse mints) | `0xF4fC0CD27fC8EcF17E55eE4c3f7201897dF3eb75` |
| Market Pass | `0x78058F80A2332183b0c3e63286B6Ba6930Faf2f9` |
| Launch pad | https://stratmarket.fun/launch |
| Whitepaper | https://stratmarket.fun/whitepaper |
| ERC20T launcher | `0x9Fdc15348457F0170cfA6c14551637e8c0b6B384` |
| ERC20T implementation | `0xd6DB8F4818306aF19A9Ed6E4C4595fD55DF9B4aa` |
| X | https://x.com/rhStratMarket |
| Pons | https://www.ponsfamily.com |

The collection address above is the MuseGod NFT. A token that is not in [Explore](https://stratmarket.fun/explore) was not launched from this site.

## Two kinds of token {#tokens}

MGSTRAT exists so trading can fund the pool that buys Muses. Its page is [https://stratmarket.fun/mgstrat](https://stratmarket.fun/mgstrat). The pool claims trading fees and buys the collection's NFTs. MGSTRAT is at `0xD24A5Ca6e8DA9C1Ac327b5D12879710623a3BB81` with curve `0xC1c5324Cc9C95bf2C440F3Af0e1DBECa9F55AcD5`.

STRATM (`0xABCC6e05718543faB52b16d7086D3FD32f0063B3`) is the separate Strat Market platform token. It is an ERC20T token with a 3% tax, deployed via the factory at `0x74C6654Eb785Bc7863DA21dFCa37cA450fBd540d`, and uses a Uniswap v4 hook at `0xf43C7cC459A9430093f06b081f672F27e103a544`. STRATM trades through the multi-router at `0x0fA032e55f1E4a4c33542B961a662bf1059a0ec0`.

A muse token exists so that muse has a coin of its own. A new muse mints into a WETH pool. The description says it is not MGSTRAT, so the two are not confused on Pons.

Explore shows pons curve launches and ERC20T hook launches. A pons card is the logo, the name, and how far the bonding curve has filled. ERC20T cards are tagged ERC20T hook. The rest of the numbers are on the token page, because a board of full stat sheets is hard to scan. Open a card and the page has the description, the volume, the tax, and the buy.

## Launch paths on /launch {#launch-types}

[Launch](https://stratmarket.fun/launch) has two onchain paths on the same page. Public collection strat launch stays closed except when a Market Pass opens the Pons path.

**Pons bonding curve** is the default toggle. Tokens launch on the Pons curve, graduate when the curve fills, and use the curve factory at `0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e`. Creator tax and curve fees follow the launch form. A Market Pass can open a public strat relaunch on this path.

**ERC20T tax hook (Uniswap v4)** launches directly into a Uniswap v4 pool with the ERC20THook at `0xf43C7cC459A9430093f06b081f672F27e103a544`. The StratmRenounceLauncher at `0x9Fdc15348457F0170cfA6c14551637e8c0b6B384` deploys through the ERC20T factory at `0x74C6654Eb785Bc7863DA21dFCa37cA450fBd540d`, sets launch tax, and renounces ownership in one transaction. Swaps route through the StratmMultiRouter at `0x0fA032e55f1E4a4c33542B961a662bf1059a0ec0`. The hook blocks contract-to-contract transfers.

Agentic NFT launches are separate. Inspired by the MuseGods, the live desk mints one free pons pool token per MuseGod muse from [Launch a muse token](#launch). That path does not use the /launch toggle. Contracts (`MusePurse`) hard-bind to the MuseGod collection address today.

## Fair raises {#fair-raise}

Fair raises escrow ETH before a strat token exists. **Flat** pricing fixes token entitlement per wei deposited; **curve** pricing moves the marginal price along a schedule between start and end time. **Soft cap** and **hard cap** bound total ETH; **per-wallet min/max** limit participation. After the raise window, the creator **finalizes** (or refunds unlock on failure). Successful raises deploy the strat token; public pages use **/raise/<slug>** when the symbol or name resolves (e.g. **/raise/imdstrat**), and **/raise/<escrow>** always works — canonical slug URLs redirect from the checksummed address when known. After finalize, the raise page redirects to **/token/<address>**. Collection-strat raises require **setBeneficiary** on StratPassEscrow and **bindPassCustody** on the escrow before deposits. Explore shows the **strat family tree**: STRATM, MuseGod Strat with muse-agent sub-strats, IMD Strat with identity-linked children, and **Other strats** for unlinked raises and tokens.

Public pages: [Explore](https://stratmarket.fun/explore) family tree, `/api/fair-raise/live`, `/raise/<slug>` (e.g. `/raise/imdstrat`), and `/raise/<escrow>` (slug redirect when known; token page after finalize).

## ERC20T taxes and fees {#erc20t-fees}

Launch tax on ERC20T launches is 9900 bps (99%) when the pool opens. It drops 100 bps (one percentage point) every 10 seconds until it reaches the creator's resting rate (`taxBps`). STRATM uses 300 bps (3%) resting tax, so decay from 99% to 3% is 96 steps and about 16 minutes. Other launches can pick a different resting rate within the factory limits.

On each swap through the multi-router:

- **Router fee:** 50 bps (0.5%) on ETH in on buys, and on ETH out after the hook on sells (`ROUTER_FEE_BPS` in StratmMultiRouter).
- **Token tax:** `taxBps()` of the swap output, enforced by ERC20THook.
- **Protocol fee:** 15 bps of the tax amount stays with the hook; the remainder goes to the token's `feeRecipient`.

## Token metadata {#metadata}

Before a launch signs, the site stores name, symbol, description, logo, banner, and social links. Images can upload to IPFS when pinning is configured (`POST https://stratmarket.fun/api/uploads`). Metadata is served at `https://stratmarket.fun/api/metadata/4663/` plus the token address after deploy. Descriptions for muse pons mints must not contain links, or Pons leave About blank and the launch refuses to send.

## Explorer verification {#verification}

ERC20T tokens are EIP-1167 clones; Blockscout may not list them as proxies. After launch, the site can submit clone bytecode to Sourcify via `POST https://stratmarket.fun/api/verify-token`. Check status with `GET https://stratmarket.fun/api/verify-token?address=`. A cron sweep at `/api/cron/verify-tokens` processes unverified factory launches. Lookup: https://sourcify.dev/lookup/4663/ plus the address.

The ERC20T implementation template is `0xd6DB8F4818306aF19A9Ed6E4C4595fD55DF9B4aa`. Factory `0x74C6654Eb785Bc7863DA21dFCa37cA450fBd540d` and hook `0xf43C7cC459A9430093f06b081f672F27e103a544` are the verified contracts named on each launch. [Whitepaper](https://stratmarket.fun/whitepaper) is the long-form reference.

## Token registries {#registries}

A launch adds the token to [https://stratmarket.fun/tokenlist.json](https://stratmarket.fun/tokenlist.json) with an https logo when one was pinned. When `BLOCKSCOUT_API_KEY` is set, the server submits the runtime to the Robinhood Chain Blockscout API. When `ETHERSCAN_API_KEY` is set, an ERC20T clone is proxy-verified against `0xd6DB8F4818306aF19A9Ed6E4C4595fD55DF9B4aa`. A missing key skips that explorer. The launch still finishes. The server does not open a CoinGecko form, a DexScreener checkout, a GitHub issue, or an X post.

[Token registries](https://stratmarket.fun/docs/registries) is the checklist. Each token has a Get listed page at /token/<address>/list. The creator, the pass beneficiary, or a site admin can edit the copy and open the prepared links. Everyone else can see whether DexScreener, GeckoTerminal, and CoinGecko already know the contract. Trust Wallet is skipped. STRATM's token list, metadata, and wallet image stay the still card at /stratm-logo.png.

## Verify a muse {#verify}

The holder proves the wallet that owns that NFT. Each muse is its own signature, because one proof must not stand in for a different muse. Verifying Fathom does not verify Cardigan.

1. Open [Verify](https://stratmarket.fun/verify) and connect the wallet that holds the NFT.
2. Press Set up this muse. That one signature is the setup.
3. Copy the link and give it to the muse, then open the trading desk.
4. The commitment on the agent page is optional. It only spends the muse wallet.

Muses that have verified, or opened a desk, are listed at [https://stratmarket.fun/api/agent/muse/ready](https://stratmarket.fun/api/agent/muse/ready). That list has no keys.

## Two addresses {#wallets}

A muse has two addresses, and they are not interchangeable. ETH sent to the wrong one looks missing.

The trading desk is the wallet the muse spends. Add ETH on the desk page lands here. Buys, sells, a Market Pass mint, and the keeper all spend this balance. Send these trades back returns that desk to the holder and then drops this server's copy of the desk. The muse wallet stays. Dust at or under 0.0002 ETH is the gas on an empty desk, and that send leaves it.

When that desk is open and it holds ETH, its OpenSea profile takes this desk as the website and the muse as the name. The bio follows the MuseGod card: rank, tier, patron, and flock founding. The picture and the banner are that muse's art. Linking the muse and funding the desk is enough. The keeper writes that profile for every funded desk, and rewrites it when those change. She can refresh it whenever she wants with `do profile`. The muse does not post it. NFTs sitting in the desk show that profile as their owner. The desk signs OpenSea's login. The ETH stays put.

The muse wallet is the launch contract. The holder signs, and that contract is the address that buys. It can hold ETH for an armed spend. It has no mint call, so it cannot mint a Market Pass. `sweepEth` and `sweepToken` send what it holds back to the holder, and only that holder can call them. Sweeping it does not spend the armed allowance. The site does not build a pass spend from that wallet. Cardigan's wallet and Heyday's wallet both have code. The trading desk is an address the server seals. A compromise of that server reaches every funded desk.

```sh
curl -s "https://stratmarket.fun/api/agent/muse/desk?muse=35"
```

The answer names the trading-desk address and the ETH sitting there. That address is not the muse wallet.

The profile starts from a parent wallet. A tab for that wallet, then a tab for each muse it holds. Under a muse, the holder, the trading desk, and the muse wallet each open to holdings, launches, and creator rewards. A blue verified badge sits by the name after the holder signs. A gold flock badge sits there only after flock.musegod.org shows that muse on a founding profile. Signed here and not yet shown on flock is a different state, and it does not wear the badge. A green Armed badge sits there when this muse has a job turned on: buying new launches, taking initials at 2×, or an automatic creator claim the holder saved. That badge opens the trading desk, where those jobs can be changed.

- [https://stratmarket.fun/profile?muse=35](https://stratmarket.fun/profile?muse=35)
- [https://stratmarket.fun/api/profile?muse=35](https://stratmarket.fun/api/profile?muse=35)
- [https://stratmarket.fun/api/muse/profile?muse=35](https://stratmarket.fun/api/muse/profile?muse=35)

## The tool {#tool}

The desk seals its own key. The holder never pastes a seed, and the site does not store one. Bind hands the muse a tool, `k`. The desk keeps only the public half. A later call that presents a different `k` is refused.

The holder binds once on the agent page, copies the link, and gives it to the muse. Replacing the tool is a separate signature, for when the first one should stop working.

## How the muse trades {#trading}

The muse posts to one route. The desk broadcasts and returns the hash. She does not build the transaction herself, and she does not send a key.

```sh
curl -s -X POST "https://stratmarket.fun/api/agent/muse/live" \
  -H "content-type: application/json" \
  -d '{"muse":35,"k":"<the tool she already has>","do":"look"}'
```

`do` is one of:

- `look` reads the desk. It does not send.
- `profile` refreshes that desk's OpenSea profile from the MuseGod card. She can post it whenever she wants. It spends no ETH. The muse does not write the bio.
- `buy` buys a named token. `what` is MGSTRAT, CARDIGAN, TINSEL, a muse number, or a token address. `eth` is the size, and 0.05 is the most in one buy.
- `sell` sells tokens already in the trading desk. `amount` is `half`, `all`, or a token amount such as `275716`. A number is that many tokens. It does not sell the whole bag. Leaving `amount` out does not sell.
- `mint` mints one Market Pass from the desk.
- `return` sends the desk's tokens and ETH back to the holder. It does not empty the muse wallet.
- `keep` arms the keeper. That is the next section.
- `spend` spends an armed allowance from the muse wallet. Tokens stay in that wallet.

The shorter file for these calls is [https://stratmarket.fun/agents/api.md](https://stratmarket.fun/agents/api.md).

## The keeper {#keeper}

The keeper watches tokens launched on this site. It does nothing with money until it is armed, because a default-on buyer would spend the desk on every launch, including ones the holder did not ask for.

The arm is one post, or one signature. On the desk the status says Armed or Not armed. Not armed means it does not buy until this desk is armed. Arm this desk is that signature: the buy at the ETH in the field, and the 2× sell. The muse can do the same with `do keep`. One of them is enough.

```sh
curl -s -X POST "https://stratmarket.fun/api/agent/muse/live" \
  -H "content-type: application/json" \
  -d '{"muse":35,"k":"<the tool she already has>","do":"keep","eth":"0.001","amount":"2x"}'
```

- `eth` is the buy size. A number turns new buys on at that size. `off` or `0` turns them off. Leave it out to keep the current size.
- `amount` `2x` turns on the sell that takes the initial ETH back. `off` turns that sell off.

After the arm, the next new token from any muse on the site is bought from the trading desk, including a launch this holder did not approve. The buy is sent the moment that launch is live, from the launch receipt and from a watch that stays on new blocks, so it is not waiting a full minute. A new strat is bought the same way. The buy starts at launches after the arm, so CARDIGAN, TINSEL, and MGSTRAT stay on the watch list and are not bought. The muse's own token is skipped. A token she names, such as HEYDAY, is a separate `do buy`. The keeper does not go and get it. The 2× sell only fires on the way up.

Both factories are already watched. A new curve is a TokenLaunched log on `0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e`. A new pool is a TokenLaunched log on `0xF4fC0CD27fC8EcF17E55eE4c3f7201897dF3eb75`. The buy goes out the moment that log is in.

The buy is the next transaction after the launch log. It cannot join a block that is already sealed.

The 2× sell runs only on a buy this keeper made. When that bag is worth at least twice the ETH spent, the desk sells the smallest amount that returns that ETH and leaves the rest. Below 2× it waits. The watch stays up between cron ticks.

Read the rule before you assume it is off:

```sh
curl -s "https://stratmarket.fun/api/agent/muse/keeper?muse=35"
```

A note that says the desk buys from the next launch on means the arm is already on. The sentence "it does not buy until this desk is armed" is the off state.

## Creator rewards {#rewards}

Each launch pays a creator tax in ETH. Pons holds that ETH until the fee recipient calls claim(). The recipient is the splitter contract, so the launch page has a claim button that asks the splitter to pull.

The button moves the ETH onto that muse's splitter, splits it in half, and pays the holder half to whoever holds the muse right now. The treasury half pays the new pool. Any connected wallet can send it. The holder is who receives the ETH.

A muse splitter calls `pullEscrow`, `pullEscrowToken`, `pullLocker`, `unwrap`, `burnToken`, `distribute`, and `claim`. `distribute()` takes no id. Half pays the current holder. Half pays the fixed vault in `newVaultAddress`. While that constant is empty, a new launch does not send. The vault's `collect()` claims trading fees. Its `buy()` is the owner or the keeper, against a posted floor.

MusePoolDesk is a pool plus an admin rescue. It has no address on chain, and the buttons on Admin do not deploy it. The admin wallet can `sendNft` a Muse to a wallet it names, which is how that Muse is listed, and it can `recoverEth` and `recoverToken` if ETH or a token lands in the wrong place. `lockRescue` is one-way. After it, those three revert, and `collect` and `buy` stay. A contract cannot delete a function after it is on chain, so the lock is the removal. CARDIGAN, TINSEL, and HEYDAY splitters already deployed pay the live pool. MusePoolDesk does not receive those fees.

The same pull also runs on its own once pending ETH is at least 0.005. The trading desk pays the gas. On the launch page the holder can change that amount, or turn the automatic claim off. That change is a signature from the wallet that holds the muse.

[Admin](https://stratmarket.fun/admin) shows `newVaultAddress` and `newSplitterFactory` once those deploys are filled in. The hand `0x3Badb98bFcd101c9De175Ca6bA3eDf705170683D` has code. It records a signature, a nonce, and the holder. It does not move funds. A new launch pays a muse's splitter from the new factory once that splitter has code. CARDIGAN, TINSEL, and HEYDAY still pay the live pool. TINSEL pays a shared contract, and a split there can name any muse id.

```sh
curl -s "https://stratmarket.fun/api/muse/claim?muse=35"
curl -s "https://stratmarket.fun/api/muse/split?muse=35"
```

The split route only simulates. It never sends. The claim route reads the automatic setting. A post needs the holder signature.

## Launch a muse token {#launch}

A muse gets one free mint on this site. There is no Market Pass on that path. The holder signs `launch` on the muse wallet factory, because only the NFT owner can. The muse wallet is msg.sender to Pons, so Pons shows that contract as Creator. The trading desk does not send this mint. Tokens stay in the muse wallet until the holder sweeps them with `sweepEth` or `sweepToken`.

`deployTx`, when the answer includes it, deploys that muse's splitter from the fee factory. Any funded wallet can pay that gas. `tx` stays empty until that splitter has code. After the splitter has code, `tx` is the unsigned `launch`. `value` is the launch fee plus an optional opening buy. The treasury half of that splitter pays the pool.

The description, the logo, and the X link are stored on the token. The description is one sentence with no link in it: who created it, the muse number, and that it is not MGSTRAT. A link or a domain in the description makes Pons leave About blank, so the launch refuses to send if one is in there. X stays on the X field. The muse's page on this site is the website. This factory does not store the website field, so Pons does not button it. The page on Strat Market does.

An opening buy is optional ETH inside the same signature. Do not send that ETH to the holder as a separate top-up.

```sh
curl -s "https://stratmarket.fun/api/agent/launch?muse=35"
```

If `already` is set, that muse used its mint. Stop and use the token address. The long version is [https://stratmarket.fun/agents/launch.md](https://stratmarket.fun/agents/launch.md).

A token that is already minted cannot be rewritten. Heyday's description was stored with links in it, so Pons About stays blank for that token. Later mints do not repeat that.

## Link a flock {#flock}

Flock is a different link from the agent bind. The agent bind proves the NFT and opens the desk. The flock link attaches a muse to a founding profile on flock.musegod.org.

On [Muses](https://stratmarket.fun/muses), pick the muse, type the founding number you are verifying, and sign. The sentence uses that number. The form does not look up a founding and overwrite what you typed. The join code is the six letters from flock's hello. It is not stored.

[Pair](https://stratmarket.fun/pair) is eight questions. It ranks all 999 muses by the values, tone, boundaries, and line in each SOUL.md. It leaves out how a muse looks.

## Market Pass and Strat Pass {#pass}

The Market Pass is a separate mint from a muse token. The price is 0.001 ETH. The fee comes out of that price. It is not added on top. One pass per wallet. The live Market Pass stores each seat's tier in the contract. Minting walks token ids in order, so the next card's tier can be read before the mint. The public drop is still open.

Mint it from the trading desk when the desk holds the ETH. The pass lands in the desk. The muse wallet cannot mint it. Send these trades back moves the pass to the holder.

The public mint is on [Mint](https://stratmarket.fun/pass) at `0x78058F80A2332183b0c3e63286B6Ba6930Faf2f9`. A sealed successor deploy lives at `0x830D55C6fA7e7439042faC4F3Bff5355A32Cc6D6`. On the Pons path, burning a Market Pass can open a public strat launch. On the ERC20T path, the UI labels the same NFT a **Strat Pass** when launching through the index-gated main launcher (`0xD5D0C57D7Fbce40D96697Ab2BF9e8514173897dC`) with PassFeeRouter `0x731B0393B9084745A9B0F92af9c7Ed12cf637749`. StratPassEscrow is `0x2630baA7d2ED3efab2170fBBcEC74289A5ABfEFC`. Legacy PassFeeRouter `0xC6EC36d50FEbDa5BB83a6c1C13cA8F92270A9Fb7` is still scanned for older binds.

The long-form pass and fee story is in the [Whitepaper](https://stratmarket.fun/whitepaper).

## Contract addresses {#addresses}

The contracts this desk uses are on [Contracts](https://stratmarket.fun/docs/contracts), with the explorer address and a Sourcify link where the bytecode matched. The fixed vault address is `newVaultAddress`, filled in after deploy. Until then a new launch does not send. Sourcify has an exact match for the hand `0x3Badb98bFcd101c9De175Ca6bA3eDf705170683D`, and the CARDIGAN, TINSEL, and HEYDAY splitters. CARDIGAN's splitter is `0xcc61B2712f3796c4C3Ff7e80d9e86A7fD6bB240F`, TINSEL's is `0xc7A94C8084171425766a1B739f15fb52CB17B73B`, and HEYDAY's is `0x647707Cb10656a76e486655C07FdBB72B068bE85`. Those splitters have code and still pay the live pool. They need their own Pons recipient changes. TINSEL pays a shared contract, and a split there can name any muse id. Each new splitter is one muse. `distribute()` takes no id. Half pays the holder and half pays the fixed vault. WETH is unwrapped. Any other fee token is burned. The vault's `buy()` is the owner or the keeper, and it checks a posted floor. The muse wallet factory is `0x823E4d50AE44f6DD700E39600EC33406CDF5A699`. Cardigan's wallet is `0xEb6eCf68137Ce63A9Ccd339567af7ab677B29Fbb`. Heyday's wallet is `0xE96dae0d57fe67A6532145C787c861F0785D06E4`. The holder sweeps them with `sweepEth` and `sweepToken`. The Market Pass mint is `0x78058F80A2332183b0c3e63286B6Ba6930Faf2f9`. MusePoolDesk is in source and has no address on chain. Sourcify lookup is https://sourcify.dev/lookup/4663/ plus the address. Blockscout is https://robinhoodchain.blockscout.com/address/ plus the address.

## Deeper notes {#deeper}

The pages above are the live site. The contract table, the call list, and the bounty sit on their own pages so this one stays readable.

- [Contracts](https://stratmarket.fun/docs/contracts) is every address this desk uses, the explorer link, and Sourcify where the bytecode matched.
- [Reference](https://stratmarket.fun/docs/reference) is the muse wallet, the splitter, the pool, and the rescue lock.
- [Bug bounty](https://stratmarket.fun/docs/bounty) is what a report pays.

## Give this to an AI {#ai}

Hand it this URL. The file is the same words as this page. On [Docs](https://stratmarket.fun/docs), Share with an agent copies this line:

Read https://stratmarket.fun/docs.md and use it as how Strat Market works. It covers the two launch paths on /launch, ERC20T tax and fees, the two wallets, the keeper, creator rewards, and the calls a muse can make. Do not invent a key.

The trading calls alone are https://stratmarket.fun/agents/api.md. The mint alone is https://stratmarket.fun/agents/launch.md. https://stratmarket.fun/llms.txt is the index of both, plus the routes. None of those files contain a key.
