Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

message list

commandmessage.list
KindPrivate read
NeedsMOSTRO_PUBKEY, RELAYS, an existing identity (read only)
PublishesNothing
Local writeNone: a repeated call returns the same messages
Statusesok, error
Schemasschemas/message.list.input.json, schemas/message.list.output.json

Reads the messages the node sent to your trade keys: “a taker arrived, pay this hold invoice”, “send your invoice”, “the buyer says fiat was sent”, “your order was canceled”… It is the inbox of a trade and the way a program learns what to do next.

Invocation

mostro-cli --output json message list [--since MINUTES] [--order UUID]

Replaces getdm.

Input

OptionRequiredRule
--sincenoWindow in minutes, 1..10080 (7 days). Default 30
--ordernoRead only the key stored with this order (order_unknown if not in the store)

Behavior

Reads the keys of trade indexes 1..last (at most the newest 200), or only the order’s key with --order. Returns only messages authored by the configured node and addressed to those keys, decrypted and summarized, oldest first, at most 200. Peer chat and messages from other authors are not included.

Poll it: there is no push. Typical intervals are 10 to 30 seconds during an active trade. Deduplicate by event_id.

Success data: MessageListData

FieldTypeMeaning
node_pubkeyhex64The node
since_minutesdecimal stringThe window used
messagesarray of MessageRecordOldest first
truncatedbooleanMore than 200 records matched, or a relay hit its per-relay limit: narrow --since or use --order
keys_readdecimal stringKeys read
keys_not_readdecimal stringKeys beyond the newest 200 (see warning trade_keys_limited)

MessageRecord

FieldTypeMeaning
event_idhex64Nostr event id; unique per message, use it to deduplicate
created_atrfc3339 or nullWhen the node sent it
created_at_unixdecimal stringExact seconds
order_iduuid or nullThe order the message is about
request_iddecimal string or nullCorrelation id of the request this answers, if any
actionstringProtocol action, kebab-case: pay-invoice, add-invoice, fiat-sent-ok, canceled… (list)
next_stepenum or nullWhat the node asks you to do (below); null for informational messages
trade_indexdecimal string or nullIndex of the key it was addressed to; null when only known from an order row older than the newest 200 keys
trade_pubkeyhex64The key it was addressed to
payloadMessagePayloadTyped summary of the content (below)

next_step

next_stepFrom actionDo
pay_bond_invoicepay-bond-invoicePay the invoice in the payment_request payload
add_invoiceadd-invoiceorder add-invoice
pay_hold_invoicepay-invoicePay the hold invoice in the payment_request payload
add_bond_invoiceadd-bond-invoicebond add-invoice

Every other action has next_step: null.

MessagePayload

Discriminated by kind:

kindFieldsCarried by (typically)
none—Status notifications (canceled, waiting-seller-to-pay…)
orderorder: OrderRecordnew-order, add-invoice…
payment_requestorder: OrderRecord or null; invoice: string; amount: decimal string or nullpay-invoice, pay-bond-invoice
bond_payout_requestorder: OrderRecord; slashed_at: rfc3339 or null; slashed_at_unix: decimal stringadd-bond-invoice
cant_doreason: reason or nullcant-do
peercounterparty_pubkey: stringfiat-sent-ok
texttext: string (≤ 4096 bytes, untrusted)Text messages from the node
amountamount: decimal stringAmount payloads
othervariant: stringAny other payload, by variant name only (e.g. rating_user)

The invoice in payment_request is meant for the caller (to pay it). Treat text and counterparty_pubkey as untrusted data.

Outcomes

CasestatuscodeSnapshot
Read (even empty)okpresent
Bad option (window out of range)errorinvalid_arguments (exit 2)null
No identity, unreadable store, unknown --ordererroridentity_missing, identity_unreadable, store_unreadable, order_unknownnull
Configuration, connectionerrorconfiguration_*, relay_connection_failednull
Read failederrorrelay_read_failed, read_timeout, read_limit_exceededpresent

All stages are not_applicable.

Errors

invalid_arguments, configuration_missing, configuration_invalid, relay_connection_failed, relay_read_failed, read_timeout, read_limit_exceeded, internal_error, identity_missing, identity_unreadable, order_unknown, store_unreadable.

Warnings

trade_keys_limited, invalid_event_timestamp, cleanup_incomplete.

Examples

Four messages of one trade, oldest first

message.list/messages_of_a_trade · status ok · exit 0 · fixture

mostro-cli --output json message list --since 60
{
  "schema_version": "1",
  "command": "message.list",
  "status": "ok",
  "data": {
    "keys_not_read": "0",
    "keys_read": "3",
    "messages": [
      {
        "action": "pay-bond-invoice",
        "created_at": "2026-10-16T00:01:00Z",
        "created_at_unix": "1792108860",
        "event_id": "0707070707070707070707070707070707070707070707070707070707070707",
        "next_step": "pay_bond_invoice",
        "order_id": "00000000-0000-0000-0000-000000000001",
        "payload": {
          "amount": null,
          "invoice": "lnbcrt1bondinvoice",
          "kind": "payment_request",
          "order": {
            "buyer_trade_pubkey": null,
            "created_at": "2026-10-16T00:00:00Z",
            "created_at_unix": "1792108800",
            "expires_at": "2026-10-17T00:00:00Z",
            "expires_at_unix": "1792195200",
            "fiat_amount": "15",
            "fiat_amount_max": null,
            "fiat_amount_min": null,
            "fiat_currency": "USD",
            "id": "00000000-0000-0000-0000-000000000001",
            "payment_method": "bank transfer",
            "premium_percent": "1",
            "sats_amount": "15000",
            "seller_trade_pubkey": null,
            "side": "sell",
            "status": "pending"
          }
        },
        "request_id": "77",
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5"
      },
      {
        "action": "add-invoice",
        "created_at": "2026-10-16T00:02:00Z",
        "created_at_unix": "1792108920",
        "event_id": "0707070707070707070707070707070707070707070707070707070707070707",
        "next_step": "add_invoice",
        "order_id": "00000000-0000-0000-0000-000000000001",
        "payload": {
          "kind": "order",
          "order": {
            "buyer_trade_pubkey": null,
            "created_at": "2026-10-16T00:00:00Z",
            "created_at_unix": "1792108800",
            "expires_at": "2026-10-17T00:00:00Z",
            "expires_at_unix": "1792195200",
            "fiat_amount": "15",
            "fiat_amount_max": null,
            "fiat_amount_min": null,
            "fiat_currency": "USD",
            "id": "00000000-0000-0000-0000-000000000001",
            "payment_method": "bank transfer",
            "premium_percent": "1",
            "sats_amount": "15000",
            "seller_trade_pubkey": null,
            "side": "sell",
            "status": "waiting-buyer-invoice"
          }
        },
        "request_id": "77",
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5"
      },
      {
        "action": "waiting-seller-to-pay",
        "created_at": "2026-10-16T00:03:00Z",
        "created_at_unix": "1792108980",
        "event_id": "0707070707070707070707070707070707070707070707070707070707070707",
        "next_step": null,
        "order_id": "00000000-0000-0000-0000-000000000001",
        "payload": {
          "kind": "none"
        },
        "request_id": "77",
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5"
      },
      {
        "action": "cant-do",
        "created_at": "2026-10-16T00:04:00Z",
        "created_at_unix": "1792109040",
        "event_id": "0707070707070707070707070707070707070707070707070707070707070707",
        "next_step": null,
        "order_id": null,
        "payload": {
          "kind": "cant_do",
          "reason": "invalid_peer"
        },
        "request_id": "77",
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5"
      }
    ],
    "node_pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
    "since_minutes": "60",
    "truncated": false
  },
  "error": null,
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": {
      "complete_history": false,
      "completed_relays": 2,
      "completion_policy": "all_relays_eose",
      "configured_relays": 2,
      "max_unique_events": 10000,
      "observed_at": "2026-10-16T00:00:00Z",
      "per_relay_limit": 50,
      "received_events": 4,
      "since": "2026-10-09T00:00:00Z",
      "until": null
    }
  }
}

An empty window is a success

message.list/no_messages · status ok · exit 0 · fixture

mostro-cli --output json message list --since 60
{
  "schema_version": "1",
  "command": "message.list",
  "status": "ok",
  "data": {
    "keys_not_read": "0",
    "keys_read": "3",
    "messages": [],
    "node_pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
    "since_minutes": "60",
    "truncated": false
  },
  "error": null,
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": {
      "complete_history": false,
      "completed_relays": 2,
      "completion_policy": "all_relays_eose",
      "configured_relays": 2,
      "max_unique_events": 10000,
      "observed_at": "2026-10-16T00:00:00Z",
      "per_relay_limit": 50,
      "received_events": 0,
      "since": "2026-10-09T00:00:00Z",
      "until": null
    }
  }
}

–order reads only that order’s stored key; trade_index is null when it is not among the newest 200

message.list/one_order · status ok · exit 0 · authored

mostro-cli --output json message list --order 00000000-0000-0000-0000-000000000001
{
  "schema_version": "1",
  "command": "message.list",
  "status": "ok",
  "data": {
    "node_pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
    "since_minutes": "30",
    "truncated": false,
    "keys_read": "1",
    "keys_not_read": "0",
    "messages": [
      {
        "event_id": "0101010101010101010101010101010101010101010101010101010101010101",
        "created_at": "2026-11-02T09:01:00Z",
        "created_at_unix": "1793610060",
        "order_id": "00000000-0000-0000-0000-000000000001",
        "request_id": "77",
        "action": "add-invoice",
        "next_step": "add_invoice",
        "trade_index": null,
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5",
        "payload": {
          "kind": "order",
          "order": {
            "id": "00000000-0000-0000-0000-000000000001",
            "side": "sell",
            "status": "waiting-buyer-invoice",
            "sats_amount": "15000",
            "fiat_currency": "USD",
            "fiat_amount": "15",
            "fiat_amount_min": null,
            "fiat_amount_max": null,
            "payment_method": "bank transfer",
            "premium_percent": "1",
            "buyer_trade_pubkey": null,
            "seller_trade_pubkey": null,
            "created_at": "2026-11-02T09:00:00Z",
            "created_at_unix": "1793610000",
            "expires_at": "2026-11-03T09:00:00Z",
            "expires_at_unix": "1793696400"
          }
        }
      }
    ]
  },
  "error": null,
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": {
      "since": "2026-10-26T10:00:00Z",
      "until": null,
      "observed_at": "2026-11-02T10:00:03Z",
      "per_relay_limit": 50,
      "max_unique_events": 10000,
      "configured_relays": 2,
      "completed_relays": 2,
      "received_events": 1,
      "completion_policy": "all_relays_eose",
      "complete_history": false
    }
  }
}

A tour of the payload kinds: payment_request, peer, other, none, cant_do, bond_payout_request and a new-order to a fresh key

message.list/payload_kinds · status ok · exit 0 · authored

mostro-cli --output json message list --since 1440
{
  "schema_version": "1",
  "command": "message.list",
  "status": "ok",
  "data": {
    "node_pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
    "since_minutes": "1440",
    "truncated": false,
    "keys_read": "4",
    "keys_not_read": "0",
    "messages": [
      {
        "event_id": "0101010101010101010101010101010101010101010101010101010101010101",
        "created_at": "2026-11-02T09:01:00Z",
        "created_at_unix": "1793610060",
        "order_id": "00000000-0000-0000-0000-000000000001",
        "request_id": "77",
        "action": "pay-invoice",
        "next_step": "pay_hold_invoice",
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5",
        "payload": {
          "kind": "payment_request",
          "order": {
            "id": "00000000-0000-0000-0000-000000000001",
            "side": "sell",
            "status": "waiting-payment",
            "sats_amount": "15000",
            "fiat_currency": "USD",
            "fiat_amount": "15",
            "fiat_amount_min": null,
            "fiat_amount_max": null,
            "payment_method": "bank transfer",
            "premium_percent": "1",
            "buyer_trade_pubkey": null,
            "seller_trade_pubkey": null,
            "created_at": "2026-11-02T09:00:00Z",
            "created_at_unix": "1793610000",
            "expires_at": "2026-11-03T09:00:00Z",
            "expires_at_unix": "1793696400"
          },
          "invoice": "lnbcrt150u1pholdinvoice",
          "amount": "15000"
        }
      },
      {
        "event_id": "0404040404040404040404040404040404040404040404040404040404040404",
        "created_at": "2026-11-02T09:12:00Z",
        "created_at_unix": "1793610720",
        "order_id": "00000000-0000-0000-0000-000000000001",
        "request_id": null,
        "action": "fiat-sent-ok",
        "next_step": null,
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5",
        "payload": {
          "kind": "peer",
          "counterparty_pubkey": "e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13"
        }
      },
      {
        "event_id": "0505050505050505050505050505050505050505050505050505050505050505",
        "created_at": "2026-11-02T09:15:00Z",
        "created_at_unix": "1793610900",
        "order_id": "00000000-0000-0000-0000-000000000001",
        "request_id": null,
        "action": "rate-received",
        "next_step": null,
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5",
        "payload": {
          "kind": "other",
          "variant": "rating_user"
        }
      },
      {
        "event_id": "0606060606060606060606060606060606060606060606060606060606060606",
        "created_at": "2026-11-02T09:20:00Z",
        "created_at_unix": "1793611200",
        "order_id": "00000000-0000-0000-0000-000000000002",
        "request_id": "78",
        "action": "canceled",
        "next_step": null,
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5",
        "payload": {
          "kind": "none"
        }
      },
      {
        "event_id": "0707070707070707070707070707070707070707070707070707070707070707",
        "created_at": "2026-11-02T09:22:00Z",
        "created_at_unix": "1793611320",
        "order_id": null,
        "request_id": "79",
        "action": "cant-do",
        "next_step": null,
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5",
        "payload": {
          "kind": "cant_do",
          "reason": null
        }
      },
      {
        "event_id": "0808080808080808080808080808080808080808080808080808080808080808",
        "created_at": "2026-11-02T09:30:00Z",
        "created_at_unix": "1793611800",
        "order_id": "00000000-0000-0000-0000-000000000005",
        "request_id": null,
        "action": "add-bond-invoice",
        "next_step": "add_bond_invoice",
        "trade_index": "2",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5",
        "payload": {
          "kind": "bond_payout_request",
          "order": {
            "id": "00000000-0000-0000-0000-000000000005",
            "side": "buy",
            "status": "canceled",
            "sats_amount": "20000",
            "fiat_currency": "USD",
            "fiat_amount": "20",
            "fiat_amount_min": null,
            "fiat_amount_max": null,
            "payment_method": "bank transfer",
            "premium_percent": "1",
            "buyer_trade_pubkey": null,
            "seller_trade_pubkey": null,
            "created_at": "2026-11-02T09:00:00Z",
            "created_at_unix": "1793610000",
            "expires_at": "2026-11-03T09:00:00Z",
            "expires_at_unix": "1793696400"
          },
          "slashed_at": "2026-11-02T09:29:00Z",
          "slashed_at_unix": "1793611740"
        }
      },
      {
        "event_id": "0909090909090909090909090909090909090909090909090909090909090909",
        "created_at": "2026-11-02T09:40:00Z",
        "created_at_unix": "1793612400",
        "order_id": "00000000-0000-0000-0000-000000000006",
        "request_id": "80",
        "action": "new-order",
        "next_step": null,
        "trade_index": "4",
        "trade_pubkey": "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9",
        "payload": {
          "kind": "order",
          "order": {
            "id": "00000000-0000-0000-0000-000000000006",
            "side": "sell",
            "status": "pending",
            "sats_amount": "0",
            "fiat_currency": "USD",
            "fiat_amount": "0",
            "fiat_amount_min": "10",
            "fiat_amount_max": "50",
            "payment_method": "bank transfer",
            "premium_percent": "1",
            "buyer_trade_pubkey": null,
            "seller_trade_pubkey": null,
            "created_at": "2026-11-02T09:00:00Z",
            "created_at_unix": "1793610000",
            "expires_at": "2026-11-03T09:00:00Z",
            "expires_at_unix": "1793696400"
          }
        }
      }
    ]
  },
  "error": null,
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": {
      "since": "2026-10-26T10:00:00Z",
      "until": null,
      "observed_at": "2026-11-02T10:00:02Z",
      "per_relay_limit": 50,
      "max_unique_events": 10000,
      "configured_relays": 2,
      "completed_relays": 2,
      "received_events": 7,
      "completion_policy": "all_relays_eose",
      "complete_history": false
    }
  }
}

More keys and messages than were read: truncated with a warning

message.list/truncated_and_keys_limited · status ok · exit 0 · fixture

mostro-cli --output json message list --since 60
{
  "schema_version": "1",
  "command": "message.list",
  "status": "ok",
  "data": {
    "keys_not_read": "50",
    "keys_read": "200",
    "messages": [
      {
        "action": "pay-bond-invoice",
        "created_at": "2026-10-16T00:01:00Z",
        "created_at_unix": "1792108860",
        "event_id": "0707070707070707070707070707070707070707070707070707070707070707",
        "next_step": "pay_bond_invoice",
        "order_id": "00000000-0000-0000-0000-000000000001",
        "payload": {
          "amount": null,
          "invoice": "lnbcrt1bondinvoice",
          "kind": "payment_request",
          "order": {
            "buyer_trade_pubkey": null,
            "created_at": "2026-10-16T00:00:00Z",
            "created_at_unix": "1792108800",
            "expires_at": "2026-10-17T00:00:00Z",
            "expires_at_unix": "1792195200",
            "fiat_amount": "15",
            "fiat_amount_max": null,
            "fiat_amount_min": null,
            "fiat_currency": "USD",
            "id": "00000000-0000-0000-0000-000000000001",
            "payment_method": "bank transfer",
            "premium_percent": "1",
            "sats_amount": "15000",
            "seller_trade_pubkey": null,
            "side": "sell",
            "status": "pending"
          }
        },
        "request_id": "77",
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5"
      },
      {
        "action": "add-invoice",
        "created_at": "2026-10-16T00:02:00Z",
        "created_at_unix": "1792108920",
        "event_id": "0707070707070707070707070707070707070707070707070707070707070707",
        "next_step": "add_invoice",
        "order_id": "00000000-0000-0000-0000-000000000001",
        "payload": {
          "kind": "order",
          "order": {
            "buyer_trade_pubkey": null,
            "created_at": "2026-10-16T00:00:00Z",
            "created_at_unix": "1792108800",
            "expires_at": "2026-10-17T00:00:00Z",
            "expires_at_unix": "1792195200",
            "fiat_amount": "15",
            "fiat_amount_max": null,
            "fiat_amount_min": null,
            "fiat_currency": "USD",
            "id": "00000000-0000-0000-0000-000000000001",
            "payment_method": "bank transfer",
            "premium_percent": "1",
            "sats_amount": "15000",
            "seller_trade_pubkey": null,
            "side": "sell",
            "status": "waiting-buyer-invoice"
          }
        },
        "request_id": "77",
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5"
      },
      {
        "action": "waiting-seller-to-pay",
        "created_at": "2026-10-16T00:03:00Z",
        "created_at_unix": "1792108980",
        "event_id": "0707070707070707070707070707070707070707070707070707070707070707",
        "next_step": null,
        "order_id": "00000000-0000-0000-0000-000000000001",
        "payload": {
          "kind": "none"
        },
        "request_id": "77",
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5"
      },
      {
        "action": "cant-do",
        "created_at": "2026-10-16T00:04:00Z",
        "created_at_unix": "1792109040",
        "event_id": "0707070707070707070707070707070707070707070707070707070707070707",
        "next_step": null,
        "order_id": null,
        "payload": {
          "kind": "cant_do",
          "reason": "invalid_peer"
        },
        "request_id": "77",
        "trade_index": "3",
        "trade_pubkey": "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5"
      }
    ],
    "node_pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
    "since_minutes": "60",
    "truncated": true
  },
  "error": null,
  "warnings": [
    {
      "code": "trade_keys_limited",
      "message": "Trade keys older than the newest 200 were not read."
    }
  ],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": {
      "complete_history": false,
      "completed_relays": 2,
      "completion_policy": "all_relays_eose",
      "configured_relays": 2,
      "max_unique_events": 10000,
      "observed_at": "2026-10-16T00:00:00Z",
      "per_relay_limit": 50,
      "received_events": 50,
      "since": "2026-10-09T00:00:00Z",
      "until": null
    }
  }
}

No local identity

message.list/identity_missing · status error · identity_missing · exit 1 · fixture

mostro-cli --output json message list
{
  "schema_version": "1",
  "command": "message.list",
  "status": "error",
  "data": null,
  "error": {
    "code": "identity_missing",
    "message": "No local identity exists."
  },
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": null
  }
}

The database holds no valid mnemonic

message.list/identity_unreadable · status error · identity_unreadable · exit 1 · authored

mostro-cli --output json message list
{
  "schema_version": "1",
  "command": "message.list",
  "status": "error",
  "data": null,
  "error": {
    "code": "identity_unreadable",
    "message": "The local identity store cannot be read."
  },
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": null
  }
}

–order names an order the store does not know

message.list/order_unknown · status error · order_unknown · exit 1 · fixture

mostro-cli --output json message list --order 00000000-0000-0000-0000-000000000009
{
  "schema_version": "1",
  "command": "message.list",
  "status": "error",
  "data": null,
  "error": {
    "code": "order_unknown",
    "message": "No local order has this id, so nothing was sent."
  },
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": null
  }
}

The relays did not finish in time

message.list/read_timeout · status error · read_timeout · exit 1 · fixture

mostro-cli --output json message list
{
  "schema_version": "1",
  "command": "message.list",
  "status": "error",
  "data": null,
  "error": {
    "code": "read_timeout",
    "message": "The public order read did not complete before its deadline."
  },
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": {
      "complete_history": false,
      "completed_relays": 0,
      "completion_policy": "all_relays_eose",
      "configured_relays": 2,
      "max_unique_events": 10000,
      "observed_at": "2026-10-16T00:00:00Z",
      "per_relay_limit": 50,
      "received_events": 0,
      "since": "2026-10-09T00:00:00Z",
      "until": null
    }
  }
}

No relay could be connected

message.list/relay_connection_failed · status error · relay_connection_failed · exit 1 · fixture

mostro-cli --output json message list
{
  "schema_version": "1",
  "command": "message.list",
  "status": "error",
  "data": null,
  "error": {
    "code": "relay_connection_failed",
    "message": "A configured relay could not be connected."
  },
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": null
  }
}

The local database cannot be read

message.list/store_unreadable · status error · store_unreadable · exit 1 · fixture

mostro-cli --output json message list
{
  "schema_version": "1",
  "command": "message.list",
  "status": "error",
  "data": null,
  "error": {
    "code": "store_unreadable",
    "message": "The local store cannot be read."
  },
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": null
  }
}

The removed getdm spelling

message.list/removed_getdm · status error · invalid_arguments · exit 2 · fixture

mostro-cli --output json getdm
{
  "schema_version": "1",
  "command": null,
  "status": "error",
  "data": null,
  "error": {
    "code": "invalid_arguments",
    "message": "The command arguments are invalid."
  },
  "warnings": [],
  "meta": {
    "publication": "not_attempted",
    "daemon_acceptance": "unknown",
    "persistence": "not_attempted",
    "snapshot": null
  }
}

–since above 10080 minutes

message.list/window_out_of_range · status error · invalid_arguments · exit 2 · fixture

mostro-cli --output json message list --since 20000
{
  "schema_version": "1",
  "command": "message.list",
  "status": "error",
  "data": null,
  "error": {
    "code": "invalid_arguments",
    "message": "The command arguments are invalid."
  },
  "warnings": [],
  "meta": {
    "publication": "not_applicable",
    "daemon_acceptance": "not_applicable",
    "persistence": "not_applicable",
    "snapshot": null
  }
}

Next

Drive a trade from the messages: Trade flows.