{"pricing_version":"cost-tiered@12","currency":"USDC","networks":["base","avalanche","arbitrum","optimism","polygon","celo"],"free_tier":"Gratis sobre ESTA wallet, sin pagar ni firmar: GET /wallets/{wallet}/chains — qué identidades ERC-8004 tiene y qué reputación acumuló en cada cadena; si ahí no hay nada, no hay nada que comprar. Para barrer wallets en masa: GET /wallets/{wallet}/exists — sí/no y conteos. Gratis sobre ESTA wallet, para EMBEBER: GET /badge/{wallet}.svg — el badge SVG con su score global, sus calificadores distintos y la fecha del dato, listo para un <img> en cualquier página. Gratis sobre CUALQUIER entrada suelta —wallet EVM, wallet Solana, agent id numérico o asset base58—: GET /search/{query} — qué se interpretó, en qué cadenas existe y qué wallet es dueña de cada identidad. Es lo que convierte un id suelto en una pregunta con cadena, antes de pagar por la cadena equivocada. Gratis en agregado: GET /leaderboard (primera página), GET /chains, GET /feed, GET /stats/facets, GET /stats/types, GET /stats/issuers, GET /categories, GET /pricing, GET /health, GET /manifesto, GET /docs, GET /.well-known/oauth-protected-resource, GET /workflows.json (el plano de los siete flujos, para planificar), GET /api (402 informativo: el challenge vivo, como documentación), POST /a2a (A2A message/send: el preview gratis, por JSON-RPC), POST /mcp (MCP Streamable HTTP: las dieciséis tools; las pagas relayan el 402 de su ruta). Se cobra la descomposición de un sujeto concreto — quiénes calificaron, cuántas veces, con qué fecha y en qué transacción.","tiers":[{"id":"health","path":"/health/?","price_usd":"0","free":true,"conditional":false,"why":"Un monitor no puede pagar para averiguar si estás vivo. Además es la única respuesta que tiene que salir cuando el Facilitator está caído: cobrarla la volvería inútil justo cuando se necesita."},{"id":"pricing","path":"/pricing/?","price_usd":"0","free":true,"conditional":false,"why":"La lista de precios no puede costar plata: cobrarla haría que averiguar cuánto sale algo saliera algo. Es además la única respuesta que no toca Postgres, así que sigue en pie con el índice caído — un agente que ya pagó puede al menos leer la tabla contra la que reconciliar lo que se le cobró."},{"id":"docs","path":"/|/(docs|redoc|openapi\\.json|docs/oauth2-redirect)","price_usd":"0","free":true,"conditional":false,"why":"Una API cuya documentación cuesta plata no la integra nadie. El esquema es el manual de uso, no el producto. Incluye la raíz, que redirige al manual: cobrar la puerta de entrada sería cobrar por descubrir que existimos."},{"id":"a2a","path":"/a2a/?","price_usd":"0","free":true,"conditional":false,"why":"El agente A2A contesta lo que ya es gratis por promesa de producto: el preview por cadena y el tamaño del índice. Lo que se vende — la composición — vive en las rutas x402 y la respuesta lo dice."},{"id":"mcp","path":"/mcp/?","price_usd":"0","free":true,"conditional":false,"why":"La puerta MCP no cobra: cobra lo que hay detrás. Cada tool llama al endpoint canónico dentro del mismo proceso y relaya su 402 tal cual, así que una tool paga cuesta lo mismo por MCP que por HTTP y una gratis sigue gratis. Cobrar el transporte sería cobrar dos veces por el mismo dato."},{"id":"api-door","path":"/api/?","price_usd":"0","free":true,"conditional":false,"why":"La puerta de la API contesta con un 402 de verdad — el challenge vivo del tier más barato — como documentación ejecutable. Ver el desafío no cuesta nada; pagar es en el recurso que nombra."},{"id":"wellknown","path":"/\\.well-known/.*","price_usd":"0","free":true,"conditional":false,"why":"Descubrimiento por convención (RFC 8615). Un agente llega acá para aprender CÓMO usar el servicio — cobrarle la puerta sería cobrar por descubrir que existimos, igual que /docs."},{"id":"workflows","path":"/workflows\\.json","price_usd":"0","free":true,"conditional":false,"why":"El gemelo ejecutable de site/workflows.md: los siete flujos con sus operation_id, su efecto y su precio. Cobrar por el plano de cómo se usa el servicio sería cobrar por saber qué comprar — la misma contradicción que /pricing y /docs. Y tiene UNA sola respuesta para todo el mundo: un caché la sirve al planeta."},{"id":"identity","path":"/(auth|me)(/.*)?","price_usd":"0","free":true,"conditional":false,"why":"El sign-in por firma del DUEÑO de un agente (EIP-4361) y su perfil. No es una lectura del índice: es la puerta para ESCRIBIR metadata sobre lo propio, y la regla del masterplan de identidad es que x402 paga por leer y la firma prueba quién escribe — nunca se cruzan. Por eso es gratis y por eso no vende nada: ninguna sesión lee una ruta paga de esta tabla, y «mis agentes» devuelve identidad y perfil, jamás un score. Cobrarlo sería cobrarle a alguien por decir que algo es suyo. Detrás de una perilla: con GET /health diciendo identity.enabled=false, todo este prefijo contesta 404."},{"id":"manifesto","path":"/manifesto/?","price_usd":"0","free":true,"conditional":false,"why":"Lo que este servicio dice creer, con el archivo o la ruta que lo hace cumplir al lado. Cobrarlo sería cobrar por la posibilidad de auditarnos, que es exactamente lo contrario de lo que el documento afirma. Es además, junto con /pricing, la única respuesta que no toca Postgres: sigue en pie con el índice caído."},{"id":"wallet-chains","path":"/wallets/[^/]+/chains/?","price_usd":"0","free":true,"conditional":false,"why":"LO QUE ESTE SITIO PROMETE QUE NO COBRA. La portada dice, con esas palabras: «no te vendemos el número —la cadena es pública y podés sacarlo vos—, te vendemos de quiénes está hecho». Esto es el número: qué identidades ERC-8004 tiene una wallet y qué reputación acumuló en cada cadena. Cobrarlo contradice la promesa publicada, y además rompía la página del perfil, que sin esto mostraba «sin leer» en las siete filas de una wallet con seis identidades y 73 ratings. Lo que se sigue cobrando es la descomposición: QUIÉNES calificaron, cuántas veces cada uno, en qué faceta, con qué fecha y en qué transacción — `/reputation/wallet/{w}`. Sale de vistas materializadas, así que el costo marginal es el mismo que el del leaderboard."},{"id":"wallet-exists","path":"/wallets/[^/]+/exists/?","price_usd":"0","free":true,"conditional":false,"why":"THE SWEEP DOOR, free because this index does not charge for saying there is nothing: an agent that pays a cent to learn that a wallet is empty has learned that we sell smoke. It answers yes/no and counts -- identities, chains, ratings -- and every one of them is already free, chain by chain, at /wallets/{w}/chains; this is that answer without the agent ids and the scores, small enough to check a thousand wallets. It names the paid lookup, with its price, ONLY when there are ratings to decompose. What stays paid is the decomposition: WHO rated, how many times each, in which facet, on what date, in which transaction -- `/reputation/wallet/{w}`."},{"id":"by-resource","path":"/reputation/by-resource/?","price_usd":"0","free":true,"conditional":false,"why":"WHO COLLECTS AT AN x402 RESOURCE, asked by its URL, free by the same rule as /wallets/{w}/exists: an agent that pays a cent to learn that a collector holds no ERC-8004 identity -- the common case -- has learned that we sell smoke. It reads the payTo from the facilitator's PUBLIC bazaar and answers, per collector, identity yes / no / not indexed, the agent id to link and the review counts, never the address. Every count is already free per wallet. What stays paid is the decomposition: WHO rated, how many times each, in which facet, on what date, in which transaction -- `/reputation/wallet/{w}` and `/reputation/agent/{network}/{id}`."},{"id":"payment-status","path":"/payments/status/?","price_usd":"0","free":true,"conditional":false,"why":"WHETHER A PAYMENT OF YOURS MOVED, asked by payer and resource, free because it is the question that keeps a buyer from paying twice: when a wallet (PayBox, a plugin) presented the payment and the answer was lost or said 'no verdict yet', the buyer never held the header to re-send. It reads the payment's own record -- settled, pending, unpaid or unknown, and the transaction -- and NEVER the paid answer: whoever knows a payer and a resource would read it for free. Re-reading what you bought is still the same header."},{"id":"badge","path":"/badge/.+","price_usd":"0","free":true,"conditional":false,"why":"THE EMBEDDABLE BADGE, and it is free by the cost rule, not by generosity: a badge is a cache entry, not a visitor. It is one URL serving the same SVG to everyone, `max-age=3600` at the edge -- a page with a million views an hour costs this origin about one request per PoP per hour. Charging for it would also defeat its purpose: the badge is how a subject SHOWS its reputation around the web, and every impression links back here. What stays paid is the decomposition behind the number, same line as everywhere else: WHO rated, when, in which tx -- `/reputation/wallet/{w}`."},{"id":"search","path":"/search(/.*)?","price_usd":"0","free":true,"conditional":false,"why":"LA PUERTA DE ENTRADA, y es gratis por la MISMA promesa publicada que hace gratis a /wallets/{w}/chains: «no te vendemos el número —la cadena es pública y podés sacarlo vos—, te vendemos de quiénes está hecho». Esto es el número y la UBICACIÓN: qué se interpretó de lo que pegaste, en qué cadenas existe y qué wallet es dueña de cada identidad. La descomposición —quiénes calificaron, cuántas veces, con qué fecha y en qué transacción— se sigue cobrando en /reputation/*. Cobrarlo sería además facturar los typos: el paywall corre antes del ruteo, así que una entrada mal pegada cotiza igual que una buena y el llamador pagaría por enterarse de que se equivocó. Y TODO /search/ ES GRATIS, para siempre: el patrón cubre el prefijo entero a propósito, como /.well-known/, para que el día que algo debajo de /search/ quiera costar plata la discusión ocurra en ESTE renglón y antes de que ese endpoint exista."},{"id":"chains","path":"/chains(/[A-Za-z0-9_-]+)?/?","price_usd":"0","free":true,"conditional":false,"why":"EL LENTE, y es vitrina igual que el leaderboard: agregados por red, idénticos para todo el mundo, que salen de vistas materializadas y no del grano. Cobrarlos rompería lo que hacen bien — decirle a alguien QUÉ CADENA mirar antes de que pague por mirar un sujeto. Además es la respuesta que hace honesto al resto: es donde se ve que una media de 76,95 sale de once calificadores."},{"id":"feed","path":"/feed/?","price_usd":"0","free":true,"conditional":false,"why":"EL PULSO, y es gratis por la misma razón que el leaderboard: una sola consulta idéntica para todo el mundo, que sale del índice temporal en menos de un milisegundo y es cacheable entera en el borde (cacheable, no cacheada: hasta 2026-08-23 esta línea decía «se cachea», y /feed no está en la lista blanca de CloudFront — fila del backlog). Cobrar el latido de un índice público sería cobrar por saber que está vivo — y encima es la respuesta que hace que el resto valga: quien ve pasar los ratings entiende qué está comprando cuando pide el desglose de uno. No lleva `limit` ni `network` en la clave de cobro porque no cambian el escalón: una red es una de once, no un dato que solo vos preguntaste; el techo de 200 lo pone el handler."},{"id":"leaderboard-shop-window","path":"/leaderboard/?","price_usd":"0","free":true,"conditional":false,"why":"EL GANCHO. Una sola consulta que sirve a todos: el costo marginal del llamador N+1 es cero porque la respuesta es idéntica y se cachea. Es la vitrina — quien se asoma tiene que poder ver el índice antes de decidir si le sirve. No toma parámetros desde el 2026-08-21 (paginar vive en /leaderboard/page): con UNA sola respuesta posible, el borde puede servirla sin tocar el origen."},{"id":"leaderboard-deep","path":"/leaderboard/page/?","price_usd":"0.01","free":false,"conditional":false,"why":"Paginar o filtrar por tipo ya no es asomarse, es extraer. Cada página recalcula `elig`, `per_chain` y `evidence` sobre el grano COMPLETO más el prior del índice, y `offset` × `type` abre un espacio de claves que ningún caché amortiza. Es ruta propia y no un query de /leaderboard porque gratis y pago se separan por PATH: es la única frontera que CloudFront sabe respetar."},{"id":"stats-facets","path":"/stats/facets/?","price_usd":"0","free":true,"conditional":false,"why":"Escaneo completo del grano agrupado por tag, pero con UNA sola respuesta posible: una corrida por ventana de caché sirve a todo el mundo. Es la prueba de que el índice existe."},{"id":"stats-types","path":"/stats/types/?","price_usd":"0","free":true,"conditional":false,"why":"Mismo argumento que las facetas: caro de computar, idéntico para todos, cacheable. Y es donde se ve la cobertura real de la clasificación, que es un dato que nos conviene que se vea."},{"id":"stats-issuers","path":"/stats/issuers/?","price_usd":"0","free":true,"conditional":false,"why":"La misma familia que facetas y tipos —agregado global, UNA respuesta para todo el mundo, servido de matview— cortado por quién ESCRIBIÓ cada rating (el host de feedbackURI). Y hay una razón extra para que sea gratis: es la ruta con la que se nos audita a nosotros — issuer_org marca cuánto del índice lo escribieron productos de la casa, y cobrar por verificar eso sería cobrar por la posibilidad de desconfiar de nosotros."},{"id":"categories","path":"/categories/?","price_usd":"0","free":true,"conditional":false,"why":"EL CATÁLOGO DEL DIRECTORIO, y es gratis por la regla de costo, no por generosidad: es UNA respuesta para todo el mundo — unas pocas categorías de data versionada más sus conteos, leídos de la misma matview que /stats/facets — y el borde la sirve sin tocar el origen. Y es la respuesta que hace honesto al resto: publica cuánto del índice lleva categoría ANTES de que nadie pague. Lo que se sigue cobrando es lo de siempre, la descomposición de un sujeto concreto. Ruta exacta y no prefijo: la paginación por categoría va a ser paga."},{"id":"names","path":"/names/(resolve|reverse)/?","price_usd":"0","free":true,"conditional":false,"why":"RESOLVER UN NOMBRE NO ES LEER EL ÍNDICE: es preguntarle a la cadena a quién apunta `ultravioletadao.eth`, un dato público que cualquiera lee con su propio RPC. Cobrarlo sería cobrar la puerta de entrada — el que tiene un nombre y no una dirección no puede ni llegar a la ruta que sí se vende. Una respuesta por nombre, igual para todo el mundo, así que el borde la cachea. Lo que se cobra sigue siendo la descomposición de la wallet a la que apunta."},{"id":"wallet-snapshot","path":"/reputation/wallet(/[^/]+)?/?","price_usd":"0.05","free":false,"conditional":true,"why":"El único endpoint que ESCRIBE. Lo que comprás no es el número: es el compromiso con el número. Queda una fila durable en `score_snapshots` con `inputs_digest` y `policy_version`, o sea un recibo citable que podés mostrarle a una contraparte y que nosotros podemos volver a computar idéntico."},{"id":"wallet-lookup","path":"/reputation/wallet(/[^/]+)?/?","price_usd":"0.01","free":false,"conditional":false,"why":"EL COBRO BASE. Seis sentencias sobre el grano —por cadena, autocalificación, facetas, actividad, ponderado (dos) y concentración— resueltas en decenas de milisegundos. A un tercero el mismo agregado le cuesta horas de RPC contra cada cadena del índice, y la cola larga de wallets no pega nunca en caché."},{"id":"wallet-history","path":"/reputation/(wallet/[^/]+/)?history/?","price_usd":"0.03","free":false,"conditional":false,"why":"La serie temporal es el único endpoint cuyo trabajo crece con el LAPSO además del volumen: funciones de ventana sobre el grano más un CROSS JOIN de grilla (cadena × período) para que el acumulado no se re-pondere solo, y encima la cobertura de fechado. La clave se multiplica por `bucket`: cero amortización."},{"id":"rater-profile","path":"/reputation/rater(/[^/]+)?/?","price_usd":"0.01","free":false,"conditional":false,"why":"The OTHER side of the grain: the wallet as RATER. Five statements over its emitted ratings -- totals, distinct subjects, dispersion (a rater stamping 100 on everything has stddev 0, and YOU read that, we do not verdict it), per-chain, favorite-subject share, role breakdown from tag1. No score is emitted: ranking raters would be a new verdict, and this index returns evidence. Same cost class as the base lookup: per-subject work over the grain that no cache amortizes."},{"id":"agent-detail","path":"/reputation/agent(/[^/]+/[^/]+)?/?","price_usd":"0.02","free":false,"conditional":true,"why":"Devuelve CADA rating con su transacción, revocados incluidos. El caso grande de este índice es un agente con más de 310.000 filas: el costo no está en planificar la consulta sino en materializar y serializar la evidencia."}]}