# METHOD — x402 Payable Endpoints Probe (Base + Ethereum, 2026-10-11)

Companion to `dataset.csv`, `dataset.jsonld`, and the raw JSON at
`https://onchainagentintel.io/data/x402-payable-endpoints-2026-10-11.json`.
Documents what was probed, how it was measured, and what the recorded
fields mean.

## What this measures

For every advertised endpoint on an ERC-8004 agent at probe time, whether
the endpoint answered a single unauthenticated request with a parseable
x402 402 challenge. One row per advertised endpoint; multiple endpoints
on one agent each contribute a row.

## Source

- Method: one unauthenticated HTTP request to each advertised endpoint, with no payment and no retries, then a check of whether the reply is a parseable x402 402 challenge (described in words below and in the dataset page).
- Companion write-up: the
  [x402 agent payment interop field test](https://onchainagentintel.io/blog/x402-agent-payment-interop-field-test)
  blog post that this dataset backs.
- Chains probed: Base (`chain_id` 8453) and Ethereum mainnet (`chain_id` 1).
  Other chains are measured in `data/census/` and are out of scope.

## Probe window and shape

- `probed_at`: `2026-10-11T21:21:54Z` (single UTC instant for all rows).
- Method, verbatim from the source JSON: *One unauthenticated request per
  advertised endpoint; scored valid when HTTP 402 returned with a parseable,
  non-empty `accepts[]` block.*
- This is an **observational, one-shot probe**. No authentication. No
  payment. No retries. No state mutation. The endpoint is given exactly
  one opportunity to answer the phone at the probe instant; nothing more.

## Inclusion rule

An advertised endpoint lands in `dataset.csv` only when all three hold at
the probe instant:

1. The endpoint returned HTTP 402.
2. The 402 body parsed to a non-empty `accepts[]` block.
3. The `accepts[]` block carried at least one entry with a `payTo` and a
   parseable price.

The headline counts therefore refer to the valid-402 set only:

| Metric | Value |
|---|---|
| Endpoints with a valid 402 (total) | **270** |
| Distinct agents with ≥1 valid-402 endpoint | **58** |
| Endpoints on Base | **261** |
| Endpoints on Ethereum | **9** |
| Agents on Base | **55** |
| Agents on Ethereum | **3** |

## Field semantics

- `price_usd` is the price **advertised in the probed agent's `accepts[]`
  block at the probe instant** (2026-10-11T21:21:54Z). It is NOT a current
  price, NOT a published Agent Zero price, and NOT a price we charged or
  paid. If the agent later changes its `accepts[]`, that change is not
  reflected here.
- `network` and `asset` are strings reported by the probed agent in its
  `accepts[]` entry — captured verbatim; no normalisation.
- `http_402_ok` is `true` only when the endpoint satisfies the inclusion
  rule above.
- `payTo_present` indicates the parsed `accepts[]` entry carried a
  non-empty `payTo` (or equivalent `address`) field.
- `sibling_agent_ids` (raw JSON only — omitted from `dataset.csv`) lists
  other agent IDs that advertise the same `endpoint_url` at probe time.
  It may be an empty list and often is.

## What this is NOT

- **Not an endorsement, score, or ranking.** The agent answered a 402
  challenge once; nothing more.
- **Not a liveness guarantee.** We only measured the one-shot probe; we
  did not re-probe for timeouts, DNS, or TLS edge cases. An endpoint that
  returns a valid 402 at `probed_at` may be offline today.
- **Not a payment outcome.** This probe never paid; it did not verify
  that a settled EIP-3009 transfer would be honoured by the agent. The
  pilot evidence that actually paid-and-measured delivery lives in the
  companion [payability funnel](https://onchainagentintel.io/data/payability-funnel-2026-10-13/)
  dataset.
- **Not a methodology change.** No agent is scored, ranked, or
  bucketed by this dataset. Readiness / Trust scoring and the published
  methodology are unchanged.

## Reproducing a probe row

Given an endpoint URL and probe timestamp, you can reproduce the inclusion
decision by issuing one unauthenticated HTTP GET (or the method the agent
advertises) and checking that:

1. The response status is 402.
2. The body JSON-parses.
3. The body carries a non-empty `accepts[]` array with at least one entry
   containing a `payTo` + parseable price.

Everything after that — the recorded `network`, `asset`, `price_usd`,
`payTo_present` — comes directly from the parsed `accepts[]` entry.

## License

[Creative Commons Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/).
Free to reuse, remix, and redistribute — including commercially — with
attribution.

> Onchain Agent Intel (2026). x402 Payable Endpoints Probe — Base + Ethereum, 2026-10-11. CC BY 4.0. https://onchainagentintel.io/data/x402-payable-endpoints-2026-10-11/
