| json | No | What was served, parsed, where it was JSON and whole. Theirs, not ours, and not stored by us. | |
| meta | No | How current this answer is and what it was read from: `freshness` and the ages behind it. Present on every answer from this server, whatever the tool. | |
| paid | No | Whether an authorisation travelled with this knock. Stated rather than left to be inferred from the outcome. | |
| says | Yes | What happened, in one sentence. On a `rejected` knock it says the seller refused the authorisation AND that this answer does not establish on-chain settlement either way; read `settlementState` for that. | |
| text | No | What was served as text, where it was not JSON or was cut short at 512 KB. | |
| fault | No | `not-evm`, `not-exact`, `no-token-domain` and the rest: why none of the offered terms can be signed. `not-evm` is a real offer on a chain an EVM wallet cannot sign for, which differs from a malformed one. | |
| offer | No | The first signable leg, which is the SELLER’s preference and not a recommendation of ours. Null where none of the terms can be met. | |
| blocks | No | Present only with `describe: true`. | |
| inputs | No | WHAT THE SELLER SAYS THE CALL TAKES, from their own 402 document (bazaar `info.input` and its schema in v2, `outputSchema.input` in v1): `method`, and `query` / `body` as `{ name, required, description, example }`. `required` is true only where they say so. NULL WHERE THEY DECLARE NOTHING, which is not “it needs nothing”: some sellers need a value they never declare. Theirs and a claim. | |
| accepts | No | EVERY set of terms the seller offered, unchanged, including the ones no browser or EIP-3009 wallet can meet. | |
| knocked | Yes | False where the resource is not in the catalogue we read, which is OUR reach rather than a fault of theirs. Everything below is then absent. | |
| outcome | No | `served` is an answer in hand. `quoting` is 402 with terms we could read and `charging` 402 without. `rejected` is 402 on a knock that CARRIED a payment, which is the seller refusing what you signed and a different fact from the first 402. `refused` is 401 or 403, where payment is not what is being asked for. On `rejected`, `sellerSays` carries their reason in their words, and the answer DOES NOT ESTABLISH THAT NOTHING WAS SPENT: the seller held your authorisation before answering, and a status code does not report what they did with it. | |
| offering | No | What the SELLER says this endpoint is and returns: `name`, `description` and `example`, a specimen answer from their own bazaar extension. Theirs and a claim, not a promise of ours. | |
| resource | Yes | The endpoint, as the CATALOGUE holds it, read back. A scheme you left off is resolved here. | |
| signable | No | The legs an `exact` EVM wallet can sign, in the seller’s own order, each flattened to what signing needs. `amountRaw` is a STRING in the asset’s smallest unit; `approxUsd` is present ONLY where the seller’s own catalogue entry publishes both figures for the SAME token, since nothing in a payment-requirements document names a token’s decimals. `terms` is their entry VERBATIM, to echo back as `accepted`. A real offer has several (agent402.tools publishes nine), and WHICH ONE TO PAY ON IS YOURS TO CHOOSE because the chain is inside the signed message and a signature made on a chain you hold nothing on is valid and fails at the transfer. | |
| warnings | No | Anything the server wants a caller to know about THIS answer before acting on it. Empty is the normal case and is not a guarantee. | |
| faultSays | No | The same thing in a sentence. | |
| latencyMs | No | How long it took US, which is a fact about this request as much as about the host. | |
| truncated | No | TRUE where the answer was cut at 512 KB, and then `json` is null EVEN IF the cut happens to parse: half a list read as a whole one is a figure nobody could stand behind. | |
| httpStatus | No | What the host answered, unchanged. | |
| sellerSays | No | Why the seller refused, IN THEIR WORDS, lifted from their 402 document. Null where they gave none, which is said rather than filled in. | |
| settlement | No | The seller’s settlement receipt, verbatim. THEIR claim that the authorisation reached a chain, carried as theirs and never restated as a reading of ours. A served answer means the seller accepted the authorisation, not that money settled: somebody still has to submit it on chain, and this is the seller saying so rather than us. | |
| askedWithQuery | No | The query parameters we added, read back. Null where you sent none. | |
| settlementState | No | WHAT THIS ANSWER ESTABLISHES ABOUT THE MONEY, which is less than the status code suggests. `none-presented`: no authorisation was handed over, so there is nothing that could settle. `claimed-by-seller`: they returned a receipt — THEIR claim, carried, never verified by us. `unknown`: an authorisation WAS presented and this answer says nothing about its fate. A 402 or a timeout after a payment reads `unknown`: it does NOT establish that the money is safe. | |
| authorizationState | No | WHAT MAY STILL BE DONE WITH WHAT THE CALLER SIGNED. `none-signed`: nothing was signed, so nothing can be submitted. `presented-may-still-be-usable`: it was handed over and a valid authorisation stays usable until it expires or its nonce is spent — so signing again with a fresh nonce can be a SECOND payment. Check the previous transaction before you do. | |