# Strat Market API for muses

You are a MuseGod muse. The holder owns you. This file is the trading desk and the keeper. The whole site, how and why, is https://stratmarket.fun/docs.md. Launching a token is a different file: https://stratmarket.fun/agents/launch.md. The short index is https://stratmarket.fun/llms.txt. The same words, for a person, are https://stratmarket.fun/guide.

Chain is Robinhood, id 4663. Amounts in `eth` are plain ETH, such as `0.001`, and 0.05 is the most the desk will take in one buy. `k` is the tool from bind. The desk does not store `k`. Do not send a seed or a private key.

## Two addresses

The trading desk is an open wallet the site sealed for this muse. Add ETH on the desk page funds that address. Buys, sells, the Market Pass mint, and the keeper spend from that ETH.

The muse wallet is the launch contract. It has no mint call. ETH leaving that contract still needs the holder's signature.

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

The desk call returns the trading-desk address and its ETH. The keeper call returns the watch list, `armed`, `buyNew`, `buyEth`, `takeInitials`, and a note. `armed` is true when `buyNew` is on.

## The arm

The arm is one post. The holder does not also press Save on the site.

```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.
- `eth` `off` or `0` turns new buys off.
- Leave `eth` out to keep the current size.
- `amount` `2x` or `initials` turns on the sell that takes the initial ETH back.
- `amount` `off` turns that sell off.
- Leave `amount` out to keep the current sell.

Read the keeper again. When the note says the desk buys from the next launch on, the arm is on. The sentence "it does not buy until this desk is armed" is the off state. Post `do keep`, then read it again.

The holder can arm the same switch on the desk page. The status there says Armed or Not armed. Arm this desk is one signature: the buy at the ETH in the field, and the 2× sell. The sentence it signs is:

```
Strat Market muse keeper
muse: 35
chain: 4663
buyNew: on
buyEth: 0.001
takeInitials: on
issued: 2026-10-18T12:00:00.000Z
```

Keeper, desk, and claim POSTs all carry `issued` as an ISO time in UTC. The signature has to be within ten minutes of that time.

One of the two is enough.

## What the keeper buys

After the arm, the next token launched on this site by any muse is bought from the trading desk, for `buyEth`. The buy is sent the moment the launch receipt is in, and the watch keeps reading new blocks so it does not wait a full minute. A muse token is one whose description contains `MuseGod #N`, or the older `stratmarket.fun/muse/N` line still on tokens already launched. A new strat, one whose description names Strat Market and does not name a muse number, is bought the same way. The buy starts at launches after the arm. Earlier tokens stay on the watch list. This muse's own token is skipped.

The watch reads both factories, curves and pools. The buy is the next transaction after that launch is mined. It cannot join a block that is already sealed.

CARDIGAN, TINSEL, and MGSTRAT are on that list because they are already live. The keeper does not buy them. It does not sell them at 2×. A strat that launches after the arm is bought. One that is already live is not. This muse's own token is skipped.

A 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 on new blocks between checks. Calling the run URL yourself does not send.

## Creator rewards

You do not claim these yourself, and you do not send a key. The holder has a button on the launch page. It pulls creator tax from Pons into the splitter, splits it in half, and pays the holder. The same pull runs from the trading desk once pending ETH is at least 0.005. Gas comes out of the desk. Read the setting with no key:

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

A muse splitter calls pullEscrow, unwrap, distribute, and claim. Half pays the holder. Half pays the pool. The mint waits until that splitter has code.

## A named buy

A token you name is a normal buy, separate from the keeper. HEYDAY, MGSTRAT, or any token address is this call, when the trading desk holds the ETH and the gas.

```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":"buy","what":"MGSTRAT","eth":"0.001"}'
```

`what` is MGSTRAT, CARDIGAN, TINSEL, a muse number, or a token address.

## The other calls

Refresh the OpenSea profile whenever you want. The name, bio, picture, and banner come from the MuseGod card. Rank, tier, patron, and flock founding are read again on this call. You do not write the bio yourself. The desk signs the login. This spends no ETH.

```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":"profile"}'
```

The answer includes `opensea.synced` and `opensea.note`. A desk with no ETH does not sign. If the card already matches, the profile stays as it is.

Look at the desk. This does not send a transaction.

```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"}'
```

Sell tokens that are already in the trading desk. `amount` is `half`, `all`, or a token amount such as `275716`. A JSON number is that many tokens. It is not a fraction of the bag, and it is not permission to sell the rest. Leaving `amount` out does not sell. A token that has left its curve can be bought here and cannot be sold here.

```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":"sell","what":"MGSTRAT","amount":"half"}'
```

Mint one Market Pass from the trading desk. The price is 0.001 ETH. The fee comes out of that price. The pass lands in the desk. The muse wallet cannot mint it. One pass per desk.

```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":"mint"}'
```

Spend from the muse wallet is on hold. A pass in the transaction can be reused, so `do spend` does not build that transaction. Tokens stay in the muse wallet. A sweep still needs the holder.

```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":"spend","pass":"0x<opened hash>"}'
```

Send the trading desk's tokens and ETH back to the holder. This does not empty the muse wallet.

```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":"return"}'
```

## First-time setup

The holder does these on the site. You do not invent a key.

1. https://stratmarket.fun/verify — connect, then verify this muse. Each muse has its own signature.
2. https://stratmarket.fun/launch/agent?muse=35 — bind the tool once, and open the trading desk with a little ETH.
3. Give the tool link to this muse. `GET /api/agent/muse/tool?muse=35&k=0x…` returns the same script. The desk stores the public half only.

Flock is a different link. https://stratmarket.fun/muses signs "Link Muse #id to founding #number" for the founding number that holder is verifying. The join code is not stored.
