message list
command | message.list |
| Kind | Private read |
| Needs | MOSTRO_PUBKEY, RELAYS, an existing identity (read only) |
| Publishes | Nothing |
| Local write | None: a repeated call returns the same messages |
| Statuses | ok, error |
| Schemas | schemas/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
| Option | Required | Rule |
|---|---|---|
--since | no | Window in minutes, 1..10080 (7 days). Default 30 |
--order | no | Read 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
| Field | Type | Meaning |
|---|---|---|
node_pubkey | hex64 | The node |
since_minutes | decimal string | The window used |
messages | array of MessageRecord | Oldest first |
truncated | boolean | More than 200 records matched, or a relay hit its per-relay limit: narrow --since or use --order |
keys_read | decimal string | Keys read |
keys_not_read | decimal string | Keys beyond the newest 200 (see warning trade_keys_limited) |
MessageRecord
| Field | Type | Meaning |
|---|---|---|
event_id | hex64 | Nostr event id; unique per message, use it to deduplicate |
created_at | rfc3339 or null | When the node sent it |
created_at_unix | decimal string | Exact seconds |
order_id | uuid or null | The order the message is about |
request_id | decimal string or null | Correlation id of the request this answers, if any |
action | string | Protocol action, kebab-case: pay-invoice, add-invoice, fiat-sent-ok, canceled… (list) |
next_step | enum or null | What the node asks you to do (below); null for informational messages |
trade_index | decimal string or null | Index of the key it was addressed to; null when only known from an order row older than the newest 200 keys |
trade_pubkey | hex64 | The key it was addressed to |
payload | MessagePayload | Typed summary of the content (below) |
next_step
next_step | From action | Do |
|---|---|---|
pay_bond_invoice | pay-bond-invoice | Pay the invoice in the payment_request payload |
add_invoice | add-invoice | order add-invoice |
pay_hold_invoice | pay-invoice | Pay the hold invoice in the payment_request payload |
add_bond_invoice | add-bond-invoice | bond add-invoice |
Every other action has next_step: null.
MessagePayload
Discriminated by kind:
kind | Fields | Carried by (typically) |
|---|---|---|
none | — | Status notifications (canceled, waiting-seller-to-pay…) |
order | order: OrderRecord | new-order, add-invoice… |
payment_request | order: OrderRecord or null; invoice: string; amount: decimal string or null | pay-invoice, pay-bond-invoice |
bond_payout_request | order: OrderRecord; slashed_at: rfc3339 or null; slashed_at_unix: decimal string | add-bond-invoice |
cant_do | reason: reason or null | cant-do |
peer | counterparty_pubkey: string | fiat-sent-ok |
text | text: string (≤ 4096 bytes, untrusted) | Text messages from the node |
amount | amount: decimal string | Amount payloads |
other | variant: string | Any 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
| Case | status | code | Snapshot |
|---|---|---|---|
| Read (even empty) | ok | present | |
| Bad option (window out of range) | error | invalid_arguments (exit 2) | null |
No identity, unreadable store, unknown --order | error | identity_missing, identity_unreadable, store_unreadable, order_unknown | null |
| Configuration, connection | error | configuration_*, relay_connection_failed | null |
| Read failed | error | relay_read_failed, read_timeout, read_limit_exceeded | present |
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.