transport
A transport is the carrier a protocol's messages travel on. x402 defines its payment fields once and then specifies separately how they are carried, so the same protocol can look materially different depending on the channel a client meets it through.
The core specification keeps the two apart. It states that the transport defines where the payment object is carried, and that for HTTP the canonical wire location is the base64-encoded PAYMENT-REQUIRED response header. Transport-specific implementations are excluded from the core document and live in their own.
The specification directory carries one document per transport — http.md, mcp.md and a2a.md sit together under transports-v2/ — beside a retained transports-v1/ and a specification file for each version of the protocol. Both version trees describe behaviour that exists. The earlier HTTP transport put the quote in a JSON response body and carried the signed authorization in an X-PAYMENT header, and endpoints built that way still answer that way.
This is why two accurate descriptions of x402 can disagree completely about where to look. It also decides what a checker can see at all. A client meeting the protocol over the HTTP transport receives an HTTP 402 response, which an outside observer can read. The same protocol over another transport exchanges no such response.
→ probe402 probes the HTTP transport, and what it sends and reads at each check is set out in the method.
Sources
- The x402 specification (v2)x402 Foundation
- The specification directoryx402 Foundation
- The transport specifications directoryx402 Foundation
- Transports: the HTTP transport (v1)x402 Foundation
Related PAYMENT-REQUIRED header · HTTP 402 · accepts array · x402 · MCP