llms.txt — documentation index for LLMs and agentsllms-full.txt — full documentation corpusMarkdown version of the documentationskill.md — agent skill filePaddock MCP server descriptor
— Methodology

How Paddock measures agent commerce.

Every figure Paddock publishes is traceable to a documented source and scoped to a stated coverage tier. This page is the reference for citing Paddock data in research, diligence, and analysis.

01 / SOURCES
01

Data sources

Paddock merges independent public sources into a single, cleaned view, and traces every figure to the source that underpins it. The full list, with the licence each one is used under, is at Data sources and licences.

Settlement · Universe 1

x402scan all-facilitator aggregate

The stats.overall settlement aggregate across all x402 facilitators. Basis for Agent Settlement Volume and all transaction counts.

Catalog · Universe 2

CDP Bazaar catalog

Per-origin service listings from the Coinbase x402 Bazaar, refreshed across all pages and chains. Basis for origin-level attribution.

Registry · Universe 3

Hand-verified wallet map

A small, hand-maintained set of payTo → service mappings. Each one is admitted only after an automated gate probes the domain's own live 402 response or .well-known/x402.json and finds that wallet declared there. There is no continuous crawl: the gate runs when a mapping is proposed or changed, not on a schedule.

Liveness

Liveness data

Whether listed services actually respond, so attribution and Spend Share reflect live services rather than dead listings. This signal comes from an independent third-party monitoring source and is captured nightly; Paddock does not run these probes.

02 / TIERS
02

Coverage tiers

Agent-commerce data exists at three levels of resolution. Each figure Paddock publishes is drawn from one of them.

UNIVERSE 1
100%
of settled txns
Agent Settlement Volume
Everything Paddock observes settling on the x402 rail — a census, not a sample, countable in full without attribution. The flagship metric (§03) is drawn from this tier.
Basis for: market-wide totals
gross_settled_usdc, gross_settled_txnsby definition — this tier is the census total itself, not a computed ratio — snapshot 2026-09-05
UNIVERSE 2
~90.2%
of settled txns
Attributed Transactions
Settlement traceable to a named origin via the Bazaar catalog. Larger, machine-resolved, but not wallet-verified.
Basis for: category and provider analysis
coverage_pct_listed_attributableresolved transactions ÷ attributable listed-seller transactions (listed rows a wallet→domain directory could resolve; see attributable.ts) — snapshot 2026-09-05
Base: 905 recipient rows returned by x402scan's list that night (highest-tx_count wallets first, capped at ~1,000/night — list_complete: true), not the full listed universe. See FA-012.
UNIVERSE 3
~0.6%
of settled txns · growing
Verified Mapped Market
Settlement resolved to specific, verified wallets. The smallest and most rigorous tier, expanding through registry harvest and ongoing mapping.
Basis for: Spend Share · health signals
categoryVolume[*] (excluding "other"), ecosystem.total_transactionsnamed-category transactions ÷ total settled transactions, excluding the unattributed "other" bucket (FA-011) — snapshot 2026-09-05
Truncated numerator over census denominator: named-category transactions are counted only among the 905 recipient rows captured that night (capped at ~1,000 — list_complete: true), while the denominator is the full uncapped settlement census. This ratio therefore understates coverage by an unknown factor and is not a market share. See FA-011 and FA-012.

The percentages above are transaction-count shares, read live from the latest nightly snapshot — not fixed properties of the system. Paddock does not currently compute or publish a dollar-denominated coverage figure at any tier: the pipeline only sums settlement amounts for resolved sellers, never for unresolved wallets, so no dollar-volume denominator exists to divide by (see known-false-assumption FA-011). These figures move day to day as the underlying transaction mix changes; expect them to.

03 / ASV
03

Agent Settlement Volume

Paddock's flagship metric — the headline measure of how much AI agents settle on-chain.

Agent Settlement Volume (ASV)

The total USDC settled through x402 agent payments that Paddock observes via x402scan's all-facilitator aggregate, reported as a 7-day rolling average.

A census-level measure of total indexed x402 settlement, drawn from Universe 1 — no attribution required to state it.

The 7-day rolling average is the headline figure; the raw daily value is reported alongside it as context, because daily settlement is volatile and a single day is not representative of the trend.

04 / ATTRIBUTION
04

Attribution

Attribution maps a settlement wallet to the named service behind it — turning anonymous on-chain payments into category and provider intelligence.

How the map is built

The wallet-to-service map has two halves. The larger half is the full Bazaar catalog — all pages, all chains, every payTo — ingested wholesale; those mappings are seller-declared, but they are declared into a third-party catalog that Paddock does not individually audit. The smaller half is a hand-maintained override set, and those mappings are each checked against the seller's own self-declared config by an automated gate before entering the map. Resolution works forward in both halves: it begins from a project's own live payment configuration, never inferred from wallet behavior.

What the map is applied to

Attribution does not run over every settlement. Each night Paddock fetches the settlement recipient list highest-transaction-count-first and stops at a cap of roughly a thousand rows, and resolution runs over that slice. Every coverage percentage, category share and provider count on this page is computed inside that window — so they are shares of the captured slice, not of the market. The per-tier figures in §02 state the exact row count and completeness flag for the most recent night.

Excluded wallets

  • Facilitator and pooled wallets are classified and excluded — they carry pass-through volume, not the demand of a single service.
  • Identified circular clusters are excluded from attribution (see §05).
05 / CIRCULAR
05

Circular detection

Not all settlement is demand. Paddock detects circular (self-funded) settlement and reports it as a scoped finding.

Criteria

A cluster is flagged as circular on the basis of self-funding analysis — the share of a cluster's inflow originating from within the cluster itself — corroborated by on-chain reconstruction of the payer side of each settlement.

Scope and scale

The largest identified circular cluster represents a large majority of a single facilitator's volume but only a fraction of a percent of total settled transactions ecosystem-wide. Both are true; they differ only in denominator — which is exactly why the two are never conflated.

Scope limitation

Circular detection currently covers facilitators with on-chain-readable settlement. Clusters on facilitators without a readable settlement path are not yet detectable, and Paddock states this limit rather than implying market-wide coverage.

06 / RAILS
06

Beyond x402

Agent commerce settles across many rails, and they are not equally observable. Paddock measures each to the depth its data allows — and labels which is which.

On-chain settlementFully observable
x402 on Base and Solana. Settlement is publicly verifiable on-chain, so volume, endpoints, and attribution are directly measured. This is Paddock's core dataset.
Directory-indexedPartially observable
Rails such as MPP publish a registry of services but not settlement. Paddock tracks the registered-service count and its change over time — a supply signal, not a settlement figure.
Developer adoptionProxy signal
For emerging rails, Paddock tracks public developer-adoption proxies — repository activity and integration counts — labeled as engagement, not settlement.
Disclosed-onlyNot settlement-readable
Card-network and off-chain agent schemes publish no on-chain settlement. Paddock records what these rails disclose publicly, sourced and dated, without implying a measured volume.
07 / GOVERNANCE
07

Index governance

An index is a different promise from a chart. Five documents say what would be in a Paddock index, when it changes, how a constituent contests a row we got wrong, and what Paddock will and will not take money for. Published , and inside the corrections-log scope below.

No Paddock index is currently live. The Agent Commerce Index is suspended, not retired — no new print is computed and existing prints are retained unmodified. The five documents are specification, not a claim that a governed index exists today. The commitments in them are not conditional on that: the appeals service levels and the four firewall rules bind Paddock whether or not an index is running. Start at Index governance.

08 / CORRECTIONS
08

Corrections

Paddock's failure modes are mostly silent — a correct-looking number on a changed basis. Anything that moves a published figure, changes what a figure means, or retracts a claim is recorded here, newest first, with what was wrong and what the number is now.

What is in scope. Until 2026-08-27 the scope was implicit — “published figures” — which worked while everything published was a number. The four index-governance documents are not numbers, they are commitments, and a promise quietly reworded is the same defect as a figure quietly restated. So the scope is stated:

In scope — a change here is a dated entry
Any published figure, or the basis it is computed on
the value moves, its meaning changes, or the claim is retracted
Any figure sold through the API, the MCP tools, or the monthly report
the same, including a figure that was correct on a basis that has since changed
The seven commitment sentences on /index-governance/rebalance-calendar (02), /index-governance/appeals (03) and /index-governance/conflict-policy (04) — the three appeals service levels and the four firewall rules
any change to the wording of one of the three service levels (the acknowledgement deadline, the resolution deadline, the extension rule, or what a decision must contain) or one of the four firewall rules
01 · Methodology spec at /index-governance/methodology-spec — as figure basis
a change to eligibility, weighting, exclusions, or the mandatory concentration disclosure

Not in scope, deliberately: internal process issues, near-misses and tooling problems. Those are recorded in issues, not on a public surface. This log is for what a reader relied on.

Paddock's own attribution vouched for a live wallet it had never seen
Affects: The target block and the contract check of verify_before_pay ($0.25, and the free-key tool), on both /api/paddock/mcp/verify-before-pay and the MCP tool, for callers who supply no ?pay_to=. No route verdict changes in either direction, and no stored series or published figure is affected: this is a live probe and nothing about it is written to a snapshot. · Restatement needed: Anyone who stored a verify_before_pay response from before 2026-09-06 in which they supplied no ?pay_to= should not read the attribution fields — attributed_domain, the settlement history, the circular verdict — as statements about the wallet the endpoint was asking to be paid. They described the wallets Paddock had attributed to the domain, which may not be the same wallet. Also note that pay_to_checked_against_live changed meaning on this date: a stored 0.4 false and a live 0.5 true can describe the identical request.

verify_before_pay decodes every recipient the live 402 names. Until 2026-09-06 it compared them against the caller's ?pay_to= when one was given, and against nothing at all when one was not. A caller asking only about a URL got the endpoint's live challenge decoded on one side of the response and Paddock's stored attribution for that domain on the other, with no comparison between them and nothing saying so.

The failure that matters is a compromised host. An attacker who changes only the recipient in the live challenge leaves everything our attribution is built from untouched — the domain, its settlement history, its facilitators, its circular standing are all still ours and all still clean. The response therefore carried Paddock's full endorsement of a seller while the money went to an address Paddock had never observed. Our stored attribution vouched for a wallet it had never met.

Reported by a design partner on 2026-09-06, from a live seller endpoint exhibiting the shape. The endpoint is not named here: a live recipient we have not attributed is also exactly what an honest wallet rotation looks like, and naming a host beside the word takeover would assert something this check cannot establish.

From 2026-09-06 the comparison runs on every call. checks.contract.attributed reports the wallets Paddock attributes to the domain, whether a live recipient is among them, and which live recipients are unattributed. target.pay_to_checked_against_live now means a comparison actually ran — against the caller's wallet, against our attribution, or both — where before it meant only that the caller had typed a wallet, which verified nothing.

The divergence is FLAGGED AND DOES NOT REFUSE, and that is a deliberate limit rather than caution. A seller that rotates its recipient wallet produces exactly this shape, because our attribution is built from settlement we have already seen and a rotation is by definition a wallet we have not. An independent census (Melchiorre Oliva, x402-measure, recomputed by us) found 37 of the 765 hosts present in both its 2026-08-10 and 2026-09-04 collections had moved payTo — 4.8% in three and a half weeks. Refusing here would refuse roughly one honest seller in twenty, which is the failure corrected on 2026-09-03 in the other direction, with the caller's money attached. The refusing control remains the caller's own ?pay_to=.

So the honest statement of what this buys: a caller who names no wallet is now TOLD when the endpoint is asking to be paid somewhere we have never seen, and is still not stopped. That is the strongest claim available without per-wallet destination history, which is #192 and which does not exist yet.

Live recipients vs Paddock's own attributionnever compared when the caller supplied no ?pay_to=compared on every call; divergence flagged and named
pay_to_checked_against_livetrue whenever the caller typed a wallettrue only when a comparison against the live recipients ran
How the divergence moves the verdictn/a — not detectedflagged; moves_route is false
Schema versionverify_before_pay/0.4verify_before_pay/0.5
evidence — docs/investigations/2026-09-06-live-payto-vs-attribution.md
verify_before_pay looked for a seller's published config at only one of the two paths it can live at
Affects: The self_declared block of verify_before_pay ($0.25, and the free-key tool), on both /api/paddock/mcp/verify-before-pay and the MCP tool. A seller publishing its x402 config at /.well-known/x402 — without the .json suffix — was reported self_declared: unavailable, which reads as “this seller publishes nothing” and was false. No stored series and no published figure changes: this is a live probe, nothing about it is written to a snapshot, and no monthly report consumes it. · Restatement needed: A verify_before_pay response from before 2026-09-03 carrying contract_self_declared_unavailable does NOT establish that the seller published no config — only that none was served at the .json spelling. Do not cite a stored verdict as evidence that a seller declines to publish its terms. Verdicts in which a config WAS found are unaffected, and no verdict is retroactively wrong about anything it did compare.

A seller's self-declared x402 config — the one surface where a seller states, under its own domain, what it charges and where the money goes — exists in the wild under two spellings: /.well-known/x402.json and /.well-known/x402. Paddock fetched the first and only the first, so a seller using the second was indistinguishable from a seller publishing nothing at all.

ReturnCheck (returncheck.m-angelmartinez-fer.workers.dev) is the case that surfaced it, reported by its operator in the x402 working group on 2026-09-03. An unpaid GET to its suffixless path the same day returned a complete v2 config: the payment resource, a Base mainnet accept with amount, asset and recipient, and the locations of both its HTTP and MCP payment endpoints. The .json path on the same host returns HTTP 404. Paddock's probe that day reported self_declared: unavailable for a seller that publishes all of it.

Both spellings are now fetched, concurrently under one timeout budget, and whichever serves a parseable config is the one judged. self_declared.source names the URL actually fetched rather than a fixed path, so a reader can see which spelling answered. The .json spelling keeps precedence in the case — not yet observed anywhere — where a seller serves both.

Nothing about how the config is JUDGED changed. self_declared remains advisory on exactly the terms set on 2026-09-03 earlier the same day: a divergence on payTo alone is flagged and does not refuse, a divergence on network, asset or price refuses. Finding a config where none was found before does not on its own move a verdict; it can move one only by disagreeing with the live 402, which is the check working.

The absence being corrected is the kind this log exists for: it was not a wrong number, it was a confident report of nothing where there was something. A bounded read-only sample of 60 CDP Bazaar seller domains the same day found zero publishing a parseable config at either spelling, which is the honest context — unavailable is the overwhelmingly common and correct answer, and that is exactly what made one false instance easy not to notice.

Paths fetched for the seller's self-declared config/.well-known/x402.json only/.well-known/x402.json and /.well-known/x402, both
self_declared.sourcea fixed path, whatever happenedthe URL actually fetched and read
A seller publishing only at the suffixless pathcontract_self_declared_unavailableconfig read and compared
How self_declared moves the verdictadvisory; payTo-only divergence flaggedunchanged — advisory; payTo-only divergence flagged
Schema versionverify_before_pay/0.3verify_before_pay/0.4
evidence — docs/investigations/2026-09-03-well-known-x402-spelling.md
verify_before_pay never checked the one wallet the caller had already committed to
Affects: The route verdict of verify_before_pay ($0.25, and the free-key tool), on both /api/paddock/mcp/verify-before-pay and the MCP tool. Callers who passed ?pay_to= were told route: true on endpoints that were asking to be paid at a DIFFERENT address than the one they named. The wallet was read, used to resolve attribution, and echoed back in the response — it was never compared to the live challenge. No stored series and no published figure changes: this is a live probe, nothing about it is written to a snapshot, and no monthly report consumes it. · Restatement needed: Anyone who stored a verify_before_pay verdict from before 2026-09-03 in which they supplied ?pay_to= should not read route: true as confirmation that the endpoint was asking to be paid at that wallet. It was never that claim. Re-run the check before acting on a stored verdict, and store schema_version with every verdict — a 0.2 verdict and a 0.3 verdict are not comparable, and the version string is how you tell them apart. Verdicts that supplied no ?pay_to= are unaffected.

verify_before_pay takes ?endpoint_url= (the resource an agent is about to pay) and ?pay_to= (the wallet it is about to pay). It probed the endpoint, decoded the live 402, and compared the decoded contract against the caller's expected network, asset, seller and price. It did not compare it against pay_to. That parameter resolved the wallet to a domain through Paddock's own attribution and was echoed back under target.pay_to, and that was all it did.

So the narrowest question the tool can be asked — is the wallet I am about to pay one this endpoint is currently asking to be paid? — was the one question it did not answer, on the field where the caller has already committed. An x402 settlement is an EIP-3009 authorization that SIGNS the recipient. A buyer who read a stale challenge, or whose seller rotated addresses between their read and ours, got route: true and a signature addressed to a wallet the endpoint no longer named.

From 2026-09-03 the caller's pay_to is compared against every recipient the live challenge names, across every accepts[] entry rather than the one entry the response reports as `observed`. A wallet the endpoint offers on another entry — a different chain, typically — is reported and NOT refused; refusing there would repeat the multi-chain defect corrected on 2026-08-31, this time with the caller's money attached. A wallet the endpoint names nowhere is a refusal: route is false, pay_to is in mismatched_fields, and the summary names the recipients the endpoint does ask for.

One verdict moves the other way, and it is recorded here rather than left as a quiet loosening. A seller whose own published config (.well-known/x402.json) named a different payTo than its live 402 was refused. That refused the honest rotating seller every time — a published config is a snapshot, a challenge is live, and an address rotation puts the two out of step by design. A divergence on payTo ALONE is now flagged and does not refuse; a divergence on network, asset or price, or on payTo together with any of them, refuses exactly as before. The buyer is not less protected: the check that replaced it tests the caller's own stated recipient, which is a stronger claim than the seller's document about itself.

A third case was returning a clean answer about something nobody had looked at. Asked about a URL with no ?pay_to=, the circular-settlement check needs a wallet, and Paddock's attribution supplies one only when the domain maps to exactly one. A domain mapping to several — a provider rotating payTo addresses, which is ordinary — selected none, fell through, and could return status: pass, meaning “not flagged” asserted about a wallet that had never been examined. It now returns not_assessed, names the candidate wallets, and tells the caller to re-ask with the recipient they intend to settle to.

Found while scoping how Paddock should handle sellers that rotate payTo addresses, after a field report of one endpoint serving three addresses across twelve calls in a minute. The handling of rotation itself — a destination-churn note built on per-wallet history — is not built and is blocked on a series that does not exist yet. These three are the parts that needed no history: they were answerable from a single read all along.

Caller's ?pay_to= vs the live challengenever comparedcompared against every recipient the challenge names; no match refuses
Recipient offered on another accepts[] entryn/areported, never refused
Self-declared config diverging on payTo aloneroute: falseflagged, route unchanged
Self-declared config diverging on network / asset / priceroute: falseunchanged — route: false
Circular check, URL-only query on a multi-wallet domainpass (“not flagged”, on no wallet)not_assessed, candidates named
Schema versionverify_before_pay/0.2verify_before_pay/0.3
evidence — docs/investigations/2026-09-03-payto-no-history-gaps.md
Chain counts on report-data counted only the first payment option each resource offered
Affects: chains[] on /api/paddock/report-data — the free public route and the paid get_report_data MCP tool ($0.99). Chain counts on a sold route understated Solana by roughly 22× and published Polygon, Optimism and Stellar as absent. Every buyer of that tool received accepts[0] ordering artifacts presented as chain distribution. No other figure changes: totalBazaarEndpoints, every ASV and settlement figure, and the payTo attribution map are all unaffected, and no monthly report consumed the wrong number — report-figures.ts carries no chain field, so chains[] never entered the FIGURES block the report prose is composed from. · Restatement needed: Anyone who quoted a Paddock chain-endpoint count from before 2026-08-31 should restate it. Solana was published at 259 endpoints and the correct figure on the same catalogue is 5,732; Polygon, Optimism and Stellar were published as zero against 2,268, 577 and 548. Do NOT compare a count taken before 2026-08-31 against one taken after — the basis changed, and endpoint_change_pct is null with trend "basis_change_unavailable" for any window that spans the boundary. Pre-boundary counts are annotated rather than rewritten: historical snapshots stored only the first accepts[] entry, so the corrected value cannot be reconstructed for past nights, and inventing one would be worse than the error being corrected.

A CDP Bazaar resource advertises a list of payment options — its accepts[] array — one per chain and asset it will take. A resource offering twelve chains has twelve entries. Paddock read the FIRST entry only and counted that as the resource's chain. So each resource counted once, under whichever chain its seller happened to list first, and the published figure was a function of array ORDER rather than of what sellers actually offer.

6,024 of the 14,590 resources in the catalogue (41%) offer more than one chain, so this was not a marginal distortion. Recounted over every accepts[] entry on 2026-08-31: Solana 5,732 against 259 published, Polygon 2,268 against 0, Arbitrum 2,176 against 1, BNB Chain 911 against 1, Optimism 577 against 0, Stellar 548 against 0. Base moved from 14,176 to 14,357 — barely at all, which is precisely why the defect survived: the one chain anybody spot-checked looked right.

The trend fields were worse than the levels. endpoint_change_pct and trend were deltas of an accepts[0] count, so a seller REORDERING its accepts array moved an endpoint from one chain to another with no change in anything it offered. "Solana +48% growing" and "Base −8% declining", served on 2026-08-31, were partly artifacts of array ordering.

The counting unit is now stated on every row rather than left to be inferred: one resource counts once per distinct chain it offers, so the rows do not sum to the resource total and are not meant to. The question the figure answers is "how many resources can I pay on this chain", which is a buyer's question. Testnets are excluded, as before.

This was found while auditing how Paddock parses a 402 challenge, after a cross-measurer parsing failure was raised in the x402 Slack. It shares its root cause with three defects fixed in verify_before_pay the same day: treating accepts[] as one offer rather than an offer set. One reading error on two surfaces — a live tool and a sold figure. The tool's version of it produced a visible refusal and got attention; the sold figure just looked plausible, which is the more dangerous of the two failure modes and the reason this log exists.

The corrected series begins 2026-08-31. The discontinuity is recorded in ADR-0002 §11 as a step change on the same footing as the servers[] boundary of 2026-06-12, and the guard is in code rather than in a note: any window spanning the date returns a null change and a trend of "basis_change_unavailable".

Counting basisaccepts[0].network — the seller's first-listed optionevery distinct chain in accepts[]
Solana endpoints2595,732
Polygon endpoints0 (published as absent)2,268
Arbitrum endpoints12,176
Optimism endpoints0 (published as absent)577
Stellar endpoints0 (published as absent)548
Base endpoints14,17614,357
Change across the boundaryendpoint_change_pct computed across the basis changenull, trend "basis_change_unavailable"
evidence — docs/investigations/2026-08-31-x402-version-parsing-audit.md
Price comparisons move from listed prices to settled prices in verify_before_pay and get_best_value_provider
Affects: The price check in verify_before_pay (reason_codes price_within_category_range / price_above_category_median / price_below_category_median) and the price input to get_best_value_provider's composite score. Both are sold figures. No other figure changes, and no headline, chart or report number is affected. · Restatement needed: Anyone who stored a price reason code or a composite score from before 2026-08-28 should treat it as computed on a different basis and not compare it against one taken after. verify_before_pay responses now carry price_basis, and get_best_value_provider carries price_basis per provider, so the two are distinguishable after the fact.

Both tools compared against LISTED prices: the advertised minimum a seller publishes to Bazaar. verify_before_pay divided the price on the live 402 by the median advertised price of providers in the category; get_best_value_provider normalised each provider's advertised minimum against the highest advertised minimum in the category and gave that 30% of the composite. Both now use SETTLED prices — USDC actually paid, divided by settlements actually counted, summed across a provider's payTo wallets before dividing.

The objection came from a design partner and it is the right one: a median over listings is what sellers hope for, a median over settlements is what buyers agreed to. An advertised price is a seller's own declaration, which is the exact class of number this product exists not to take at face value. A settled price is arithmetic over transfers an upstream already indexed, and no seller can move it by editing a listing.

The direction of the change is not uniform and can reverse a reading. An endpoint asking $0.20 in a category whose providers advertise a $1.00 median scored 0.2× — read as suspiciously cheap. The same endpoint against a settled median of $0.10 scores 2× — ordinary. Which of those is right depends entirely on which number the category actually transacts at, and only one of the two is a measurement.

Where no settled price exists, the answer is that it does not exist. verify_before_pay returns status not_assessed with price_basis “unavailable” and no ratio; get_best_value_provider scores that provider neutral on price and marks the row price_basis “unavailable”. Neither falls back to the advertised figure. Substituting a seller-declared number for a missing measured one would reintroduce the defect being corrected, and would do it invisibly.

Nothing was removed from either response. listed_price_median_usdc and listed_vs_median_ratio are still returned by verify_before_pay and still mean what they meant; price_usdc is still returned per provider by get_best_value_provider. The schema version is unchanged at verify_before_pay/0.1 because the change is additive: price_basis and settled_vs_median_ratio are new fields, and a shadow-mode integration logging the old ones keeps getting them.

get_best_value_provider's published formula string is updated in the route and in the docs to name settled_price_usdc, because a formula that does not describe what the code computes is worse than no formula.

verify_before_pay price denominatormedian advertised (listed) price in categorymedian of per-provider settled means in category
get_best_value_provider price_normprice_usdc / max(price_usdc in category)settled_price_usdc / max(settled_price_usdc in category)
No price availablelisted median used where presentnot_assessed / neutral, price_basis "unavailable"
evidence — docs/investigations/settled-vs-listed-price-basis-2026-08-28.md
Index governance published; the appeals service levels were set before publication and differ from the unpublished draft
Affects: The four index-governance pages, published today at /index-governance. Specifically the appeals service levels (03.3) and the conflict-policy firewall (04.1), which are now commitments to third parties rather than an internal draft. No published figure changes value. · Restatement needed: None for any figure. Anyone who saw the unpublished draft of the appeals process should read the published service levels instead — the draft's targets were tighter and are not what Paddock commits to.

Four governance documents — the index methodology spec, the rebalance calendar, the appeals process and the conflict policy — were merged as unpublished drafts and are published today. They define how a Paddock index is governed when one is published. No Paddock index is currently live: the Agent Commerce Index remains suspended, not retired.

The service levels differ from the draft, and the direction is looser rather than tighter. The draft carried four separate timing targets: acknowledgement in 2 business days, a completeness check in 5, a decision in 15 business days from acceptance, and a promise that an appeal filed in the provisional-list window would be decided before that rebalance took effect. The published commitment is two deadlines and one rule: acknowledgement within 5 business days of receipt, resolution within 30 calendar days of that acknowledgement with a written decision and the evidence relied on, and — where a resolution needs more time — an extension communicated before day 30 with a new date. The completeness check is folded into the acknowledgement rather than carrying a deadline of its own, and the provisional-window promise is removed.

Paddock is one person. A published service level that cannot be met by one person is worse than a longer one that can, and the draft's targets were set before anyone had to keep them. The rebalance calendar is amended to match: the provisional-list window is the invitation to contest a row, not a promise of a decision before the effective date, and an appeal upheld after a rebalance takes effect is given effect off-cycle instead.

The conflict policy gains two firewall statements the draft did not make explicitly. A licensee — an exchange, a HIP-3 perp deployer, a structured-product issuer — that conditions the licence on adding, removing, reweighting or retaining a constituent is refused the licence, and an existing licence is terminated on the same ground; the refusal is published. And Paddock never operates a market, facilitator, or gateway: no marketplace or exchange, no acting as an x402 facilitator, no gateway, router or proxy through which agent payments pass. The draft said Paddock does not operate a marketplace and did not name facilitators or gateways.

These four pages are now inside this log's scope. A later change to a service level or to a firewall sentence is a dated entry here naming the old wording and the new, not an edit to a page.

Appeal acknowledged2 business days (draft)5 business days of receipt
Appeal resolved15 business days from acceptance (draft)30 calendar days of acknowledgement
Late resolutiontold before the target passes (draft)extension communicated before day 30, with a new date
Appeal filed at T−5decided before the rebalance takes effect (draft)no timing promise; upheld appeals take effect off-cycle
Firewall rules stated34
evidence — docs/index-governance/00-README.md
Circular-settlement classification refreshed after 63 days; flagged volume was understated
Affects: Which wallets are excluded from attribution, and therefore every category and provider figure derived from attributed settlement. The circular-settlement figures in the monthly report and in the paid circular signal. · Restatement needed: No published figure is retracted. Anyone comparing circular-settlement figures across the gap should note the classification behind them was unchanged from 23 June to 25 August, so movement in those figures over that period reflects live transaction counts, not re-detection.

Paddock's circular-settlement detector identifies clusters of wallets that predominantly fund each other rather than receiving payment from outside. The classification it produces is what excludes those wallets from attribution.

The detector was never scheduled. Its classification was last computed on 23 June and had not been recomputed since, while figures derived from it continued to be published and sold. It now runs weekly, and a change to which wallets are flagged opens a pull request for review rather than taking effect automatically.

The first refreshed run moved the flagged 30-day volume from $215,915.91 to $238,031.14. Four wallets were newly flagged, together carrying $16,581.34 over 92 settlements in the trailing 30 days — settlement that was not being excluded from attribution and should have been. Two wallets left the flagged set because their only activity aged out of the rolling 30-day window; between them they carried $399.22 across 4 settlements.

The direction matters more than the size: the stale classification was under-excluding, so attributed figures published during the gap included a small amount of settlement that current methodology flags as circular.

Flagged 30-day volume$215,915.91$238,031.14
Flagged wallets810
Classification date2026-06-232026-08-25
evidence — docs/methodology-corrections-log.md
Clarified sourcing language for liveness data
Affects: Descriptive text for the liveness data source in section 01. No published figure changes. · Restatement needed: None.

Clarified sourcing language for liveness data.

evidence — docs/methodology-corrections-log.md
Methodology page: source and attribution descriptions corrected; tier-3 figure now carries its basis caveat
Affects: Descriptive text in sections 01 and 04 of this page, and the caveat on the Universe 3 coverage tile in section 02. No published figure changes value. · Restatement needed: None for any figure. Anyone who cited the Universe 3 percentage as a market share should read the caveat now shown beside it — the figure is a share of the captured nightly slice, not of the market.

Section 01 previously described the wallet-mapping source as a crawl of public agent-service listings. There is no continuous crawl. What exists is a small hand-maintained set of wallet-to-service mappings, each admitted only after an automated gate probes the domain's own live payment configuration and finds that wallet declared there. The gate runs when a mapping is proposed or changed, not on a schedule. The card now says that.

Section 04 attached a per-mapping verification claim to the whole map. That claim is accurate for the hand-maintained overrides and not for the catalog half, which is ingested wholesale from a third-party directory that Paddock does not individually audit. Both halves resolve forward from a seller's own declared configuration, which was and remains true; the difference is that only one half is individually checked. The section now distinguishes them.

Section 04 also did not state that attribution runs over a capped nightly sample rather than over every settlement. That fact was stated only as a caveat on one tile in section 02. It is now stated in the section that describes the method.

The Universe 3 tile in section 02 rendered without any caveat, while the Universe 2 tile above it carried one. Universe 3 needs it more: its numerator is counted only among the rows captured in the capped nightly fetch, while its denominator is the full uncapped settlement census. That ratio understates coverage by an unknown factor and is not a market share. The same computation had already been removed from the monthly report for this reason. The tile now carries a caveat naming the mismatch.

evidence — docs/methodology-corrections-log.md
Dead wallet attribution removed for one service; last unverified tier-1 row verified
Affects: Attribution for api.xona-agent.com. No published figure changes. · Restatement needed: None.

A wallet-attribution override for api.xona-agent.com was found to be simultaneously active and internally quarantined. The address was a Solana key that had been stored lower-cased; Solana addresses are case-sensitive, so the stored key could not match any live on-chain address and the service resolved to zero attributed settlement.

The dead entry has been removed. The service's real settlement wallet was identified and added through the normal evidence gate, which requires the wallet to appear as a payment recipient in the service's own published payment challenge. It settles 244 transactions totalling $10.43 over the trailing 30 days.

Separately, Capminal was the last tier-1 constituent whose artifact had never been fetched. It has now been verified against a live payment challenge carrying the expected recipient address. Every tier-1 row now carries a real verification status.

evidence — docs/investigations/2026-08-24-capminal-t1-verification.md
Two tokens reclassified tier 1 → tier 2; tier-1 share of token market cap corrected
Affects: The token-to-settlement join, its tier assignments, and any downstream use of them. · Restatement needed: Only for tier membership. The headline share moves by 0.003 percentage points.

A review of every token that reached tier 1 by domain-name matching rather than artifact verification found that the tiering code assigned tier 1 whenever a domain matched, even when no settlement had ever been observed — while tier 1 is published as requiring settled 30-day volume. Three rows held tier 1 on that basis alone, with no matched wallet and zero transactions.

XONA AGENT and Tenna by Virtuals are reclassified tier 2. Both operate genuine payment endpoints, but the wallets settling their volume were not in Paddock's attribution graph. In XONA's case the wallet credited was an address this project had already flagged internally as unreliable. Scry Agent Ward is reclassified on the same grounds.

Four tokens matched the same unverified way — Aubrai by Bio, MiroShark, MOLTYCASH and Atelier — were confirmed tier 1 on live evidence, including decoded payment challenges for Aubrai and Atelier whose recipient addresses matched the wallets credited.

Concentration that should have been published from the start: the tier-1 market-cap share is 99.57% a single issuer. Excluding it, tier 1 is 0.2674% of the universe. The entire tier-1 cohort settled $451.34 across 31,927 transactions in the trailing 30 days. The market-cap share describes how much token value sits on top of a verified service; it does not describe how much economic activity those services carry, and should not be quoted as though it does.

Tier 110 tokens · 61.98%7 tokens · 61.9795%
Tier 21 token · 5.72%4 tokens · 5.7252%
Tier 1 excluding largest issuernot published0.2674%
evidence — docs/investigations/2026-08-20-apex-match-t1-verification.md
Chainlink tier-1 status verified after a reported dead link; no change to tier or headline
Affects: Confidence in the largest tier-1 constituent. · Restatement needed: None.

A reported HTTP 404 at the artifact URL backing the largest tier-1 constituent was traced to the host serving no route at its root and publishing its discovery document under a different filename than the one conventionally checked. Those are the two paths a manual check tries first, so the service appeared dead while being fully operational.

The gateway is live and settling: 13,024 transactions totalling $138.23 over the trailing 7 days, against a recipient address carrying four active directory registrations with heartbeats minutes old at the time of checking. Chainlink remains tier 1.

Two corrections followed. The artifact URL recorded for Chainlink was a marketing homepage that has never carried a payment gate, and has been replaced with the live service descriptor. More significantly, the tier had been assigned by domain matching without ever fetching an artifact — the gap that triggered the review logged above.

evidence — docs/investigations/2026-08-20-chainlink-t1-artifact-verification.md
— Keep going

What to read next.

Monthly intelligence
Read the report.

The State of Agent Commerce — the citable monthly report on what AI agents actually buy.

See the report →
x402 market
What agents pay for.

Real transaction volume by category. Three sources merged into one live table.

See the market →