Request file
A request for quote is described in a TOML file. stoa rfq template --direction BUY or --direction SELL prints a commented file to start from, and stoa rfq create -f <file> --dry-run validates it against the venue without sending anything. The field names are the same names the web form posts, so a request opened from the terminal is the same document a request opened in the browser would be.
Example
A buy request for four eight GPU nodes:
# Stoa Markets request for quote (BUY).
direction = "BUY"
asset_type = "node" # bare, node, or rack
gpu_slug = "h100-sxm5" # catalog slug, or "other"
gpu_count = 8 # GPUs per node
quantity = 4 # nodes
grade_minimum = "A" # A, B, or C
grade_is_exact = false
# Node configuration. Minimums unless pinned in exact_axes.
cpu_model = "Intel Xeon Platinum 8480+"
cpu_sockets = 2
cpu_cores_total = 112
system_memory_gb = 2048
storage_capacity_total_tb = 30
nic_count = 8
nic_speed_gbps = 400
exact_axes = ["system_memory_gb"]
# Terms
max_lead_time_days = 84
quote_deadline_days = 7
warranty_min_months = 12
verification_expectations = ["unit_photos"]
# Delivery (BUY only; United States)
delivery_location = "California"
delivery_city = "San Jose"
delivery_street = "1 Example Way" # dealers see the state only
delivery_deadline = "2026-12-15"
notes = ""
Identity
What is being bought or sold. The venue is the authority on allowed values and bounds: stoa rfq schema prints them live, and each table below names the field, what it is for, and the rule that applies. Leave a field out when you have no requirement for it. The venue never guesses a value you did not state.
| Field | Type | Rule |
|---|---|---|
direction | "BUY" or "SELL" | Required. A BUY is a request to purchase; a SELL is a listing of hardware you hold. |
asset_ | "bare", "node", "rack" | Default "node". Bare is loose GPUs, node is a server built around GPUs, rack is a named rack system. Rack requests name a system from the venue's rack registry. stoa rfq schema lists the systems. |
gpu_ | string | A catalog slug from stoa assets search, or "other" for a part the catalog does not list. Bare and rack requests must name a listed part. |
other_ | string | The GPU model when gpu_ is "other". Up to 120 characters. |
other_ | integer | GPU memory in GB when gpu_ is "other", 1 to 1024. |
other_ | string | Form factor when gpu_ is "other". |
interconnect | string | For a node built on a listed part that offers a choice, the interconnect in the catalog's spelling. Leave out for the part's default. A SELL listing must state it when the part offers a choice. |
Sizing
| Field | Type | Rule |
|---|---|---|
gpu_ | integer | GPUs per node, 1 to 64. Node requests only. |
quantity | integer | Count of the traded unit: GPUs for bare, nodes for node, racks for rack. 1 to 1000. |
grade_ | "A", "B", "C" | Required. A is new and sealed, B refurbished or like new, C used and tested working. On a BUY it is a floor; on a SELL it is the declared condition. |
grade_ | boolean | BUY only. true when you want exactly that grade and dealers may not quote a better one. |
The priced unit and price basis (per GPU, per node, per rack) follow from asset_type. They are never typed.
Node configuration
Node requests can state the server configuration. Identity fields are firm: a dealer cannot quote a different value. Capacity fields are minimums on a BUY, and the dealer may quote more, unless you list the field in exact_axes, which pins it. On a SELL every stated value is the declaration of the unit you hold, and a node listing must state the full configuration the venue requires (the schema lists the required keys under node_sell_manifest).
Firm identity fields (strings, up to 200 characters): cooling, cpu_model, memory_type, storage_type, nic_model, compute_fabric, storage_fabric, dpu, frontend_ethernet, optics_included, software_included, psu_efficiency, bmc, chassis_oem, model_number. Several take a closed set of values; stoa rfq schema lists them.
Firm integer fields: form_factor_u (1 to 20), cpu_sockets (1 to 8), psu_count (1 to 12).
Capacity fields, minimums unless pinned:
| Field | Range |
|---|---|
psu_ | 100 to 12000 |
cpu_ | 1 to 2048 |
system_ | 1 to 65536 |
memory_ | 0 to 20000 |
storage_ | 1 to 128 |
nic_ | 0 to 64. 0 is a firm statement that the node has no network cards. |
nic_ | 1 to 3200 |
storage_ | Per drive, decimal. Optional detail. |
storage_ | Total local storage, decimal. |
exact_axes lists the capacity fields whose values are exact. Example: ["system_memory_gb", "nic_speed_gbps"].
Rack
Rack requests name a rack system from the venue's registry and may add shell details.
| Field | Type | Rule |
|---|---|---|
system_ | string | A rack system name from stoa rfq schema. The GPU named by gpu_ must match that system's part. |
power_ | number | Shell detail. |
rack_ | string | Shell detail. |
storage_ | number | On a BUY, a floor on local storage; on a SELL, the declared value. |
system_ | string | On a BUY, a pin on the integrator; on a SELL, the declared integrator. |
A BUY rack request is grade A only.
Terms
| Field | Type | Rule |
|---|---|---|
quote_ | integer | How long dealers have to quote, 3 to 30 days. Default 7. |
max_ | integer | The longest lead time you will accept, counted from execution. Up to 364 days on a BUY, up to 182 on a SELL, where it is the seller's own lead time and is required. |
fill_ | boolean | Allow a dealer to fill part of the quantity. |
fill_ | boolean | Allow the quantity to be filled across dealers. |
fill_ | integer | Units above the quantity you would accept. |
verification_ | list of strings | Evidence you expect before accepting, from the schema's list (for example unit_, burn_, proof_). A grade A BUY may ask for photos only. A SELL must offer at least one. |
notes | string | Free text for dealers, up to 500 characters. Contact details in notes are flagged by the dry run. |
The dry run reports how the fill policy applies to the request.
Delivery
BUY requests deliver within the United States and must state where. Dealers see the state; the city and street are recorded for delivery and settlement and are not shown to a counterparty before award.
| Field | Type | Rule |
|---|---|---|
delivery_ | string | Required. A US state name or two letter code. |
delivery_ | string | Required. |
delivery_ | string | Optional. Private. |
delivery_ | string | Optional. The id of a saved delivery site from your organization's settings. |
delivery_ | "YYYY-MM-DD" | Optional. The date you need the hardware by, today or later and within two years. |
SELL listings carry no delivery block; the seller states where the hardware ships from instead (below).
Warranty
| Field | Type | Rule |
|---|---|---|
warranty_ | integer | 0 to 120. On a BUY, the shortest warranty you will accept. On a SELL, the warranty you offer. |
warranty_ | string | Who stands behind the warranty, from the schema's list. On a BUY it is a floor; on a SELL it is a declaration. |
warranty_ | integer | SELL only. Labor coverage, 0 to 120. |
warranty_ | integer | SELL only. Parts coverage, 0 to 120. |
warranty_ | integer | SELL only. Advance replacement coverage, 0 to 120. |
SELL declaration
A listing states the condition of the hardware you hold. These fields are read on a SELL and ignored on a BUY.
| Field | Type | Rule |
|---|---|---|
age_ | integer | Months in service. Grade A requires 0; grades B and C require a value above 0. |
provenance_ | string | How the hardware was acquired, from the schema's list. |
usage_ | string | How it was used, from the schema's list. Grade A requires the new and unused value. |
ship_ | string | Required. |
ship_ | string | Required. |
serial_ | string | Optional. One per line, up to 8000 characters. |
Supporting documents for a listing are attached in the web application; the request file carries none.
Fields the client sets for you
idempotency_key is generated for every create and printed in the summary. Pass it back with --idempotency-key to repeat a create safely. binding_ack is sent only after you agree to the binding statement, by typing yes at the confirmation or by passing --agree-binding-statement. The priced unit, the price basis and the destination country are derived by the venue.