---
title: "Command Stone — Market Cards"
description: "Research an Output, then buy it, offer on it, list it or accept an offer, from whatever page you're on. Plus every sticker sheet priced and the keychain machine with your odds."
category: "app"
keywords: ["command stone", "market", "sweep", "list", "accept", "counter", "cancel offers", "my offers", "deal finder", "bid heat", "sticker sheet", "keychain market", "luck"]
last_updated: "2026-10-19"
---

# Command Stone — Market Cards

From any page, the stone does the whole loop: look it up, then buy it, offer on it, list it or take an offer, without leaving where you are. It uses the same checkout and offer flows as the rest of PD, and anything that spends or commits asks first on a confirm card. Your wallet still shows its own signature screen after that.

**How:** Type the ask into the stone, for example `buy voltaic 8`, `offer 0.2 on carnivale 2` or `list my carnivale 2 at 0.3`. Open an Output first and `buy it` or `offer 0.2 on this` means that Output.

## Research first

| Type | Get |
|---|---|
| `arcology floor` | The Project card with the floor leading ([how it reads](/docs/command-stone#how-an-answer-reads)) |
| `arcology holders` | The top 10 holders, plus your own row |
| `is arcology a good price` · `good price?` | The floor against the all-time high and the 30-day trend, with a plain verdict |
| `find me a deal on arcology` | The Deal Finder ❖: listed Outputs ranked by rarity for the price, the best one first |
| `bid heat on arcology` · `where are the bids on arcology` | Every Output as a square, brighter where offers stack |
| `calc arcology 0.5` | The Calc ƒ: buy at 0.5, flip at today's floor, with the 5% royalty and gas taken off |
| `what if i'd minted voltaic 8` | The Time Machine ◷: what that Output cost at mint, what it's worth now, and where you'd be |

## Buy

`buy voltaic 8` reads the Output's market and lays it out: the piece, its price and who listed it, a plain read against the floor and the last sale, and what you pay. The button buys it, after the confirm card.

```show steps
{
  "caption": "A buy, from one sentence. Prices here are examples.",
  "steps": [
    { "say": "Type the ask. The card reads the listing and checks the price against the floor and the last sale.",
      "show": { "kind": "stone", "asks": [
        { "ask": "buy voltaic 8", "line": "Here.",
          "cards": [{ "title": "BUY", "glyph": "✦", "titleSub": "VOLTAIC #8",
            "say": "VOLTAIC #8 · ◊0.09",
            "tiles": [
              { "art": { "slug": "voltaic", "id": 8 } },
              { "label": "PRICE", "glyph": "◊", "big": "◊0.09", "sub": "LISTED" },
              { "size": "wide", "label": "THE READ", "big": "1.1× FLOOR · LAST SOLD ◊0.07", "bigSize": "md" },
              { "size": "wide", "label": "YOU PAY", "glyph": "≈ $504 CAD", "big": "◊0.09", "sub": "NO FEES · PLUS GAS" }
            ] }],
          "foot": "✦︎ BUY · VOLTAIC #8 · ◊0.09" }
      ] } },
    { "say": "Tap the button. The confirm card names the action and the amount.",
      "show": { "kind": "confirm", "question": "Buy this output · 0.09 ETH?", "ok": "Buy", "done": "✦︎ Buy complete · 1 token acquired ✦︎" } },
    { "say": "While it works, a WORKING tile shows each step with a moving bar. When it lands the card says YOURS, and a THE HAUL tile and the RECEIPT button give you the receipt to share or save. The card stays open the whole time.",
      "show": { "kind": "toast", "toasts": [{ "msg": "✦︎ Buy complete · 1 token acquired ✦︎" }] } }
  ]
}
```

- **Not listed?** The card says NOT LISTED. MAKE AN OFFER INSTEAD. and shows the floor and the offer line to type.
- **Already yours?** It says ALREADY YOURS. and offers nothing to buy.
- **`buy the cheapest arcology`** opens the BUY card on the cheapest listed Arcology Output.
- **`sweep the 3 cheapest arcology`** picks the three cheapest listed Outputs (up to 10), skips any of your own, and buys them together after one confirm: "Sweep 3 outputs · 1.29 ETH?".

## Offer

`offer 0.2 on carnivale 2` puts your offer next to the numbers that matter: the top offer now, the asking price or the floor, and the plain read. An offer runs for 30 days.

```show stone
{
  "caption": "An item offer and a collection offer. Prices here are examples.",
  "asks": [
    { "ask": "offer 0.2 on carnivale 2", "try": "ONE OUTPUT", "line": "Here.",
      "cards": [{ "title": "OFFER", "glyph": "✶", "titleSub": "CARNIVALE #2",
        "say": "◊0.2 ON CARNIVALE #2",
        "tiles": [
          { "art": { "slug": "carnivale", "id": 2 } },
          { "label": "YOUR OFFER", "glyph": "✶", "big": "◊0.2", "sub": "≈ $1,120 CAD" },
          { "size": "wide", "label": "THE READ", "big": "0.95× FLOOR · LAST SOLD ◊0.18", "bigSize": "md" },
          { "label": "TOP OFFER", "big": "◊0.15", "sub": "BELOW YOURS" },
          { "label": "FLOOR", "big": "◊0.21", "sub": "NOT LISTED" }
        ] }],
      "foot": "✶︎ OFFER ◊0.2 · CARNIVALE #2 · 30D",
      "does": "Asks first: Offer 0.2 ETH on this output for 30 days? Then the toast reads Offer: PLACED · 0.2 ETH." },
    { "ask": "offer 0.15 on any arcology", "try": "ANY OUTPUT", "line": "Here.",
      "cards": [{ "title": "COLLECTION OFFER", "glyph": "✶", "titleSub": "ARCOLOGY",
        "say": "◊0.15 ON ANY ARCOLOGY OUTPUT",
        "tiles": [
          { "label": "YOUR OFFER", "glyph": "✶", "big": "◊0.15", "sub": "≈ $840 CAD" },
          { "label": "ANY OUTPUT", "big": "200 MINTED", "bigSize": "md", "sub": "ANY ONE CAN FILL IT" },
          { "size": "wide", "label": "THE READ", "big": "0.36× FLOOR", "bigSize": "md" }
        ] }],
      "foot": "✶︎ OFFER ◊0.15 · ANY ARCOLOGY OUTPUT · 30D",
      "does": "Asks first: Offer 0.15 ETH on any Arcology Output? Then the toast reads Offer: PLACED · 0.15 on any Arcology Output." }
  ]
}
```

| Type | Get |
|---|---|
| `offer 0.2 on carnivale 2` · `offer 0.2 on this` | An offer on one Output |
| `offer 0.15 on any arcology` · `offer 0.15 on arcology collection` | A collection offer: any Arcology Output can fill it |
| `offer 0.1 on arcology with <trait words>` | A trait offer, matched against the traits the Project really has. No match, no offer |
| `cancel my offers on arcology` | Every open offer you've made on Arcology, cancelled together after one confirm |

## Sell

These work only on Outputs you own. An Output in a Vault can't be listed or sold until you take it out; the button shows ⚿ and tells you so.

```show stone
{
  "caption": "Listing from the stone. YOU NET takes off the 5% royalty. Prices here are examples.",
  "asks": [
    { "ask": "list my carnivale 2 at 0.3", "line": "Here.",
      "cards": [{ "title": "LIST", "glyph": "✹", "titleSub": "CARNIVALE #2",
        "say": "LIST CARNIVALE #2 AT ◊0.3",
        "tiles": [
          { "art": { "slug": "carnivale", "id": 2 } },
          { "label": "YOUR PRICE", "glyph": "✹", "big": "◊0.3", "sub": "≈ $1,680 CAD" },
          { "size": "wide", "label": "THE READ", "big": "1.4× FLOOR · LAST SOLD ◊0.18", "bigSize": "md" },
          { "size": "wide", "label": "YOU NET", "big": "◊0.285", "sub": "◊0.3 − ROYALTY 5% ◊0.015" }
        ] }],
      "foot": "✹︎ LIST · CARNIVALE #2 · ◊0.3",
      "does": "Asks first: List Carnivale #2 for 0.3 ETH? Then the toast reads List: LIVE · 0.3 ETH." }
  ]
}
```

| Type | The confirm card asks | Then |
|---|---|---|
| `list my carnivale 2 at 0.3` · `list it at 0.3` | List Carnivale #2 for 0.3 ETH? | List: LIVE · 0.3 ETH |
| `unlist carnivale 2` · `unlist it` | Unlist Carnivale #2? | Listing: CANCELED |
| `accept the best offer on carnivale 2` · `accept the best offer` | Sell Carnivale #2 for 0.25 ETH? | Offer: ACCEPTED · 0.25 ETH |
| `counter at 0.27 on carnivale 2` | Send a counter at 0.27 ETH? | Counter: SENT · 0.27 ETH |

```show confirm
{ "caption": "Accepting the best offer.", "button": "✶︎ SELL · CARNIVALE #2 · ◊0.25", "question": "Sell Carnivale #2 for 0.25 ETH?", "ok": "Sell", "done": "Offer: ACCEPTED · 0.25 ETH" }
```

## Your offers

`my offers` is the Offers Desk in one card: what you could cash out now, what you have committed, your best single offer, then the offers on your Outputs and the ones you made. Each row opens its Output.

```show stone
{
  "caption": "Your book, in and out. Prices here are examples; a bidder with no PD name shows as a short address.",
  "asks": [
    { "ask": "my offers", "line": "Here.",
      "cards": [{ "title": "YOUR OFFERS", "glyph": "✶",
        "say": "2 ON YOUR OUTPUTS · 1 YOU MADE",
        "tiles": [
          { "size": "wide", "label": "CASH OUT NOW", "big": "◊0.71", "sub": "ACCEPT 2 OFFERS" },
          { "label": "COMMITTED OUT", "big": "◊0.2", "sub": "1 OPEN" },
          { "label": "BEST SINGLE", "big": "◊0.4", "sub": "ARCOLOGY #14" },
          { "size": "wide", "label": "ON YOUR OUTPUTS", "glyph": "2", "rows": [["Arcology #14 · 0x2b7e…9d01", "◊0.4"], ["Carnivale #2 · 0x8f3a…21c4", "◊0.31"]] },
          { "size": "wide", "label": "YOU OFFERED", "glyph": "1", "rows": [["Voltaic #8 · TOP", "◊0.2"]] }
        ] }] }
  ]
}
```

## Sticker cards

Every sticker number is live: on chain the price and print run come from the sticker contract, the same read as the Store's buy button. Nothing shows until it's read. Sheets are sold whole.

```show stone
{
  "caption": "Every sheet, priced, and one sheet in full. Prices are the test app's; counts and market numbers are examples. The sheet card also shows a strip of the sheet's own stickers above its line.",
  "asks": [
    { "ask": "sticker shop", "try": "EVERY SHEET", "line": "Here.",
      "cards": [{ "title": "STICKER EXCHANGE", "glyph": "⊞",
        "say": "17 SHEETS. WHOLE SHEETS ONLY.",
        "rows": [
          ["GENESIS · 30", "◊0.01"], ["PETEY · 24", "◊0.008"], ["ICONS · 28", "◊0.006"], ["FAMILIARS · 100", "◊0.012"],
          ["ANIMATED FAMILIARS · 100", "◊0.026"], ["PROJECTS · 111", "◊0.016"], ["ARTISTS · 53", "◊0.014"], ["PRICESPRITES · 8", "◊0.01"],
          ["ARTIST NAMES · 53", "◊0.006"], ["PROJECT NAMES · 111", "◊0.008"], ["OUTPUTS · 18", "◊0.02"], ["ACHIEVEMENTS · 12", "◊0.012"],
          ["RARITY · 6", "◊0.01"], ["ANIMATED · 5", "◊0.022"], ["QUIPS · 12", "◊0.006"], ["WAR BANNERS · 22", "◊0.006"], ["HOLO · 6", "◊0.024"]
        ],
        "hint": "tap a sheet for its stickers, its market, what you hold" }],
      "foot": "⊞︎ OPEN STICKER EXCHANGE",
      "does": "Opens the Sticker Exchange on top of the page you're on." },
    { "ask": "genesis sheet", "try": "ONE SHEET", "line": "Here.",
      "cards": [{ "title": "GENESIS", "glyph": "⊞", "titleSub": "MYTHIC",
        "say": "30 STICKERS FOR ◊0.01.",
        "tiles": [
          { "label": "FLOOR", "big": "◊0.014", "sub": "3 LISTED" },
          { "label": "BEST OFFER", "big": "◊0.011", "sub": "LAST SALE ◊0.012" },
          { "label": "STILL SEALED", "big": "64%", "sub": "5 WANT ONE" },
          { "label": "YOURS", "big": "12/30", "sub": "+ 1 SEALED" }
        ] }],
      "foot": "⊞︎ BUY GENESIS · ◊0.01",
      "does": "Opens the Sticker Exchange on the Genesis sheet, where its buy button is." }
  ]
}
```

| Type | Get |
|---|---|
| `sticker shop` · `buy stickers` · `sheets` | Every sheet with its sticker count and price. A sheet that's sold out reads SOLD OUT, one that isn't on sale reads NOT ON SALE |
| `genesis sheet` · `how much is the genesis sheet` | One sheet: the price and copies left, its floor and best offer on the market, how much of it is still sealed, and how many you've found |
| `my stickers` · `my binder` | Every sheet you're working on, found of total with a bar and any sealed copies waiting, then the sheets you haven't started |
| `sticker market` · `sticker floors` | Every sheet's floor, best offer and last sale, the most traded first |

Tap a sheet's row on any of these cards and its own card comes up.

## Keychain cards

```show stone
{
  "caption": "The machine and your odds. The crank price and your luck are examples; the odds are the machine's own.",
  "asks": [
    { "ask": "keychains", "line": "Here.",
      "cards": [{ "title": "KEYCHAINS", "glyph": "⚷", "titleSub": "A FIXED COLLECTION",
        "say": "58,060,800 POSSIBLE CHARMS. ONE CRANK DRAWS ONE.",
        "tiles": [
          { "label": "THE CRANK", "glyph": "⚷", "big": "◊0.01", "sub": "ONE CRANK · ONE CHARM" },
          { "label": "YOUR LUCK", "big": "L1", "sub": "RARE 12% · ULTRA 6%" },
          { "size": "wide", "label": "THE ELEMENTS", "glyph": "TWO SHAPES EACH", "rows": [
            ["AIR", "24%", { "bar": 2 }], ["SPACE", "19%", { "bar": 2 }], ["FIRE", "12%", { "bar": 1 }],
            ["MINERALS", "11%", { "bar": 1 }], ["WATER", "22%", { "bar": 2 }], ["TIME", "12%", { "bar": 1 }]
          ] },
          { "size": "wide", "label": "THE LUCK LADDER", "glyph": "RARE · ULTRA", "rows": [
            ["L0", "11.5% · 3.5%"], ["L1 · YOU", "12% · 6%", { "me": true }], ["L2", "13% · 9%"], ["L3", "14% · 11%"]
          ] },
          { "size": "wide", "label": "YOUR RACK", "big": "3", "sub": "CHARMS · SAY \"MY CHARMS\" FOR THE ANATOMY" }
        ] }],
      "foot": "⚷︎ OPEN LE DÉPANNEUR",
      "does": "Opens Le Dépanneur on top of the page you're on." }
  ]
}
```

| Type | Get |
|---|---|
| `keychains` · `charm odds` · `my luck` | The machine: the crank price, your luck tier and its odds, how the six elements split, and the whole luck ladder |
| `my charms` · `charm #3` | One of your keychains taken apart: every part numbered and named with its real chance, the rarest part, and the odds of that exact build. Tap a part for a closer look; step to your others without the card closing |
| `keychains for sale` · `cheapest keychain` | The keychain market: everything listed, cheapest first, each as KEYCHAIN #n with its price. Tap one for its own card |

Your luck tier, L0 to L3, comes from your streak and your rank; a higher tier raises the chance of a RARE or an ULTRA part. Keychains are always shown by number.

## Further reading

- [The Secondary Market](/docs/for-collectors/the-secondary-market): listing, offers and the Offers Desk, in full
- [Stickers](/docs/stickers/overview) and [Keychains](/docs/keychains/overview): the features themselves
- [The Command Stone](/docs/command-stone): how it opens and how an answer reads
