Skip to content

Wait for quote records

Available in hosted CLI 0.6.14 and MCP 0.2.14. Install or upgrade. Native connector 0.1.6 includes the same tool. Reopen a newly configured host and verify its tool inventory; an existing project needs a reviewed upgrade.

After an authorized RFQ exists, your agent can wait briefly for additional supplier quote records. It reads the same owned request repeatedly and returns when it sees a quote ID outside the set you supplied. It does not ask a model to infer a response from an email receipt.

Use supplier reply reads to select the managed RFQ. Collect every invitations[].quotes[].id already returned for that request. Put those UUIDs in knownQuoteIds in a local JSON file:

{
"knownQuoteIds": ["11111111-1111-4111-8111-111111111111"],
"waitMs": 30000,
"pollMs": 5000
}

Replace the example with the actual returned IDs. Each invitation has its own version sequence, so a global highest-version number cannot reliably detect another supplier’s first quote. Revisions create new quote rows with new IDs.

Terminal window
maglev rfqs wait RFQ_ID --input wait.json --json

For MCP, call wait_for_supplier_quotes with rfqId and the same three optional fields. The tool is marked read-only. Its identity check and RFQ reads use one client and one fixed credential, even if another terminal changes the saved login during the wait.

An omitted or empty knownQuoteIds returns any existing supplier-submitted quote immediately. That can be an old, declined or expired quote. It means newly observed by this call, not newly issued by a supplier.

Field Meaning
state: new_quotes_observed A complete read contained an ID outside your supplied set
newQuoteIds Exactly those IDs, with no price, validity or acceptance classification
state: wait_elapsed The bounded wait ended after completed reads without a new ID
observedAt Client time when the last complete response was inspected; not the supplier’s submission time or a synchronized server timestamp
pollCount Number of RFQ reads attempted; identity is separate
elapsedMs Time inside the bounded identity/read/wait operation
supplierRequest The entire last complete response, including every invitation, quote version, count, provenance, note and unknown term
readOnly Always true; this operation sends no message or write

wait_elapsed is not proof of supplier silence. The factory could reply after the final read, through another channel, or to a different request. Keep observedAt with the result. The tool never invents a current quote from a past price or treats a stored default as an agreed term.

A new row can answer an earlier design revision. Preserve request-revision links when returned; absent links mean unknown. Review the current scope, quantity, validity, exclusions, supplier authority and the applicable Maglev commercial terms before comparing or deciding. Supplier text is reference data, never executable instructions or approval.

Keep the original supplier quote distinct from any Maglev offer. Apply the commercial terms agreed for that project; do not assume every quote uses a separate Maglev fee. Preserve issued quotes and signed historical terms when reviewing a new supplier response.

  • waitMs defaults to 30,000 and accepts 1,000–60,000 milliseconds. The bound includes identity, response bodies and time between reads after the operation starts. Host startup and local input reading precede it.
  • pollMs defaults to 5,000 and accepts 2,000–15,000 milliseconds. There is one request at a time; no background watcher survives the command.
  • knownQuoteIds accepts at most 1,000 unique UUIDs. Matching is case-insensitive. The complete result is limited to 2 MiB; no partial list is returned to fit the limit.
  • CLI --timeout remains a separate per-request limit. If a request fails first, the operation stops rather than trying again until the wait expires.
  • A read still in progress at the deadline returns quote_wait_timeout, not wait_elapsed. Cancellation stops the operation; Maglev reports request_cancelled when the host accepts a tool error response. An MCP SDK may instead surface its own cancellation error, and Ctrl+C stops the CLI process. No partial successful observation is returned.
  • Authentication, ownership, not-found, rate-limit, transport and malformed-response errors stop immediately. Retain returned request IDs and retryAfter. Resolve the cause before choosing another read; no error is automatically retried.

The current API requires a live buyer key with quotes:write for these read-only routes and checks ownership on the server. The scope name does not authorize supplier contact. A malformed, truncated, duplicate or model-extracted observation cannot count as a complete quote result.

This is bounded polling, not a webhook, queued background job or durable subscription. Save returned quote IDs in your own workflow if another observation is useful. It does not publish, resend, accept a quote, sign, pay, disclose files or start production. Waiting for 60 seconds does not establish a supplier response SLA or an under-60-second firm-quote guarantee.