API estática · corte 2026-10-03

Catálogo machine-readable

El HTML es público. El mismo build escribe un JSON para agentes y scripts. No hay API key.

Endpoints

  • /rieles.json — catálogo canónico
  • /catalog.json — alias idéntico
  • /llms.txt — índice de gemelos markdown
  • /api/lookup — búsqueda paga (x402 v2 Exact). Sin status: $0.005 (amount 5000). Con status (SKU#5 x402-live): $0.01 (amount 10000). status solo no alcanza — hace falta q o rail (400). Sin pago, 402. No vuelca el catálogo. Smoke: ?rail=x402&status=produccion&limit=5.
  • /api/condition/settle-ready — condición AR settle-ready (x402 v2 Exact, $0.02 USDC en Base). Sin rail o wants_usdc_settle responde 400; sin pago, 402. Ruleset ar-settle-ready-v1 (reglas explícitas, no oráculo).
  • /api/rail/matrix — matriz de rieles AR (x402 v2 Exact, $0.01 USDC en Base). case inválido responde 400; sin pago, 402. Ruleset ar-rail-matrix-v1 (settle ≠ consent).
  • /api/liveness — liveness de URLs del catálogo (x402 v2 Exact, $0.02 USDC en Base). Solo POST con { ids: string[] } (1–10). GET responde 405; body inválido responde 400 antes del cobro. Ruleset riel-liveness-v1 (solo URLs resueltas del catálogo).
  • /api/reserve/brief — brief informativo de auth-capture (x402 v2 Exact, $0.01 USDC en Base). resource ausente o que no sea URL http(s) responde 400 antes del cobro; sin pago, 402. Ruleset x402-auth-capture-brief-v1 (no hold on-chain, no reserva).
  • /api/settle/receipt — recibo informativo post-settle (x402 v2 Exact, $0.01 USDC en Base). tx ausente o que no sea 0x + 64 hex responde 400 antes del cobro; sin pago, 402. Ruleset settle-receipt-v1 (settle ≠ consent; no re-oráculo Basescan).
  • /api/mandate/scope — verificación de Intent Mandate v0.1.0 / Mandato AR (x402 v2 Exact, $0.02 USDC en Base). resource, price_usdc y mandate ausentes o inválidos responden 400 antes del cobro; sin pago, 402. Ruleset mandate-scope-v1 (scope ≠ create/sign).
  • /api/reserve/hold — HOLD live auth-capture (x402 v2 auth-capture, no exact, $0.05 USDC en Base). Sin query requerida; sin pago, 402. Poll: ?checkoutId=. Ruleset x402-auth-capture-hold-v1 (200 = HOLD; settle = checkout COMPLETED; distinto de brief #16).
  • /openapi.json y /.well-known/x402 — discovery

CORS y tipo

Respuesta Content-Type: application/json; charset=utf-8 y Access-Control-Allow-Origin: * (también en public/_headers para Cloudflare Pages).

Forma

{
  "corte": "2026-10-03",
  "stats": { "unique_fichas": 668, "raw_total": 697 },
  "fichas": [{
    "slug": "openai",
    "name": "OpenAI",
    "rails": ["acp", "ap2", "mpp"],
    "status": "anunciado",
    "statuses": ["produccion", "anunciado"],
    "one_liner": "...",
    "source_url": "...",
    "detected_at": "2026-08-21",
    "last_reviewed": "2026-10-03",
    "evidences": [{ "rail": "ap2", "status": "anunciado", "...": "..." }]
  }]
}

status de la ficha es el más conservador entre sus rieles (anunciado < piloto < producción). El detalle por riel está en evidences[]. Precio y red solo aparecen si la tabla origen los tenía.

668 fichas únicas a partir de 697 filas. Metodología: /metodologia/.