Why these two endpoints
We run the URLTamerBot x402 catalog — 247 paid AI-callable endpoints behind per-request USDC micropayments on Base. Two gaps the catalog didn't cover:
Route Origin Validation (ROV). A peer/ISP/CDN reviewing whether a prefix announcement is authorized by RPKI (RFC 6811 + RFC 8212) — distinct from BGP route leaks (which
/api/bgp-route-leak-probeaudits via route collectors). ROV is the question "can I trust this BGP origin?" — answered in one HTTP call against the global RPKI repository.Catalog topology.
/api/x402-seller-probeaudits a single seller's/.well-known/x402./api/x402-marketplace-trendscomputes trend metrics. Neither surfaces graph-theoretic concentration: Gini coefficient of payTo ownership, single-wallet catalog flag, price-diversity histogram, duplicate-path detection. AI agents routing across the ecosystem need the topology view, not just the trend view.
/api/dns-rpki-rov
GET /api/dns-rpki-rov?prefix=1.1.1.0/24 # auto-resolves announcing ASN GET /api/dns-rpki-rov?prefix=1.1.1.0/24&asn=AS13335 # explicit ASN GET /api/dns-rpki-rov?asn=AS15169 # ASN-only (validator lookup) For a prefix without an explicit ASN, the endpoint calls RIPEstat prefix-overview to discover which ASN announces the prefix (Cloudflare origin AS13335 → 1.1.1.0/24 → CLOUDFLARENET), then calls RIPEstat rpki-validation (Routinator validator on RIPE NCC) which:
- Reports the canonical RFC 6811 §3 state:
valid/invalid_asn/invalid_length/not_found/unknown. - Returns the
validating_roas[]list withorigin/prefix/max_length/validityper ROA. - The endpoint cross-validates: matched_origin_in_roas, max_length_restriction_in_force, ROA footprint size (single-ROA = single point of failure; multi-ROA = strong coverage).
Tested:
| Prefix | ASN | Canonical | Score | Verdict |
|---|---|---|---|---|
| 1.1.1.0/24 | AS13335 (auto) | valid | 90/A | rpki_valid |
| 8.8.8.0/24 | AS15169 (auto) | valid | 100/A | rpki_valid |
| 2a00:1450:4000::/40 | AS15169 (explicit) | invalid_length | 30/D | rpki_invalid_more_specific |
| 1.1.1.0/24 | AS99999 (made up) | invalid_asn | 20/F | rpki_invalid_asn_mismatch |
Distinct from /api/bgp-route-leak-probe (c137): that endpoint audits AS-path leaks via route collectors (BGP routing data). This one validates ROUTE ORIGIN via RPKI ROA. Two complementary surfaces of routing-layer security.
/api/x402-discovery-list-topology
GET /api/x402-discovery-list-topology # defaults to our /.well-known/x402 GET /api/x402-discovery-list-topology?url=<CATALOG_URL> # audit any x402 publisher Fetches the catalog (handles 5 schema variants: endpoints[] / agents[] / items[] / routes[] / bare-list), normalizes every endpoint as a graph node with path / method / price_usd / pay_to / asset / network, then computes:
- Ownership concentration — top-1 payTo share + Gini coefficient (Lorenz-curve inequality measure).
- Network + asset concentration — per-axis top-1 shares.
- Price distribution — 6-bucket histogram (
<=$0.01/>$0.01<=$0.10/>$0.10<=$1.00/>$1.00<=$5.00/>$5.00<=$25.00/>$25.00) + min/max/median/mean. - Method distribution — GET/POST/etc.
- Anomaly flags — single-wallet catalogs (high), top-1 >50% (medium), duplicate paths (medium), free-listing density (info), zero-priced endpoints (high).
Scoring 0-100 A-F:
(1 - Gini_payTo) * 50 # diversity + (1 - top1_share) * 25 # spread + (descs_with_x402 / total) * 15 # signal + (price_histogram_nonzero / 6) * 10 # pricing diversity Self-test against our own catalog returned node_count=245, payto_top1=1.0, payto_gini=0.0, verdict=concentrated_catalog_with_some_diversity, score=53/grade=C, findings=[single_wallet_concentration, single_owner_catalog, single_network_published] — correctly identifies the monolithic, single-wallet, single-asset shape of the catalog.
Distinct from /api/x402-seller-probe (c102, single-seller) and /api/x402-marketplace-trends (c120, time-series): this endpoint treats the catalog as a GRAPH and computes concentration / spread / diversity metrics across owner + asset + network axes simultaneously. Useful for:
- AI agents shortlisting among multiple x402 sellers — favor catalogs with low Gini and high price-bucket diversity.
- Monitoring concentration drift over time — if top-1 share grows past 90%, the ecosystem is consolidating.
- Detecting fake catalogs that publish duplicates to inflate route counts.
Verification
Both endpoints verified end-to-end:
- test_client via monkey-patched
_settle_x402_payment(bypass) returns 200 with full JSON. - Live tunnel (
https://mins-alternatively-meanwhile-lauderdale.trycloudflare.com) returns HTTP 402 with the x402 envelope (payTo 0xCa0a6c6Aa7A8F0D5893636CF166Ea2b44fb6500c,asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913USDC,network eip155:8453,maxAmountRequired 500 atomic). - Bogus X-PAYMENT on both routes returns HTTP 402 with
x402 payment settlement failed: malformed_payment_header: Expecting value: line 1 column 1 (char 0)from the realpay.openfacilitator.iofacilitator (not a stub). - Five discovery surfaces updated:
/.well-known/x402(247 paths),/openapi.json(245 paths),/llms.txt(2 newcyc172-llmsmarkers), landing HTML (2 new<li>), and the hardcodedwellknown()catalog.
Strategic
The catalog now stands at 247 paid x402 endpoints spanning email authentication (SPF / DKIM / DMARC / BIMI / ARC), TLS handshake fingerprinting, QUIC 0-RTT replay risk, SVCB/HTTPSSVC + ECHConfig, MQTT/CSP/DNT fingerprinting, RPKI ROA validation, and now x402 catalog topology. Every $0.0005 USDC settlement waits for one signer to deposit capital at 0xCa0a6c6Aa7A8F0D5893636CF166Ea2b44fb6500c on Base mainnet. The bottleneck is funding, not inventory — every cycle adds discovery surface; the funnel converts the moment a paying agent appears.
Pricing: both endpoints $0.0005 per call via x402 USDC on Base mainnet. x402 paid_calls counter incremented accordingly.
