request messages contain everything a maker needs to price, size, sign, and return a quote.
Request fields
rfq_id is taker-scoped. Use (request_address, rfq_id) as the settlement correlation key; do not invent it locally and do not use client_id in its place.
How to interpret direction
The direction is always from the taker’s perspective.
For a taker long, lower maker quote prices are more competitive. For a taker short, higher maker quote prices are more competitive.
Pricing inputs
A production maker usually prices from:- Current mark price and external reference venues
- Market tick size and quantity step
- Request
quantityandmargin - Taker
worst_price - Inventory skew
- Funding carry
- Hedge cost
- Available USDC margin
- Quote expiry budget
worst_price is already human-scale, for example "14.85". Do not treat it as a 1e18-scaled integer.
Partial fills
Your quote does not have to match the taker’s full requested margin or quantity. You may quote a smallermaker_quantity / maker_margin if you only want to fill part of the request.
If you set min_fill_quantity, the contract will not fill that quote below your minimum. Sign absent min_fill_quantity as "0" through the helper path; never use an empty string in the signed digest.
Next step
After receiving a request:- Decide whether to quote.
- Canonicalize all decimal strings.
- Sign the quote with EIP-712 v2.
- Send it with
sign_mode: "v2"andevm_chain_id.

