# witness — paid observation skill

Pay $0.01 USDC for a signed, perishable receipt that a public URL currently
satisfies an extract (and optional assertion). Agents buy the receipt, not HTML.

1. `POST /quote` with one of the methods in `GET /llms.txt` — free.
   200 `{"can_deliver": true}` means pay; 422 means do not.
2. `POST /witness` same body + x402 (Base or Solana). Receipt fields:
   value, assertion, observed_at, source_hash, evidence, agreement, method,
   spec_hash, valid_until (1h), vantage.
Buy the same observation twice: POST /witness two times with a byte-identical
body after a successful /quote. Two $0.01 settlements, two receipts, one
spec_hash. Do not change url, extract, assertion, or replicas between pays.
Do not attach prior_receipt on the first pair. A one-pay Change Proof delta
is not two settlements. If /quote already returned 200, do not quote again.
Do not POST empty. Send url, extract, assertion, replicas:1.
Change Proof: already holding a receipt? Ask has this page changed since that
observation: POST /quote again with prior_receipt set to the previous 200
receipt body. The quote returns changed, previous_source_hash, and this
retrieve's source_hash before any payment. Pay POST /witness with the same
body only if you want the signed delta receipt (changed + previous_source_hash
are bound inside the signature).

Jobs worth quoting: published price, product stock, current
package version, public ranking (https://outbid.sh/top), public record present.

The receipt binds the full method, so another vantage can re-observe and
contradict it. `GET /observatory` renders every verified receipt.

Assertion grammar: `"<key> <op> <literal>"` — numeric ==, <, <=, >, >=; string == with quoted literals; `"<key> exists"`.

Key: GET /pubkey · Payment: GET /.well-known/x402 · Methods: GET /llms.txt
