Skip to content
Browse the docs

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.

FieldTypeRule
direction"BUY" or "SELL"Required. A BUY is a request to purchase; a SELL is a listing of hardware you hold.
asset_type"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_slugstringA 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_modelstringThe GPU model when gpu_slug is "other". Up to 120 characters.
other_memory_gbintegerGPU memory in GB when gpu_slug is "other", 1 to 1024.
other_form_factorstringForm factor when gpu_slug is "other".
interconnectstringFor 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

FieldTypeRule
gpu_countintegerGPUs per node, 1 to 64. Node requests only.
quantityintegerCount of the traded unit: GPUs for bare, nodes for node, racks for rack. 1 to 1000.
grade_minimum"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_is_exactbooleanBUY 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:

FieldRange
psu_watts100 to 12000
cpu_cores_total1 to 2048
system_memory_gb1 to 65536
memory_speed_mts0 to 20000
storage_drive_count1 to 128
nic_count0 to 64. 0 is a firm statement that the node has no network cards.
nic_speed_gbps1 to 3200
storage_capacity_tbPer drive, decimal. Optional detail.
storage_capacity_total_tbTotal 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.

FieldTypeRule
system_modelstringA rack system name from stoa rfq schema. The GPU named by gpu_slug must match that system's part.
power_kwnumberShell detail.
rack_integrationstringShell detail.
storage_capacity_total_tbnumberOn a BUY, a floor on local storage; on a SELL, the declared value.
system_integratorstringOn a BUY, a pin on the integrator; on a SELL, the declared integrator.

A BUY rack request is grade A only.

Terms

FieldTypeRule
quote_deadline_daysintegerHow long dealers have to quote, 3 to 30 days. Default 7.
max_lead_time_daysintegerThe 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_allow_partialbooleanAllow a dealer to fill part of the quantity.
fill_allow_multi_dealerbooleanAllow the quantity to be filled across dealers.
fill_overfill_toleranceintegerUnits above the quantity you would accept.
verification_expectationslist of stringsEvidence you expect before accepting, from the schema's list (for example unit_photos, burn_in_report, proof_of_life). A grade A BUY may ask for photos only. A SELL must offer at least one.
notesstringFree 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.

FieldTypeRule
delivery_locationstringRequired. A US state name or two letter code.
delivery_citystringRequired.
delivery_streetstringOptional. Private.
delivery_site_idstringOptional. The id of a saved delivery site from your organization's settings.
delivery_deadline"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

FieldTypeRule
warranty_min_monthsinteger0 to 120. On a BUY, the shortest warranty you will accept. On a SELL, the warranty you offer.
warranty_backerstringWho stands behind the warranty, from the schema's list. On a BUY it is a floor; on a SELL it is a declaration.
warranty_labor_monthsintegerSELL only. Labor coverage, 0 to 120.
warranty_parts_monthsintegerSELL only. Parts coverage, 0 to 120.
warranty_advance_replacement_monthsintegerSELL 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.

FieldTypeRule
age_monthsintegerMonths in service. Grade A requires 0; grades B and C require a value above 0.
provenance_channelstringHow the hardware was acquired, from the schema's list.
usage_contextstringHow it was used, from the schema's list. Grade A requires the new and unused value.
ship_from_citystringRequired.
ship_from_statestringRequired.
serial_numbersstringOptional. 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.