Skip to methodology

Methodology

How Agent 402 Tape observes, attributes, and reports x402 settlement activity.

01

What Agent 402 Tape is

Agent 402 Tape is the consolidated settlement tape for the x402 protocol ecosystem. Agent 402 operates it as a neutral, multi-chain observer of USDC settlement events attributable to x402 services. It is read-only, append-only, and free to query. The institutional template is the Consolidated Tape Association in U.S. equities: the tape disseminates raw trade data without editorializing it.

Nothing in the public Tape API ranks, scores, recommends, or interprets observed events. Rankings, opportunity flags, and trust tiers live in Agent 402 Demand Intel, which is a separate product layer that consumes Tape data among other sources.

02

What we observe

USDC Transfer events on EVM chains, and SPL Token transfer instructions on Solana, where the recipient address is a known x402 payTo (recovered from facilitator discovery endpoints and indexed publisher 402 responses). Per-chain ingest cadence is roughly two minutes for the live tail.

NetworkLive tailConfirmation depthAdapter
Baselive30 blocks (~60s)base_evm.py
Polygonlive64 blocksevm.py (generic)
Solanalive32 slots (finalized commitment)solana.py
Optimismwired, off30 blocksevm.py
Arbitrumwired, off30 blocksevm.py

Historical backfill walks each chain backward toward the start of meaningful x402 settlement activity (approximately Q1 2024 on Base). Backfill state can be inspected via GET /tape/api/v1/health.

03

What we do not observe

04

Attribution tiering

From chain data alone, a USDC transfer to a known payTo cannot always be attributed to a specific service. Some facilitator wallets serve hundreds of providers from a single pooled address. Pretending otherwise would be false precision, so we tier honestly.

TierWhenBehavior
direct Recipient wallet serves 1 to 5 known providers. Event is attributed to a specific service_id. Aggregations roll up per service.
pool Recipient wallet serves 6 or more known providers (facilitator gas pool). Event is attributed to the pool wallet. Aggregations roll up per pool, never claimed for a single service.
unattributed Recipient is not in our known payTo set. Event is kept in an audit table for backfill investigation. Not surfaced in service aggregations.

The threshold (POOL_PROVIDER_THRESHOLD = 6) is set in services/tape/attribution.py. It is conservative: panel-vs-census trade-off favoring honesty over coverage breadth.

05

The 6 API design principles

  1. No interpretation. No rankings, recommendations, trust scores, opportunity flags, or anomaly markers. Counts, sums, last-seen, and attribution tier only.
  2. Provenance in every aggregation payload. Every response carries "source": "Agent 402 Tape" and a "confidence" field.
  3. Methodology link in every aggregation response. Body-level _links.methodology points back here. Body, not HTTP header, because LLM consumers commonly drop headers in tool chains.
  4. Pool vs direct exposed honestly. The attribution_tier field is always present on per-event responses. Pool-attributed services get confidence: "pool" so consumers can skip-score them.
  5. Read-only forever. No POST, PUT, PATCH, or DELETE that mutates tape state. (POST /aggregate/batch is a read-shaped POST: it queries, it does not write.)
  6. Versioned semantics. All endpoints live under /tape/api/v1/*. Field meanings defined here are locked at v1. Changes require a v2 cutover, not a silent semantic shift.

06

Read endpoints

Full OpenAPI documentation: https://agent402.app/api/docs#tag/tape. The /aggregate endpoint is also listed as a free x402 service on the Agent 402 Marketplace.

EndpointPurpose
GET /tape/api/v1/healthPer-chain ingest lag and coverage attestation.
GET /tape/api/v1/recentRecent events across all networks, polling source for the ticker.
GET /tape/api/v1/aggregateObserved settlement aggregate for one service.
POST /tape/api/v1/aggregate/batchUp to 100 services in one call. Read-shaped POST, no writes.
GET /tape/api/v1/service/{id}/historyPaginated per-service event stream.
GET /tape/api/v1/network/{slug}/topTop services on a chain by direct-attributed volume.
GET /tape/api/v1/payer/{addr}/spendingWhat a wallet has paid for, per recipient.
GET /tape/api/v1/pool/{addr}/statsAggregate stats for a facilitator pool wallet.

07

Confidence levels in responses

ConfidenceMeaning
high Direct-attributed observations exist for this service in the requested window. Counts and sums map one-to-one to real on-chain events.
pool The service's payTo is a pool wallet. Returned aggregates are pool-level, summed across all providers sharing that wallet. Per-service comparison is not meaningful; downstream consumers should skip-score these.
none Service is not resolved, or resolved with no observations in window. Counts and sums are zero.

08

Reorg policy

Events are written with confirmed: false when first observed. After the per-chain confirmation depth (30 blocks on most EVM chains, 64 on Polygon, 32 slots on Solana under finalized commitment) they are flipped to confirmed: true. Aggregations include unconfirmed events but expose the confirmed bit on per-event responses so consumers can filter when needed.

Re-orgs that invalidate previously-observed events are rare at the confirmation depths above. When they do occur, the next ingest cycle reconciles, and a nightly integrity sweep (tape_rollup_rebuild at 04:00 UTC) rebuilds every rollup row from tape_events ground truth.

09

Known limitations

10

Version history

v1 (current). Schema and field semantics locked. All endpoints under /tape/api/v1/*. The following are NOT guaranteed for future versions: addition of new fields (additive only, safe), addition of new chains (additive, safe), addition of new endpoints (additive, safe). The following WOULD require a v2 cutover: renaming or repurposing existing fields, changing the meaning of attribution tiers, changing the confidence-tier vocabulary, lowering the pool threshold below 6.

11

Contact

Data quality reports, attribution disputes, or methodology questions: open an issue on GitHub. Include service ID or resource URL, the affected window, and what you observed vs what you expected.

For collaboration on the x402 observed-settlements extension proposal, contact us via the issue tracker above with the prefix spec:.