1. Observe
Pulse makes unpaid requests. Daily summaries record fingerprints of advertised x402 options and whether an x401 proof-request envelope was recognised.
Has this API answered our probes? Has its advertised payment option appeared before? Does today’s offer fit your own limits? ChainVerdict provides recorded observations and a local comparison tool.
See the live collection manifest · Download the free local kit · Kit checksum · Hash test vectors · Debug an x401/x402 capture
This is a new record. The first day of this collection is partial. The live manifest shows which days exist and whether timestamp proofs are still pending.
Pulse makes unpaid requests. Daily summaries record fingerprints of advertised x402 options and whether an x401 proof-request envelope was recognised.
Your local tool checks a selected Base-USDC offer against your recipient, price, resource and freshness rules, then compares it with the requested history.
The result is within_policy, outside_policy, insufficient_evidence or unsupported. Your application separately handles identity and payment. This tool never pays.
Pulse runs on our existing cloud server and makes unpaid requests on a nominal ten-minute schedule. It saves daily summaries, closes each UTC day, then submits a separate commitment to free timestamp calendars. Discovery refreshes from the public Bazaar. The collector keeps running when this chat or the owner’s laptop is closed.
One operator, one collection region. Outages and capacity limits can leave gaps. A tracked URL is not necessarily a successful or comparable sample, and repeated samples are not customers or transactions. x401 envelopes can only accumulate where a response actually contains one; we do not manufacture examples in production.
The kit includes a synthetic example to inspect, source code, pinned-key verifier, requirements and one integration example. Python 3.10+ is required. Installing the pinned verification libraries is free. Synthetic fixtures are teaching examples, not production evidence.
python -m pip install -r requirements.txt # Choose actual completed UTC days listed in the manifest: python purchase_evidence.py capture evidence --from YYYY-MM-DD --to YYYY-MM-DD python purchase_evidence.py verify evidence/bundle.json \ --headers evidence/bitcoin-headers.json --as-of YYYY-MM-DD \ --from YYYY-MM-DD --to YYYY-MM-DD # Edit your local input, including an explicit UTC clock and receivedAt: python purchase_evidence.py evaluate input.json evidence/bundle.json \ --headers evidence/bitcoin-headers.json --from YYYY-MM-DD --to YYYY-MM-DD
Replace the date placeholders; they are not runnable dates. The input example deliberately uses assurance: bitcoin. A pending timestamp returns insufficient evidence. You may explicitly choose signed to require publisher authentication without claiming independent time; the report names that weaker tier. Neither tier proves the observations accurate.
The kit includes a local coverage report and 18 runnable synthetic teaching cases: unchanged terms, changed recipients or resources, stale quotes, missing history and more. These are regression examples, not production cases or certification.
# No network or payment in either command: python run_purchase_cases.py python purchase_coverage.py evidence/bundle.json \ --headers evidence/bitcoin-headers.json --as-of YYYY-MM-DD \ --from YYYY-MM-DD --to YYYY-MM-DD
Coverage separates descriptive counts from days verified at your requested assurance tier. It reports missing days, sample counts, unparseable offers and exact resource mismatches. A structurally comparable row is not a policy pass or a seller score.
Suggest a sanitised reproducible case. Start with a description or a synthetic reproduction. Never send credentials, proof nonces, payment signatures, private URLs or raw logs. Real cases need reproduction, rights review and explicit permission before publication.
The local evaluator, manifest and latest seven collected UTC days are free. Existing paid routes remain available: /v1/feed includes the latest completed purchase-evidence day; /v1/archive/full offers retained days with ?purchaseDay=YYYY-MM-DD (one new-schema day per response). Read the live HTTP 402 quote before purchasing. Cache a bundle and evaluate many offers locally instead of buying a check for every agent action.
A bundle is a dated snapshot. Its history can become stale. Do not reuse it beyond your own policy. Existing API and TradeRails utilities remain available at their original addresses.
Older Pulse observations cannot supply payment-option or x401 history for this new format. Nothing is backfilled. A completed day must match its own commitment and publisher signature; Bitcoin timestamp assurance is a separate check.
An offer fingerprint is a hash of selected advertised fields, not proof of their authenticity or protocol conformance. It can reveal whether an option matches a known capture; it cannot recover an old price or recipient from the hash alone. Hashing is not anonymisation.
x401 counts describe recognised or malformed envelopes, not people, credentials, authorisation or adoption. We retain no proof nonce, credential request contents or token in this dataset. A 401 response alone is not x401. Samples come from one observer and can miss failures between requests.
Unpaid probes cannot establish settlement, delivery, result quality or seller honesty. The local tool checks selected exact Base-USDC terms only; unsupported protocols and missing evidence remain explicit. It holds no keys and does not send your captures to ChainVerdict.
Methodology · Collection limits · Service status and legacy archive disclosure · Contact