{"service":"probe402","what_this_is":"probe402's own reports on the sector it measures: what the endpoints and facilitators on our seed did, over an archived window, in the archive's own words. Every figure in a report is traceable to a route or a command named beside it, and every report keeps one permanent address for as long as this service exists.","why_this_address_exists":"A report that lives on a surface somebody else controls has an address that can be moved, edited or deleted by a party with no obligation to whoever cited it. This one is permanent, versioned, ours and machine-fetchable, which is what makes it something a method section can point at. Social surfaces carry pointers to here; none of them is the record.","the_method_these_reports_rest_on":"https://probe402.com/method","how_to_read_this":"The index names every publication on the register. One is inlined in full below — the one you asked for, or the newest. Fetch any other at https://probe402.com/publications/<publication_id>, or take the object key and ask us for it. Send Accept: application/json for the record.","requested_publication":"pub_mcri_001","requested_publication_problem":null,"publications":[{"publication_id":"pub_listed_and_observed_1","series":"Listed and Observed","issue":1,"title":"Listed and Observed #1 — a directory's health flag, against six sealed days","status":"retired","revision":1,"published_at":"2026-08-27T07:22:10.000Z","retired_at":"2026-09-01T00:00:00.000Z","url":"https://probe402.com/publications/pub_listed_and_observed_1","object_key":"publications/pub_listed_and_observed_1/r1/report.json","revisions_published":[1],"corrections_on_record":0,"placeholders_unresolved":0},{"publication_id":"pub_mcri_001","series":"Machine Commerce Reality Index","issue":1,"title":"Machine Commerce Reality Index: #001 — August 2026","status":"published","revision":1,"published_at":"2026-09-03T11:15:28.580Z","retired_at":null,"url":"https://probe402.com/publications/pub_mcri_001","object_key":"publications/pub_mcri_001/r1/report.json","revisions_published":[1],"corrections_on_record":0,"placeholders_unresolved":0},{"publication_id":"pub_x402_infrastructure_1","series":"State of x402 Infrastructure","issue":1,"title":"State of x402 Infrastructure #1 — Facilitators","status":"retired","revision":1,"published_at":null,"retired_at":"2026-09-01T00:00:00.000Z","url":"https://probe402.com/publications/pub_x402_infrastructure_1","object_key":"publications/pub_x402_infrastructure_1/r1/report.json","revisions_published":[],"corrections_on_record":0,"placeholders_unresolved":13}],"publications_on_register":3,"cards":[{"publication_id":"pub_mcri_001","series":"Machine Commerce Reality Index","issue":1,"title":"Machine Commerce Reality Index: #001 — August 2026","subject":"MCRI measures what publicly listed [machine-payment](https://probe402.com/glossary/machine-payment) infrastructure claims, what it actually does, and where the two diverge.","published_at":"2026-09-03T11:15:28.580Z","url":"https://probe402.com/publications/pub_mcri_001","pdf":{"url":"https://probe402.com/publications/pub_mcri_001/r1/mcri-001.pdf","sha256":"23b0c560912f5686f7d171a92e384876a6ef7b980c6c5a2d5627bf1b43104433","bytes":143709},"sample":{"url":"https://probe402.com/publications/pub_mcri_001/r1/sample.csv","sha256":"273e19d5f9724e962f9caa22e1340a84ffda83388bb28376eea0a1baebf55388","bytes":75652,"rows":100}}],"cards_note":null,"publications_note":"3 publication(s) are on the register. The list is complete: it is every entry on the register, not a selection from them, and a report that was drafted and never published stays on it saying so. 2 of them are retired: a retired entry serves a dated retirement note at its own address and no report.","revisions_note":"Revisions the archive actually holds are listed per entry, read from publications/. A register entry marked published with no revision behind it is a gap on our side and the entry says so.","selected":{"publication_id":"pub_mcri_001","selected_because":"requested","publication":{"schema_version":1,"publication_id":"pub_mcri_001","series":"Machine Commerce Reality Index","issue":1,"title":"Machine Commerce Reality Index: #001 — August 2026","headline":"What machine commerce claims — and what actually happens","revision":1,"status":"published","published_at":"2026-09-03T11:15:28.580Z","byline":"Zach Bucheister","contact":"hello@probe402.com","drafted_at":"2026-09-01T00:00:00.000Z","assets":{"pdf":{"url":"https://probe402.com/publications/pub_mcri_001/r1/mcri-001.pdf","sha256":"23b0c560912f5686f7d171a92e384876a6ef7b980c6c5a2d5627bf1b43104433","bytes":143709},"sample":{"url":"https://probe402.com/publications/pub_mcri_001/r1/sample.csv","sha256":"273e19d5f9724e962f9caa22e1340a84ffda83388bb28376eea0a1baebf55388","bytes":75652,"rows":100}},"subject":"MCRI measures what publicly listed [machine-payment](https://probe402.com/glossary/machine-payment) infrastructure claims, what it actually does, and where the two diverge.","population_rule":"Four populations, and no figure crosses between them. (1) The CATALOGUE population: every route listed on the two public route catalogues, combined and de-duplicated, at one stamped read on 2026-09-01 — the read the issue's route, host and service counts are quoted against, with a second complete read 93 minutes later kept as the cross-check. (2) The OBSERVED population: every endpoint on probe402's seed that produced at least one graded observation inside the sealed window of 21–31 August 2026, joined to a third party's published label for the row whose address is the exact route we probe; an endpoint we did not grade, or whose label read failed, is outside every joined figure and is counted rather than dropped. (3) The KNOCKED population: routes selected because they publish no usable request contract, graded at the payment wall and nowhere past it — every share over it describes those routes and never the sector. (4) The SAMPLE population: the observation rows of the same sealed window, less rows an operator's own instruction or a curator hold keeps out, cut by a published rule seeded with a published hash.","lead_shape":"Of 955 endpoints 402index labelled `degraded` or `down`, 754 — 79% — returned a valid payment challenge on every independent probe we made in late August. 52 labelled `healthy` never returned one.","sections":[{"n":1,"heading":"1. The observability layer is stale and wrong","shape":"Machine commerce already has an observability layer: health labels published by observability providers (e.g., [402index](https://402index.io), [PulseFeed](https://pulsefeed.dev), [x402-trust](https://x402.fuchss.app), [vet402](https://vet402.com)), which [agents](https://probe402.com/glossary/agent) use to route purchases. Two distinct failure modes show up in the observability layer: stale measurements and incorrect classifications.\n\n**Stale.** The observation may be old, or the provider's stated cadence may not be supported by its visible freshness evidence. The strongest cadence claims in the field sit beside counters that do not support them — or beside no counter at all (each provider's own published words beside its own published counter, all read 2026-09-01):\n\n| Provider | Their cadence language | Their own freshness counter, same surface |\n|---|---|---|\n| vet402 | `every catalog-listed x402 endpoint, probed daily` | 2,750 of 14,662 active endpoints measured in the last 7 days (18.8%) |\n| PulseFeed | probe `rotates through the registry over weeks` (PulseFeed's own note) | median age of a currently-served `live` verdict: 214 hours; oldest 17.9 days |\n| x402-trust | `probes every listed endpoint continuously` … `many times a day` | no freshness or coverage counter published anywhere on the surface |\n| probe402 | per-route cadence stated on each grade page (daily; a small weekly class) | 8,528 of 9,440 covered routes observed in the last 7 days (90.3%); 907 never yet observed |\n\nAn old observation is not necessarily a wrong one — a label can be weeks old and still true.\n\n**Wrong.** A fresh label can still contradict independent observation.\n\nAcross 21–31 August 2026 we recorded 29,022 observations and compared 7,225 independently graded endpoints with 402index's health labels. On 1 September the `last_checked` stamps on the disagreeing labels were hours old, so staleness does not explain what follows.\n\nThe disagreement ran in both directions — endpoints labelled bad that presented a valid [payment challenge](https://probe402.com/glossary/payment-challenge) containing a payable quote (the machine-readable response that shows a price was offered, not that anything was paid), and endpoints labelled healthy that did not:\n\n- **`degraded` / `down`:** 754 of 955 endpoints (79.0%) returned a valid payment challenge on every probe; 489 of them did so on three or more probes across at least two days.\n- **`healthy`:** 52 of 5,459 endpoints (1.0%) never returned a valid payment challenge; 15 more were unreachable on every probe.\n\n402index's `healthy` label means the endpoint answered HTTP 402 within its timeout; MCRI tests whether the response contained a payable quote. That definitional difference explains part of the gap, but it does not eliminate the underlying observation: the labels and the independently observed payment-wall behaviour can diverge. (Coverage widened during the window, so most endpoints carry days of record, not weeks; one of the 754 was graded on all eleven days.)\n\n**Why it matters:** an agent, or a buyer of agent infrastructure, routing on a health label may be relying on a measurement that is days or weeks old — or simply wrong when it was checked.\n\n**What it changes:** health labels need to expose when they were last tested and what the test actually established. Without that context, buyers cannot judge whether a label is safe to route on."},{"n":2,"heading":"2. Listed does not mean machine-executable","shape":"A service (e.g., an [x402](https://probe402.com/glossary/x402) API endpoint) can be publicly listed, carry a price, and advertise machine payment — and still not publish enough of a request contract for an agent to construct a real call.\n\nAcross the x402 and [MPP](https://probe402.com/glossary/mpp) route [catalogues](https://probe402.com/glossary/catalogue) (Bazaar and mpp.dev), 16,197 routes were listed on 1 September, combined and de-duplicated. **1,521 of the 8,056 POST routes (18.9%) publish no usable request example.** Of those, 975 publish no example at all, 481 publish an empty `{}`, and 65 substitute a schema, an unsupported encoding or an unusable type. On the MPP rail the gap is structural: **794 of 794 catalogue-discovered POST routes publish nothing sendable**, because that catalogue's format has no request-example field at all — a statement about what the catalogue makes available, not about what each operator may publish elsewhere.\n\nThese are not dead listings. Knocked at the payment wall — a minimal call sending nothing, claiming liveness and the quote and nothing more — 598 of the 831 contract-less routes graded (72.0%, 31 August–1 September) returned a valid payment challenge containing a payable quote: price, asset, [pay-to](https://probe402.com/glossary/payto) address. The endpoint exists. The payment wall exists. What is missing is enough public request information to safely construct the call. (The share describes the routes selected for missing contracts, never the sector; \"not machine-executable from the published contract\" is the claim — *not buyable* is never the claim.)\n\n**Why it matters:** the catalogues list these routes as available, and this failure is invisible at the catalogue layer unless someone attempts to construct the actual request.\n\n**What it changes:** catalogue standards should treat executable request information as part of discoverability. A listing is not sufficient for machine integration unless an agent can construct the request from the published information."},{"n":3,"heading":"3. Infrastructure is more concentrated than catalogue diversity suggests","shape":"The x402 and MPP route catalogues (Bazaar and mpp.dev) list 16,197 routes across 1,768 hosts as of 1 September. That apparent breadth of listings compresses into a much smaller underlying infrastructure stack.\n\n**Settlement.** Most settlement routing cannot be identified from published payment challenges: 1,229 of 1,677 catalogue hosts (73.3%) publish no information identifying the party that would settle the payment — the [facilitator](https://probe402.com/glossary/facilitator). Among the hosts where routing is visible, Coinbase dominates: **405 of the 438 attributable hosts (92.5%) route to Coinbase** (next: PayAI, 38). Two things this figure is not: hosts bound to a facilitator are not settlement volume, and the invisible 73.3% are unknown, not Coinbase.\n\n**Gateways.** On the MPP rail, apparent brand diversity is mostly catalogue integration structure. 109 of 142 listed services (76.8%) are third-party gateway mounts by the catalogue's own `integration` field, and **978 of 1,456 endpoint rows (67.2%) are mounted through the gateway domains of Orthogonal, Locus and Tempo** — a statement about how the catalogue is integrated, not about economic control. The marquee names — Anthropic, OpenAI, Google Gemini, fal.ai, Firecrawl — appear as mounts on Tempo's gateway, not as first-party listings; first-party services number 33, unchanged across our reads since 20 August.\n\n**Operators.** Three operators — Orthogonal, delx, m2mcent — hold **2,979 of 16,197 listed routes (18.4%)** on four hostnames between them.\n\n**Why it matters:** headline provider counts suggest a broad market; the settlement, gateway and operator layers under it are each narrow.\n\n**What it changes:** catalogue diversity can therefore overstate infrastructure diversity: a failure, policy change, or access decision at a small number of underlying parties could affect a much larger apparent market."},{"n":4,"heading":"Other signals","shape":"- **Payment terms move under static listings.** Of 6,835 endpoints quoted 21–31 August (22,318 observations), 33 changed their payment address between observations (281 changes; one endpoint changed on nearly every observation) and 73 changed price. A buyer relying on a cached quote — price or address — could act on obsolete terms.\n- **The denominator will not hold still.** The listed universe moved 16,170 → 16,197 routes between two complete reads 93 minutes apart on 1 September. Because the catalogue denominator moves, market-size claims need a timestamp.\n- **Paid delivery is the open question.** Current ecosystem observability measures payment acceptance more readily than successful paid delivery; probe402's paid-delivery audit is not yet complete."},{"n":5,"heading":"What the sector should fix","shape":"1. **Health labels should expose freshness** — when the underlying observation was made, and what was actually tested.\n2. **Catalogue standards should require an executable request example or schema** — discovery should give an agent enough to construct the request.\n3. **Payment protocols should expose facilitator identity, or an equivalent settlement-routing identifier, where appropriate** — today's visible settlement attribution is too opaque."},{"n":6,"heading":"Method & limitations","shape":"MCRI rests on probe402's own observations of publicly listed machine-payment endpoints, made from a single vantage on a stated per-route cadence. Routes with a published request contract are executed as documented; contract-less routes are tested only at the payment wall. Observations are dated and retained; third-party figures are the providers' own published numbers, quoted with their denominators and our read date. Full methodology, corrections and dispute route: [probe402.com/method](https://probe402.com/method)."},{"n":7,"heading":"What comes next, and how to get the data","shape":"MCRI #002 (September) adds provider movers.\n\n**Free sample:** 100 observations at `⟦SAMPLE_URL⟧`.\nWe welcome corrections, questions, and suggestions for MCRI #002.\n**Get the underlying MCRI dataset**\n**Research dataset** — endpoint-level observations and historical data for independent analysis.\n**API access** — programmatic access to current and historical observations.\n**Intelligence subscription** — MCRI monthly, historical trends, provider benchmarking and alerts.\n**Custom research** — a specific question answered using the probe402 dataset.\n**Contact hello@probe402.com for dataset access, pricing, feedback, or suggestions for the next issue.**"}],"placeholders":[{"token":"SAMPLE_URL","quantity":"the free sample's permanent address, as printed in the issue","source":{"kind":"route","ref":"/publications/pub_mcri_001/r1/sample.csv","produces":"The 100 sampled observation rows themselves, at a revision-keyed address that is written once and never overwritten. The same bytes are named by hash in this entry's assets, so a reader can check the download against the record."},"resolved":"probe402.com/publications/pub_mcri_001/r1/sample.csv"}],"producers":{"evidence_version":1,"produced_at":"2026-09-01T18:18:18.724Z","window":{"days":["2026-08-21","2026-08-22","2026-08-23","2026-08-24","2026-08-25","2026-08-26","2026-08-27","2026-08-28","2026-08-29","2026-08-30","2026-08-31"],"heads":[{"day":"2026-08-21","head":"f0bca18bc38e9a7d202bedc12def262cd4a17ec61136ee07f911afc775bafc65"},{"day":"2026-08-22","head":"6c7307b90cd4526281918351d2db867a16649334670c2b6d8a181b7bee95fb5b"},{"day":"2026-08-23","head":"a02a3bb34b13ead82ab0c2e340005b7f50e342d939f6aff11c4cdc015b56fef0"},{"day":"2026-08-24","head":"4489acd993301d55ef9cfdbea259e8103caab82e388193029da9280b63e8a163"},{"day":"2026-08-25","head":"f1a092c896cc7fed856b277b9966271c97c6561448f068a97b406b3cf21fb7fe"},{"day":"2026-08-26","head":"6bb70b7cd09e8c4bf7fe11ba1f77088a8af1ad4be48ade32a9ba2eedadad44af"},{"day":"2026-08-27","head":"77ec31607a51c46b2cd07aa1f76374011d94e4aa41e7c539613cd69e4fc22af2"},{"day":"2026-08-28","head":"097310da6f9122009b8bc7d197ede621301835253b608631a34ec195e60e27f3"},{"day":"2026-08-29","head":"77f366f397c817bdf5f572e2fd6283a1720cccae91cc3a7fd6a4ee3fcb554656"},{"day":"2026-08-30","head":"7e1290e6b241e69d235ec7280791489e95753f8e96edb80ea2a3a8fea1b49fc6"},{"day":"2026-08-31","head":"65c6239ba624d23c3f6c07b9f2b302122f8152cafb4ca9a6ec0678f2f69180fd"}],"observation_rows":29022,"chain_contiguous":true},"runs":[{"id":"archive-mirror","ran":"One bounded copy of the published archive across the window, taken without writing anything — 348 observation files and 11 daily manifests, 359 objects, none absent — taken once and used as the frozen basis for the walks below, so those runs read identical bytes rather than a moving archive.","at":"2026-09-01T13:46:49.110Z","record_sha256":"b362e0295d1c1dca00020785d750b5cef8b1ecf5fb2225c6e4e4c13074904df9","record_bytes":68556},{"id":"claims-versus-observations","ran":"The join behind the issue's opening finding: every independently graded endpoint of the sealed window set beside one fresh dated read of the health-label surface, covering all 1,588 hosts we cover, with that surface's own last-checked stamp carried per row.","at":"2026-09-01T18:18:18.724Z","record_sha256":"158940a9769dd5b44614f9f9201235f708388e7b0fdae0a589e3fd063798be1a","record_bytes":3725998},{"id":"payment-wall-walk","ran":"The walk at the payment wall: what each route without a published request contract returned when knocked, partitioned by what a knock is permitted to grade, together with the outcome mix over the mirrored window.","at":"2026-09-01T13:52:29.605Z","record_sha256":"2c9f3d110901fa775a2ab6584ba5eff25cd1ebd325e92c1bf47cb493dee9155f","record_bytes":14459},{"id":"price-and-destination-walk","ran":"Every quoted observation of the window compared with the one before it on the same route: price movements and payment-address movements counted as separate classes, amounts diffed in atomic units and never across a change of asset, network or scheme.","at":"2026-09-01T13:53:45.456Z","record_sha256":"7b5a7bc5b4ec77190ae4048f1f0f492ea4b79ef30ca90290893aabd5ab2c93cc","record_bytes":245576},{"id":"catalogue-concentration","ran":"One fresh full read of both public route catalogues, combined and de-duplicated: route shares by operator, settlement routing attributed from published payment challenges against a re-fetched public registry, and the count of listed routes that publish no usable request example.","at":"2026-09-01T13:57:17.074Z","record_sha256":"b34ac16e2eba36d319f1423b2b2c348d8b4d2ad022c12e2eae6e9a41e3ce53c5","record_bytes":8333},{"id":"gateway-split","ran":"One fresh read of the second catalogue's service listing, split by that catalogue's own integration field: which services are mounted through a third party's gateway domain, and which are listed by the service itself.","at":"2026-09-01T13:58:25.709Z","record_sha256":"4c56c19a6605088f8cfdc3fca30095fe25ed46321f92b49d99e8c5e466133e71","record_bytes":15602},{"id":"catalogue-denominator","ran":"The dated, stamped union read every catalogue denominator in this issue is quoted against, and its cross-check against a second complete read taken 93 minutes later — which is where the moving-denominator signal comes from.","at":"2026-09-01T13:58:43.119Z","record_sha256":"60fe0415ac7e79c53c5e76f3a930acfbc87dc2b241ca4d8ca0ab61243f890fb9","record_bytes":1630},{"id":"sample-cut","ran":"The free sample's selection: fixed strata, a cap of two rows per endpoint per stratum, and a ranking seeded with the published manifest hash of the window's newest sealed day — so the 100 rows cannot have been steered without changing a hash we had already published.","at":"2026-09-01T14:00:42.591Z","record_sha256":"19db7400365394880bda794cafd56646b81251ccb66cf5725f04d0e4b7831f05","record_bytes":1807},{"id":"third-party-reads","ran":"One dated read of every third-party number this issue quotes, taken from each provider's own published surface with an identifying user agent, each response hashed and excerpted so the quotation can be checked against what was actually served.","at":"2026-09-01T13:48:52.696Z","record_sha256":"53dbfbc27286e3e303caa0a9bbe804b851883f4f04e608537f9a0b1ff280ed12","record_bytes":14946}],"figures":[{"figure":"The lead: 955 flagged endpoints, the 754 of them that quoted on every probe, and the 52 flagged the other way that never quoted","from":"claims-versus-observations"},{"figure":"Each provider's own cadence wording set beside its own freshness counter, and the coverage counter beside our cadence","from":"third-party-reads"},{"figure":"29,022 observations across 21–31 August, and the 7,225 independently graded endpoints compared","from":"claims-versus-observations"},{"figure":"The disagreement in both directions, and the label stamps that rule staleness out as the explanation","from":"claims-versus-observations"},{"figure":"16,197 listed routes across 1,768 hosts, and the 1,521 of 8,056 request-bearing routes that publish no usable request example","from":"catalogue-concentration"},{"figure":"The 598 of 831 contract-less routes that returned a payable quote when knocked at the payment wall","from":"payment-wall-walk"},{"figure":"1,229 of 1,677 hosts publishing nothing that identifies the settling party, and 405 of the 438 attributable ones routing to one of them","from":"catalogue-concentration"},{"figure":"109 of 142 listed services mounted through a third party, 978 of 1,456 rows on three gateway domains, and 33 services listed by themselves","from":"gateway-split"},{"figure":"2,979 of 16,197 routes held by three operators across four hostnames","from":"catalogue-concentration"},{"figure":"281 payment-address changes on 33 endpoints, and 73 price changes, over 22,318 quoted observations","from":"price-and-destination-walk"},{"figure":"The listed universe moving from 16,170 to 16,197 routes between two complete reads 93 minutes apart","from":"catalogue-denominator"},{"figure":"The 100 rows of the free sample, and the published head their selection is seeded with","from":"sample-cut"},{"figure":"The frozen archive bytes the three walks above were computed over","from":"archive-mirror"}],"corrections":[{"correction_id":"corr_2026-09-03_001","class":"instrument-error","record":"https://probe402.com/corrections","reads":"Quoted","endpoints_scoped":136,"rows_re_read":267,"applied_to":["claims-versus-observations","payment-wall-walk"],"superseded_by":"corr_2026-09-03_002"}],"not_measured":["A census of the distinct sellers that have actually been paid. No run in this issue produces it; it stays a named absence.","Paid delivery — whether a paid call returns what was bought. That audit has not run, and it is the absence this issue prints rather than fills.","A cadence statement for one of the four providers in the table. Their wording is rendered by a script we did not re-read on the day, so they carry no row there; their flags reach this issue through the join instead.","The share of listings whose curation state changed. The mechanism is measurable and the series stays unpublished while its terms question is open.","The share of listings with repeat payers. It was re-read and is available; the demand material left this issue, so no number from it is printed.","The specific strings behind two of the unusable request-example classes. The classes are counted; the individual examples were not re-derived for this issue.","A row of our own endpoint inside the free sample. The selection rule keeps and flags them, and this cut selected none."]},"does_not_say":["Nothing here is a statement that a sale completed. A payment challenge shows that a price was offered in a machine-readable form; it does not show that anything was paid or delivered.","The contract-less share describes the routes selected for missing request contracts. It is not a share of the sector, and it is not a statement that those routes cannot be bought.","Hosts bound to one settling party are not settlement volume, and the hosts that publish no routing information are unknown rather than attributed to anybody.","The gateway split is a statement about how a catalogue is integrated, not about who controls the economics of the services in it.","No endpoint and no operator is named. Every figure is a count over a stated population, and a count is not an accusation about any row inside it.","Third-party figures are those providers' own published numbers, quoted with their own denominators and the date we read them. They are not our measurements of those providers.","Whether a paid call returns what was bought is not measured here. That audit has not run, and the issue prints the absence rather than filling it."]},"object_key":"publications/pub_mcri_001/r1/report.json","report":{"schema_version":1,"publication_id":"pub_mcri_001","series":"Machine Commerce Reality Index","issue":1,"title":"Machine Commerce Reality Index: #001 — August 2026","headline":"What machine commerce claims — and what actually happens","revision":1,"status":"published","published_at":"2026-09-03T11:15:28.580Z","byline":"Zach Bucheister","contact":"hello@probe402.com","drafted_at":"2026-09-01T00:00:00.000Z","assets":{"pdf":{"url":"https://probe402.com/publications/pub_mcri_001/r1/mcri-001.pdf","sha256":"23b0c560912f5686f7d171a92e384876a6ef7b980c6c5a2d5627bf1b43104433","bytes":143709},"sample":{"url":"https://probe402.com/publications/pub_mcri_001/r1/sample.csv","sha256":"273e19d5f9724e962f9caa22e1340a84ffda83388bb28376eea0a1baebf55388","bytes":75652,"rows":100}},"subject":"MCRI measures what publicly listed [machine-payment](https://probe402.com/glossary/machine-payment) infrastructure claims, what it actually does, and where the two diverge.","population_rule":"Four populations, and no figure crosses between them. (1) The CATALOGUE population: every route listed on the two public route catalogues, combined and de-duplicated, at one stamped read on 2026-09-01 — the read the issue's route, host and service counts are quoted against, with a second complete read 93 minutes later kept as the cross-check. (2) The OBSERVED population: every endpoint on probe402's seed that produced at least one graded observation inside the sealed window of 21–31 August 2026, joined to a third party's published label for the row whose address is the exact route we probe; an endpoint we did not grade, or whose label read failed, is outside every joined figure and is counted rather than dropped. (3) The KNOCKED population: routes selected because they publish no usable request contract, graded at the payment wall and nowhere past it — every share over it describes those routes and never the sector. (4) The SAMPLE population: the observation rows of the same sealed window, less rows an operator's own instruction or a curator hold keeps out, cut by a published rule seeded with a published hash.","lead_shape":"Of 955 endpoints 402index labelled `degraded` or `down`, 754 — 79% — returned a valid payment challenge on every independent probe we made in late August. 52 labelled `healthy` never returned one.","sections":[{"n":1,"heading":"1. The observability layer is stale and wrong","shape":"Machine commerce already has an observability layer: health labels published by observability providers (e.g., [402index](https://402index.io), [PulseFeed](https://pulsefeed.dev), [x402-trust](https://x402.fuchss.app), [vet402](https://vet402.com)), which [agents](https://probe402.com/glossary/agent) use to route purchases. Two distinct failure modes show up in the observability layer: stale measurements and incorrect classifications.\n\n**Stale.** The observation may be old, or the provider's stated cadence may not be supported by its visible freshness evidence. The strongest cadence claims in the field sit beside counters that do not support them — or beside no counter at all (each provider's own published words beside its own published counter, all read 2026-09-01):\n\n| Provider | Their cadence language | Their own freshness counter, same surface |\n|---|---|---|\n| vet402 | `every catalog-listed x402 endpoint, probed daily` | 2,750 of 14,662 active endpoints measured in the last 7 days (18.8%) |\n| PulseFeed | probe `rotates through the registry over weeks` (PulseFeed's own note) | median age of a currently-served `live` verdict: 214 hours; oldest 17.9 days |\n| x402-trust | `probes every listed endpoint continuously` … `many times a day` | no freshness or coverage counter published anywhere on the surface |\n| probe402 | per-route cadence stated on each grade page (daily; a small weekly class) | 8,528 of 9,440 covered routes observed in the last 7 days (90.3%); 907 never yet observed |\n\nAn old observation is not necessarily a wrong one — a label can be weeks old and still true.\n\n**Wrong.** A fresh label can still contradict independent observation.\n\nAcross 21–31 August 2026 we recorded 29,022 observations and compared 7,225 independently graded endpoints with 402index's health labels. On 1 September the `last_checked` stamps on the disagreeing labels were hours old, so staleness does not explain what follows.\n\nThe disagreement ran in both directions — endpoints labelled bad that presented a valid [payment challenge](https://probe402.com/glossary/payment-challenge) containing a payable quote (the machine-readable response that shows a price was offered, not that anything was paid), and endpoints labelled healthy that did not:\n\n- **`degraded` / `down`:** 754 of 955 endpoints (79.0%) returned a valid payment challenge on every probe; 489 of them did so on three or more probes across at least two days.\n- **`healthy`:** 52 of 5,459 endpoints (1.0%) never returned a valid payment challenge; 15 more were unreachable on every probe.\n\n402index's `healthy` label means the endpoint answered HTTP 402 within its timeout; MCRI tests whether the response contained a payable quote. That definitional difference explains part of the gap, but it does not eliminate the underlying observation: the labels and the independently observed payment-wall behaviour can diverge. (Coverage widened during the window, so most endpoints carry days of record, not weeks; one of the 754 was graded on all eleven days.)\n\n**Why it matters:** an agent, or a buyer of agent infrastructure, routing on a health label may be relying on a measurement that is days or weeks old — or simply wrong when it was checked.\n\n**What it changes:** health labels need to expose when they were last tested and what the test actually established. Without that context, buyers cannot judge whether a label is safe to route on."},{"n":2,"heading":"2. Listed does not mean machine-executable","shape":"A service (e.g., an [x402](https://probe402.com/glossary/x402) API endpoint) can be publicly listed, carry a price, and advertise machine payment — and still not publish enough of a request contract for an agent to construct a real call.\n\nAcross the x402 and [MPP](https://probe402.com/glossary/mpp) route [catalogues](https://probe402.com/glossary/catalogue) (Bazaar and mpp.dev), 16,197 routes were listed on 1 September, combined and de-duplicated. **1,521 of the 8,056 POST routes (18.9%) publish no usable request example.** Of those, 975 publish no example at all, 481 publish an empty `{}`, and 65 substitute a schema, an unsupported encoding or an unusable type. On the MPP rail the gap is structural: **794 of 794 catalogue-discovered POST routes publish nothing sendable**, because that catalogue's format has no request-example field at all — a statement about what the catalogue makes available, not about what each operator may publish elsewhere.\n\nThese are not dead listings. Knocked at the payment wall — a minimal call sending nothing, claiming liveness and the quote and nothing more — 598 of the 831 contract-less routes graded (72.0%, 31 August–1 September) returned a valid payment challenge containing a payable quote: price, asset, [pay-to](https://probe402.com/glossary/payto) address. The endpoint exists. The payment wall exists. What is missing is enough public request information to safely construct the call. (The share describes the routes selected for missing contracts, never the sector; \"not machine-executable from the published contract\" is the claim — *not buyable* is never the claim.)\n\n**Why it matters:** the catalogues list these routes as available, and this failure is invisible at the catalogue layer unless someone attempts to construct the actual request.\n\n**What it changes:** catalogue standards should treat executable request information as part of discoverability. A listing is not sufficient for machine integration unless an agent can construct the request from the published information."},{"n":3,"heading":"3. Infrastructure is more concentrated than catalogue diversity suggests","shape":"The x402 and MPP route catalogues (Bazaar and mpp.dev) list 16,197 routes across 1,768 hosts as of 1 September. That apparent breadth of listings compresses into a much smaller underlying infrastructure stack.\n\n**Settlement.** Most settlement routing cannot be identified from published payment challenges: 1,229 of 1,677 catalogue hosts (73.3%) publish no information identifying the party that would settle the payment — the [facilitator](https://probe402.com/glossary/facilitator). Among the hosts where routing is visible, Coinbase dominates: **405 of the 438 attributable hosts (92.5%) route to Coinbase** (next: PayAI, 38). Two things this figure is not: hosts bound to a facilitator are not settlement volume, and the invisible 73.3% are unknown, not Coinbase.\n\n**Gateways.** On the MPP rail, apparent brand diversity is mostly catalogue integration structure. 109 of 142 listed services (76.8%) are third-party gateway mounts by the catalogue's own `integration` field, and **978 of 1,456 endpoint rows (67.2%) are mounted through the gateway domains of Orthogonal, Locus and Tempo** — a statement about how the catalogue is integrated, not about economic control. The marquee names — Anthropic, OpenAI, Google Gemini, fal.ai, Firecrawl — appear as mounts on Tempo's gateway, not as first-party listings; first-party services number 33, unchanged across our reads since 20 August.\n\n**Operators.** Three operators — Orthogonal, delx, m2mcent — hold **2,979 of 16,197 listed routes (18.4%)** on four hostnames between them.\n\n**Why it matters:** headline provider counts suggest a broad market; the settlement, gateway and operator layers under it are each narrow.\n\n**What it changes:** catalogue diversity can therefore overstate infrastructure diversity: a failure, policy change, or access decision at a small number of underlying parties could affect a much larger apparent market."},{"n":4,"heading":"Other signals","shape":"- **Payment terms move under static listings.** Of 6,835 endpoints quoted 21–31 August (22,318 observations), 33 changed their payment address between observations (281 changes; one endpoint changed on nearly every observation) and 73 changed price. A buyer relying on a cached quote — price or address — could act on obsolete terms.\n- **The denominator will not hold still.** The listed universe moved 16,170 → 16,197 routes between two complete reads 93 minutes apart on 1 September. Because the catalogue denominator moves, market-size claims need a timestamp.\n- **Paid delivery is the open question.** Current ecosystem observability measures payment acceptance more readily than successful paid delivery; probe402's paid-delivery audit is not yet complete."},{"n":5,"heading":"What the sector should fix","shape":"1. **Health labels should expose freshness** — when the underlying observation was made, and what was actually tested.\n2. **Catalogue standards should require an executable request example or schema** — discovery should give an agent enough to construct the request.\n3. **Payment protocols should expose facilitator identity, or an equivalent settlement-routing identifier, where appropriate** — today's visible settlement attribution is too opaque."},{"n":6,"heading":"Method & limitations","shape":"MCRI rests on probe402's own observations of publicly listed machine-payment endpoints, made from a single vantage on a stated per-route cadence. Routes with a published request contract are executed as documented; contract-less routes are tested only at the payment wall. Observations are dated and retained; third-party figures are the providers' own published numbers, quoted with their denominators and our read date. Full methodology, corrections and dispute route: [probe402.com/method](https://probe402.com/method)."},{"n":7,"heading":"What comes next, and how to get the data","shape":"MCRI #002 (September) adds provider movers.\n\n**Free sample:** 100 observations at `⟦SAMPLE_URL⟧`.\nWe welcome corrections, questions, and suggestions for MCRI #002.\n**Get the underlying MCRI dataset**\n**Research dataset** — endpoint-level observations and historical data for independent analysis.\n**API access** — programmatic access to current and historical observations.\n**Intelligence subscription** — MCRI monthly, historical trends, provider benchmarking and alerts.\n**Custom research** — a specific question answered using the probe402 dataset.\n**Contact hello@probe402.com for dataset access, pricing, feedback, or suggestions for the next issue.**"}],"placeholders":[{"token":"SAMPLE_URL","quantity":"the free sample's permanent address, as printed in the issue","source":{"kind":"route","ref":"/publications/pub_mcri_001/r1/sample.csv","produces":"The 100 sampled observation rows themselves, at a revision-keyed address that is written once and never overwritten. The same bytes are named by hash in this entry's assets, so a reader can check the download against the record."},"resolved":"probe402.com/publications/pub_mcri_001/r1/sample.csv"}],"producers":{"evidence_version":1,"produced_at":"2026-09-01T18:18:18.724Z","window":{"days":["2026-08-21","2026-08-22","2026-08-23","2026-08-24","2026-08-25","2026-08-26","2026-08-27","2026-08-28","2026-08-29","2026-08-30","2026-08-31"],"heads":[{"day":"2026-08-21","head":"f0bca18bc38e9a7d202bedc12def262cd4a17ec61136ee07f911afc775bafc65"},{"day":"2026-08-22","head":"6c7307b90cd4526281918351d2db867a16649334670c2b6d8a181b7bee95fb5b"},{"day":"2026-08-23","head":"a02a3bb34b13ead82ab0c2e340005b7f50e342d939f6aff11c4cdc015b56fef0"},{"day":"2026-08-24","head":"4489acd993301d55ef9cfdbea259e8103caab82e388193029da9280b63e8a163"},{"day":"2026-08-25","head":"f1a092c896cc7fed856b277b9966271c97c6561448f068a97b406b3cf21fb7fe"},{"day":"2026-08-26","head":"6bb70b7cd09e8c4bf7fe11ba1f77088a8af1ad4be48ade32a9ba2eedadad44af"},{"day":"2026-08-27","head":"77ec31607a51c46b2cd07aa1f76374011d94e4aa41e7c539613cd69e4fc22af2"},{"day":"2026-08-28","head":"097310da6f9122009b8bc7d197ede621301835253b608631a34ec195e60e27f3"},{"day":"2026-08-29","head":"77f366f397c817bdf5f572e2fd6283a1720cccae91cc3a7fd6a4ee3fcb554656"},{"day":"2026-08-30","head":"7e1290e6b241e69d235ec7280791489e95753f8e96edb80ea2a3a8fea1b49fc6"},{"day":"2026-08-31","head":"65c6239ba624d23c3f6c07b9f2b302122f8152cafb4ca9a6ec0678f2f69180fd"}],"observation_rows":29022,"chain_contiguous":true},"runs":[{"id":"archive-mirror","ran":"One bounded copy of the published archive across the window, taken without writing anything — 348 observation files and 11 daily manifests, 359 objects, none absent — taken once and used as the frozen basis for the walks below, so those runs read identical bytes rather than a moving archive.","at":"2026-09-01T13:46:49.110Z","record_sha256":"b362e0295d1c1dca00020785d750b5cef8b1ecf5fb2225c6e4e4c13074904df9","record_bytes":68556},{"id":"claims-versus-observations","ran":"The join behind the issue's opening finding: every independently graded endpoint of the sealed window set beside one fresh dated read of the health-label surface, covering all 1,588 hosts we cover, with that surface's own last-checked stamp carried per row.","at":"2026-09-01T18:18:18.724Z","record_sha256":"158940a9769dd5b44614f9f9201235f708388e7b0fdae0a589e3fd063798be1a","record_bytes":3725998},{"id":"payment-wall-walk","ran":"The walk at the payment wall: what each route without a published request contract returned when knocked, partitioned by what a knock is permitted to grade, together with the outcome mix over the mirrored window.","at":"2026-09-01T13:52:29.605Z","record_sha256":"2c9f3d110901fa775a2ab6584ba5eff25cd1ebd325e92c1bf47cb493dee9155f","record_bytes":14459},{"id":"price-and-destination-walk","ran":"Every quoted observation of the window compared with the one before it on the same route: price movements and payment-address movements counted as separate classes, amounts diffed in atomic units and never across a change of asset, network or scheme.","at":"2026-09-01T13:53:45.456Z","record_sha256":"7b5a7bc5b4ec77190ae4048f1f0f492ea4b79ef30ca90290893aabd5ab2c93cc","record_bytes":245576},{"id":"catalogue-concentration","ran":"One fresh full read of both public route catalogues, combined and de-duplicated: route shares by operator, settlement routing attributed from published payment challenges against a re-fetched public registry, and the count of listed routes that publish no usable request example.","at":"2026-09-01T13:57:17.074Z","record_sha256":"b34ac16e2eba36d319f1423b2b2c348d8b4d2ad022c12e2eae6e9a41e3ce53c5","record_bytes":8333},{"id":"gateway-split","ran":"One fresh read of the second catalogue's service listing, split by that catalogue's own integration field: which services are mounted through a third party's gateway domain, and which are listed by the service itself.","at":"2026-09-01T13:58:25.709Z","record_sha256":"4c56c19a6605088f8cfdc3fca30095fe25ed46321f92b49d99e8c5e466133e71","record_bytes":15602},{"id":"catalogue-denominator","ran":"The dated, stamped union read every catalogue denominator in this issue is quoted against, and its cross-check against a second complete read taken 93 minutes later — which is where the moving-denominator signal comes from.","at":"2026-09-01T13:58:43.119Z","record_sha256":"60fe0415ac7e79c53c5e76f3a930acfbc87dc2b241ca4d8ca0ab61243f890fb9","record_bytes":1630},{"id":"sample-cut","ran":"The free sample's selection: fixed strata, a cap of two rows per endpoint per stratum, and a ranking seeded with the published manifest hash of the window's newest sealed day — so the 100 rows cannot have been steered without changing a hash we had already published.","at":"2026-09-01T14:00:42.591Z","record_sha256":"19db7400365394880bda794cafd56646b81251ccb66cf5725f04d0e4b7831f05","record_bytes":1807},{"id":"third-party-reads","ran":"One dated read of every third-party number this issue quotes, taken from each provider's own published surface with an identifying user agent, each response hashed and excerpted so the quotation can be checked against what was actually served.","at":"2026-09-01T13:48:52.696Z","record_sha256":"53dbfbc27286e3e303caa0a9bbe804b851883f4f04e608537f9a0b1ff280ed12","record_bytes":14946}],"figures":[{"figure":"The lead: 955 flagged endpoints, the 754 of them that quoted on every probe, and the 52 flagged the other way that never quoted","from":"claims-versus-observations"},{"figure":"Each provider's own cadence wording set beside its own freshness counter, and the coverage counter beside our cadence","from":"third-party-reads"},{"figure":"29,022 observations across 21–31 August, and the 7,225 independently graded endpoints compared","from":"claims-versus-observations"},{"figure":"The disagreement in both directions, and the label stamps that rule staleness out as the explanation","from":"claims-versus-observations"},{"figure":"16,197 listed routes across 1,768 hosts, and the 1,521 of 8,056 request-bearing routes that publish no usable request example","from":"catalogue-concentration"},{"figure":"The 598 of 831 contract-less routes that returned a payable quote when knocked at the payment wall","from":"payment-wall-walk"},{"figure":"1,229 of 1,677 hosts publishing nothing that identifies the settling party, and 405 of the 438 attributable ones routing to one of them","from":"catalogue-concentration"},{"figure":"109 of 142 listed services mounted through a third party, 978 of 1,456 rows on three gateway domains, and 33 services listed by themselves","from":"gateway-split"},{"figure":"2,979 of 16,197 routes held by three operators across four hostnames","from":"catalogue-concentration"},{"figure":"281 payment-address changes on 33 endpoints, and 73 price changes, over 22,318 quoted observations","from":"price-and-destination-walk"},{"figure":"The listed universe moving from 16,170 to 16,197 routes between two complete reads 93 minutes apart","from":"catalogue-denominator"},{"figure":"The 100 rows of the free sample, and the published head their selection is seeded with","from":"sample-cut"},{"figure":"The frozen archive bytes the three walks above were computed over","from":"archive-mirror"}],"corrections":[{"correction_id":"corr_2026-09-03_001","class":"instrument-error","record":"https://probe402.com/corrections","reads":"Quoted","endpoints_scoped":136,"rows_re_read":267,"applied_to":["claims-versus-observations","payment-wall-walk"]}],"not_measured":["A census of the distinct sellers that have actually been paid. No run in this issue produces it; it stays a named absence.","Paid delivery — whether a paid call returns what was bought. That audit has not run, and it is the absence this issue prints rather than fills.","A cadence statement for one of the four providers in the table. Their wording is rendered by a script we did not re-read on the day, so they carry no row there; their flags reach this issue through the join instead.","The share of listings whose curation state changed. The mechanism is measurable and the series stays unpublished while its terms question is open.","The share of listings with repeat payers. It was re-read and is available; the demand material left this issue, so no number from it is printed.","The specific strings behind two of the unusable request-example classes. The classes are counted; the individual examples were not re-derived for this issue.","A row of our own endpoint inside the free sample. The selection rule keeps and flags them, and this cut selected none."]},"does_not_say":["Nothing here is a statement that a sale completed. A payment challenge shows that a price was offered in a machine-readable form; it does not show that anything was paid or delivered.","The contract-less share describes the routes selected for missing request contracts. It is not a share of the sector, and it is not a statement that those routes cannot be bought.","Hosts bound to one settling party are not settlement volume, and the hosts that publish no routing information are unknown rather than attributed to anybody.","The gateway split is a statement about how a catalogue is integrated, not about who controls the economics of the services in it.","No endpoint and no operator is named. Every figure is a count over a stated population, and a count is not an accusation about any row inside it.","Third-party figures are those providers' own published numbers, quoted with their own denominators and the date we read them. They are not our measurements of those providers.","Whether a paid call returns what was bought is not measured here. That audit has not run, and the issue prints the absence rather than filling it."]},"published":true,"gate":{"publishable":true,"unresolved":[],"unbuilt":[],"sections_that_do_not_render":[],"checks":10,"says":"Every one of the 1 placeholder(s) carries a value and a source that exists. The report can be published; publishing it is a separate act."},"renders":{"lead":{"text":"Of 955 endpoints 402index labelled `degraded` or `down`, 754 — 79% — returned a valid payment challenge on every independent probe we made in late August. 52 labelled `healthy` never returned one.","open":[]},"sections":[{"n":1,"heading":"1. The observability layer is stale and wrong","text":"Machine commerce already has an observability layer: health labels published by observability providers (e.g., [402index](https://402index.io), [PulseFeed](https://pulsefeed.dev), [x402-trust](https://x402.fuchss.app), [vet402](https://vet402.com)), which [agents](https://probe402.com/glossary/agent) use to route purchases. Two distinct failure modes show up in the observability layer: stale measurements and incorrect classifications.\n\n**Stale.** The observation may be old, or the provider's stated cadence may not be supported by its visible freshness evidence. The strongest cadence claims in the field sit beside counters that do not support them — or beside no counter at all (each provider's own published words beside its own published counter, all read 2026-09-01):\n\n| Provider | Their cadence language | Their own freshness counter, same surface |\n|---|---|---|\n| vet402 | `every catalog-listed x402 endpoint, probed daily` | 2,750 of 14,662 active endpoints measured in the last 7 days (18.8%) |\n| PulseFeed | probe `rotates through the registry over weeks` (PulseFeed's own note) | median age of a currently-served `live` verdict: 214 hours; oldest 17.9 days |\n| x402-trust | `probes every listed endpoint continuously` … `many times a day` | no freshness or coverage counter published anywhere on the surface |\n| probe402 | per-route cadence stated on each grade page (daily; a small weekly class) | 8,528 of 9,440 covered routes observed in the last 7 days (90.3%); 907 never yet observed |\n\nAn old observation is not necessarily a wrong one — a label can be weeks old and still true.\n\n**Wrong.** A fresh label can still contradict independent observation.\n\nAcross 21–31 August 2026 we recorded 29,022 observations and compared 7,225 independently graded endpoints with 402index's health labels. On 1 September the `last_checked` stamps on the disagreeing labels were hours old, so staleness does not explain what follows.\n\nThe disagreement ran in both directions — endpoints labelled bad that presented a valid [payment challenge](https://probe402.com/glossary/payment-challenge) containing a payable quote (the machine-readable response that shows a price was offered, not that anything was paid), and endpoints labelled healthy that did not:\n\n- **`degraded` / `down`:** 754 of 955 endpoints (79.0%) returned a valid payment challenge on every probe; 489 of them did so on three or more probes across at least two days.\n- **`healthy`:** 52 of 5,459 endpoints (1.0%) never returned a valid payment challenge; 15 more were unreachable on every probe.\n\n402index's `healthy` label means the endpoint answered HTTP 402 within its timeout; MCRI tests whether the response contained a payable quote. That definitional difference explains part of the gap, but it does not eliminate the underlying observation: the labels and the independently observed payment-wall behaviour can diverge. (Coverage widened during the window, so most endpoints carry days of record, not weeks; one of the 754 was graded on all eleven days.)\n\n**Why it matters:** an agent, or a buyer of agent infrastructure, routing on a health label may be relying on a measurement that is days or weeks old — or simply wrong when it was checked.\n\n**What it changes:** health labels need to expose when they were last tested and what the test actually established. Without that context, buyers cannot judge whether a label is safe to route on.","open":[]},{"n":2,"heading":"2. Listed does not mean machine-executable","text":"A service (e.g., an [x402](https://probe402.com/glossary/x402) API endpoint) can be publicly listed, carry a price, and advertise machine payment — and still not publish enough of a request contract for an agent to construct a real call.\n\nAcross the x402 and [MPP](https://probe402.com/glossary/mpp) route [catalogues](https://probe402.com/glossary/catalogue) (Bazaar and mpp.dev), 16,197 routes were listed on 1 September, combined and de-duplicated. **1,521 of the 8,056 POST routes (18.9%) publish no usable request example.** Of those, 975 publish no example at all, 481 publish an empty `{}`, and 65 substitute a schema, an unsupported encoding or an unusable type. On the MPP rail the gap is structural: **794 of 794 catalogue-discovered POST routes publish nothing sendable**, because that catalogue's format has no request-example field at all — a statement about what the catalogue makes available, not about what each operator may publish elsewhere.\n\nThese are not dead listings. Knocked at the payment wall — a minimal call sending nothing, claiming liveness and the quote and nothing more — 598 of the 831 contract-less routes graded (72.0%, 31 August–1 September) returned a valid payment challenge containing a payable quote: price, asset, [pay-to](https://probe402.com/glossary/payto) address. The endpoint exists. The payment wall exists. What is missing is enough public request information to safely construct the call. (The share describes the routes selected for missing contracts, never the sector; \"not machine-executable from the published contract\" is the claim — *not buyable* is never the claim.)\n\n**Why it matters:** the catalogues list these routes as available, and this failure is invisible at the catalogue layer unless someone attempts to construct the actual request.\n\n**What it changes:** catalogue standards should treat executable request information as part of discoverability. A listing is not sufficient for machine integration unless an agent can construct the request from the published information.","open":[]},{"n":3,"heading":"3. Infrastructure is more concentrated than catalogue diversity suggests","text":"The x402 and MPP route catalogues (Bazaar and mpp.dev) list 16,197 routes across 1,768 hosts as of 1 September. That apparent breadth of listings compresses into a much smaller underlying infrastructure stack.\n\n**Settlement.** Most settlement routing cannot be identified from published payment challenges: 1,229 of 1,677 catalogue hosts (73.3%) publish no information identifying the party that would settle the payment — the [facilitator](https://probe402.com/glossary/facilitator). Among the hosts where routing is visible, Coinbase dominates: **405 of the 438 attributable hosts (92.5%) route to Coinbase** (next: PayAI, 38). Two things this figure is not: hosts bound to a facilitator are not settlement volume, and the invisible 73.3% are unknown, not Coinbase.\n\n**Gateways.** On the MPP rail, apparent brand diversity is mostly catalogue integration structure. 109 of 142 listed services (76.8%) are third-party gateway mounts by the catalogue's own `integration` field, and **978 of 1,456 endpoint rows (67.2%) are mounted through the gateway domains of Orthogonal, Locus and Tempo** — a statement about how the catalogue is integrated, not about economic control. The marquee names — Anthropic, OpenAI, Google Gemini, fal.ai, Firecrawl — appear as mounts on Tempo's gateway, not as first-party listings; first-party services number 33, unchanged across our reads since 20 August.\n\n**Operators.** Three operators — Orthogonal, delx, m2mcent — hold **2,979 of 16,197 listed routes (18.4%)** on four hostnames between them.\n\n**Why it matters:** headline provider counts suggest a broad market; the settlement, gateway and operator layers under it are each narrow.\n\n**What it changes:** catalogue diversity can therefore overstate infrastructure diversity: a failure, policy change, or access decision at a small number of underlying parties could affect a much larger apparent market.","open":[]},{"n":4,"heading":"Other signals","text":"- **Payment terms move under static listings.** Of 6,835 endpoints quoted 21–31 August (22,318 observations), 33 changed their payment address between observations (281 changes; one endpoint changed on nearly every observation) and 73 changed price. A buyer relying on a cached quote — price or address — could act on obsolete terms.\n- **The denominator will not hold still.** The listed universe moved 16,170 → 16,197 routes between two complete reads 93 minutes apart on 1 September. Because the catalogue denominator moves, market-size claims need a timestamp.\n- **Paid delivery is the open question.** Current ecosystem observability measures payment acceptance more readily than successful paid delivery; probe402's paid-delivery audit is not yet complete.","open":[]},{"n":5,"heading":"What the sector should fix","text":"1. **Health labels should expose freshness** — when the underlying observation was made, and what was actually tested.\n2. **Catalogue standards should require an executable request example or schema** — discovery should give an agent enough to construct the request.\n3. **Payment protocols should expose facilitator identity, or an equivalent settlement-routing identifier, where appropriate** — today's visible settlement attribution is too opaque.","open":[]},{"n":6,"heading":"Method & limitations","text":"MCRI rests on probe402's own observations of publicly listed machine-payment endpoints, made from a single vantage on a stated per-route cadence. Routes with a published request contract are executed as documented; contract-less routes are tested only at the payment wall. Observations are dated and retained; third-party figures are the providers' own published numbers, quoted with their denominators and our read date. Full methodology, corrections and dispute route: [probe402.com/method](https://probe402.com/method).","open":[]},{"n":7,"heading":"What comes next, and how to get the data","text":"MCRI #002 (September) adds provider movers.\n\n**Free sample:** 100 observations at `probe402.com/publications/pub_mcri_001/r1/sample.csv`.\nWe welcome corrections, questions, and suggestions for MCRI #002.\n**Get the underlying MCRI dataset**\n**Research dataset** — endpoint-level observations and historical data for independent analysis.\n**API access** — programmatic access to current and historical observations.\n**Intelligence subscription** — MCRI monthly, historical trends, provider benchmarking and alerts.\n**Custom research** — a specific question answered using the probe402 dataset.\n**Contact hello@probe402.com for dataset access, pricing, feedback, or suggestions for the next issue.**","open":[]}]},"says":"The report below is as published, read back out of the archive it was written to. It is never re-cut: a figure we no longer hold is corrected by appending the next revision beside it, and this address does not move when that happens.","corrections":[]},"publication_rules":{"permanence":"One publication, one address, for as long as this service exists. The address does not change when the report is corrected.","corrections":"A published report is never re-cut. A correction appends the next revision beside it, naming what changed, why, and the single figure that moved. Every earlier revision keeps its own write-once object.","placeholders":"A report does not publish while any quantity in it is unfilled, and every quantity names the command or route that fills it. A figure whose source does not exist blocks the report rather than being quietly dropped: a source that looks wired and is not is worse than an empty one.","denominators":"Every figure carries the population it was computed over, in the same sentence or the same subtitle. A coverage claim is never wider than the seed it was drawn from.","vocabulary":"A reading is described in the archive's five capture-time words and no others. There is no healthy or dead pair in the data, and inventing one on a report would be this instrument making a claim its own records refuse to make."},"corrections":{"says":"A correction to a published report never re-cuts it. The original object stays exactly as published and the correction sits beside it as the next revision.","on_record":0,"records":[],"forward_pointer":null,"how_to_disagree":"https://probe402.com/corrections"},"instrument":[],"instrument_note":"Every dependency this route reads answered. The counts above are real reads.","chain":"https://probe402.com/chain"}