MRR Ledger

Datos de ingresos con fuente de negocios reales de agentes de IA. Cada cifra enlaza a su fuente. API de solo lectura + MCP, sin clave.

Servidor MCP alojado

npx add-mcp 'https://mrrledger.com/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Para agentes

MRR Ledger está diseñado para ser leído por máquinas. Gratuito, CC BY 4.0, sin necesidad de clave para los endpoints estáticos.

Endpoints

GET /api/v1/businesses.jsonTodas las empresas con métricas con fuente
GET /api/v1/businesses/{slug}.jsonUna empresa
GET /api/v1/leaderboard.jsonClasificadas por ingresos anualizados
GET /api/v1/leaderboard.csvMisma clasificación que CSV (una fila por empresa clasificada: etiqueta principal, valor_usd bruto y value_text, base, as_of, source_url, profile_url). Se abre en Sheets/Excel/pandas.
GET /api/v1/categories.jsonInformación de categorías: id/slug, etiqueta, recuento, ranked_count, median_annualized_usd (entre clasificadas), median_annualized_by_tier, members[{slug,name,rank,annualized_revenue_usd,url_profile}], method. Enlace directo al ranking /leaderboard/?category=<slug>. MCP list_categories / get_category.
GET /api/v1/tags.jsonInformación de etiquetas: slug, etiqueta, recuento, ranked_count, median_annualized_usd (entre clasificadas), median_annualized_by_tier, members[{slug,name,rank,annualized_revenue_usd,url_profile}], method. Ordenadas por recuento descendente y luego etiqueta. HTML /tags/ muestra solo count≥2. Enlace directo al ranking /leaderboard/?tag=<slug>. MCP list_tags / get_tag.
GET /api/v1/feature.jsonEmpresa destacada de hoy
GET /api/v1/features.jsonRotación de destacados de 14 días (entries, card_url, is_today)
GET /api/v1/stats.jsonTotales del hub: empresas, chartable, lecciones, niveles/categorías, recuentos obsoletos, mediana anualizada por nivel y por categoría, revenue_disclosed_count / revenue_undisclosed_count, agent_native_count / agent_added_count
GET /badge/{slug}.svgInsignia SVG incrustable de 20px: rango + métrica principal bruta (marca reportado / última sincronización). /badge/{slug}-plain.svg = "listado", sin número. URLs también en cada registro como badge_url / badge_plain_url.
GET /api/v1/newsletter.jsonNúmero de esta semana: destacado, nuevas empresas, movimientos de números, rincón indie, lección, próximos eventos y markdown listo para pegar
GET /api/v1/growth.jsonEmpresas con series de crecimiento multipunto
GET /api/v1/growth.csvCada punto de growth_series como CSV (slug, as_of, label, value_usd, annualized_usd, basis, confidence, source_url, profile_url, growth_json_url). Gratuito bajo CC BY 4.0. El CSV completo de historial de todas las métricas sigue siendo Pro.
GET /api/v1/growth/{slug}.jsonPuntos de ingresos anualizados con fecha para una empresa
GET /api/v1/lessons.jsonCada lección, atribuida, con temas etiquetados por palabras clave (reglas incluidas)
GET /api/v1/insights.jsonGrupos de modelos de precios con medianas, y tiempo hasta $100M (con fuentes y método)
GET /api/v1/sources.jsonCada fuente citada, qué empresas la usan y su última verificación automática de enlaces
GET /api/v1/changes.jsonRegistro de cambios con fecha: empresas añadidas, nuevos puntos con fuente, revisiones (más recientes primero)
GET /api/v1/pricing.jsonPlanes, precios y enlaces de pago de Stripe (planes de pago entregados por correo electrónico)
GET /api/v1/compare.json?a=&b=Comparar dos empresas por slug (resúmenes + diff). Necesita la función de comparación de Vercel; también MCP compare_businesses
GET /api/v1/search.json · ?q=&category=&tier=&verified_only=&limit=Búsqueda por subcadena sobre nombre, slug, one_liner, etiquetas, lecciones. verified_only=true conserva solo empresas cuya cifra principal está verificada por procesador de pagos (headline_verification no nulo). Archivo estático = índice completo; los parámetros de consulta necesitan la función de búsqueda de Vercel. MCP search_businesses cubre el mismo trabajo para agentes.
/openapi.json · /openapi-3.0.jsonEspecificación OpenAPI 3.1, más una copia OpenAPI 3.0.3 para herramientas que solo importan 3.0
/llms.txt, /llms-full.txtResúmenes aptos para LLM
/playbook/Página humana: biblioteca de lecciones, modelos de precios, tiempo hasta $100M
/compare/Página humana: comparación lado a lado (enlaces profundos ?a=&b=)
/features/Página humana: archivo de rotación de destacados de 14 días
/mcpServidor MCP (Streamable HTTP, sin clave). Endpoint canónico: https://mrrledger.com/mcp (POST JSON-RPC, respondido directamente; /mcp/ también funciona). Herramientas (todas de solo lectura, anotadas readOnlyHint): search_businesses, get_business, leaderboard, todays_feature, get_growth, search_lessons, whats_new, compare_businesses, hub_stats, list_categories, list_tags, get_tag, get_category. Recursos: mrrledger://llms.txt, mrrledger://leaderboard, mrrledger://stats, mrrledger://changes
/.well-known/mcp-server.jsonManifiesto del Registro MCP (formato server.json) para registros y clientes

Notas de campo

  • tier (venture, indie, experiment): El nivel trata sobre financiación, no sobre tamaño: Venture-backed = recaudó capital externo de riesgo (incluso por debajo de $1M anualizado); Indie = bootstrapped o financiado por fundadores; Experiment = proyecto dirigido por agentes o de investigación.
  • confidence: "reported" = reportado por prensa, no confirmado por la empresa (píldora ámbar reportado); "self-reported" = declarado por la propia empresa (comunicado, publicación del fundador), no verificado de forma independiente (píldora discontinua auto-reportado).
  • headline_verification (registros, ranking, búsqueda y resúmenes MCP): cómo se verifica la cifra clasificada en sí, {method: "payment-processor", processor, via} cuando proviene de una fuente conectada a pagos (p. ej. TrustMRR vía Stripe), si no, null. Usa verified_only=true en /api/v1/search.json o MCP search_businesses / leaderboard para conservar solo esos.
  • verified_corroboration: cuando la cifra principal es auto-reportada o reportada por prensa y también existe un punto verificado por pagos (p. ej. una instantánea de TrustMRR Stripe o Paddle), este objeto lo contiene (label, value_usd, annualized_usd, as_of, source_url, source_name, source_sync_stale_since, verification). Se muestra como una línea atenuada "Verificado por Stripe…" / "Verificado por Paddle…" bajo la cifra principal en el ranking y el perfil. Null en caso contrario.
  • source_sync_stale_since (YYYY-MM-DD, en métricas y en la cifra principal de cada registro): la página de la fuente indica que su conexión de datos en vivo se detuvo (p. ej. una clave Stripe caducada en TrustMRR). El valor es la última cifra sincronizada; trátalo como fechado ese día. También listado en sources.json summary.source_sync_stale.
  • ownership / independent: ownership aparece solo cuando una empresa fue adquirida ({status: "acquired", acquirer, as_of, source_url}); independent es entonces false. El nivel aún describe la financiación previa a la venta, por lo que una empresa bootstrapped vendida por efectivo sigue siendo indie. Las filas adquiridas muestran una píldora púrpura adquirido, se omiten en el rincón indie del boletín y en la cuadrícula indie de inicio, y se excluyen de stats.json median_annualized_indie_independent.
  • last_ownership_check (YYYY-MM-DD o null): fecha de la búsqueda activa de propiedad más reciente registrada en data/ownership_checks.json (veredicto independent / acquired / watch). Presente solo cuando hemos buscado; las filas sin verificar permanecen null — nunca inventado. Los perfiles con una entrada en el registro muestran una línea atenuada "Propiedad verificada YYYY-MM-DD".
  • ownership_watch: presente solo cuando el veredicto del registro de propiedad es watch ({verdict, checked, note, source_url?}) — proceso de venta o señal de venta, sin acuerdo cerrado. Píldora ámbar de vigilancia en perfil + ranking; nunca inventa adquisiciones.
  • agentic_origin (cadena opcional): agent-native = el producto es agentes / una plataforma de agentes desde el inicio; agent-added = producto establecido que luego añadió agentes o MCP (píldora ámbar agente-añadido en perfil + ranking); unclear u omitido cuando no hay confianza. Filtro de ranking ?origin=native / ?origin=added. stats.json tiene agent_native_count y agent_added_count.
  • revenue_disclosed (booleano): true si y solo si la empresa tiene una cifra de ingresos anualizados con fuente y clasificable (ARR / MRR×12 / Ingresos con value_usd — misma regla que la membresía del ranking / annualized_revenue_usd). Financiación o valoración por sí sola es false. Filtro de ranking ?rev=disclosed / casilla Solo ingresos divulgados; los perfiles y tarjetas de categoría muestran una píldora atenuada sin cifra de ingresos cuando es false. stats.json tiene revenue_disclosed_count y revenue_undisclosed_count.
  • older_figure / age_days: en cada registro y en cada fila del ranking, older_figure es true cuando la métrica de ingresos principal tiene más de 365 días y no ha sido reemplazada; age_days es la fecha de compilación menos as_of (precisión mensual = mediados de mes). Misma regla que la píldora gris ingresos >12 meses. Filtro de ranking ?age=fresh / casilla Solo ingresos recientes conserva solo filas con ingresos divulgados fechados dentro de 365 días. También en cada métrica y en leaderboard.csv.
  • related (matriz, en cada registro de empresa): hasta 4 empresas similares puntuadas por misma categoría, etiquetas compartidas y escala anualizada cercana. Cada entrada tiene compare_url para la página lado a lado. Los perfiles muestran la misma lista bajo "Similares en el registro".

Gratis: CSV del ranking + CSV de series de crecimiento (solo puntos chartable). Pro (próximamente, únete a la lista de espera): CSV completo de historial de todas las métricas, historial más denso y alertas. Las claves API de pago (Hobby, Builder, Team) se emiten manualmente por correo electrónico por ahora; consulta precios.

Claves API y límites de tasa

Las claves son opcionales. Sin clave significa plan Free: 100 solicitudes por día por IP. Las claves de pago vienen con API Hobby, Builder y Team en precios y se emiten por correo electrónico por ahora.

PlanSolicitudes/día (UTC)ClavesExtras
Free100 por IPningunaJSON/CSV estático, búsqueda, comparación, MCP
Hobby ($9/mes)2,0001Uso comercial
Builder ($19/mes)10,0001CSV de historial completo: /api/v1/export.csv
Team ($79/mes)25,000 compartidas5JSONL masivo: /api/v1/export.jsonl

Envía la clave como X-API-Key: mrl_live_… o Authorization: Bearer mrl_live_…. El límite se cuenta en los endpoints de función: /api/v1/search.json, /api/v1/compare.json, los endpoints de exportación y /mcp (solo tools/call cuenta). Los archivos estáticos bajo /api/v1/ permanecen gratuitos y no se miden.

Cada respuesta medida lleva X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (segundos Unix, próximo medianoche UTC) y X-RateLimit-Plan. Al superar el límite obtienes HTTP 429 con Retry-After. Una clave incorrecta o revocada obtiene 401. Los recuentos son aproximados.

Pago por llamada (sin registro): x402

Los agentes pueden pagar con x402 en USDC en Base, sin cuenta y sin clave. El nivel gratuito no cambia: 100 solicitudes/día por IP y cada archivo estático /api/v1/*.json permanecen gratuitos.

QuéPrecioCómo
search / compare / MCP tools/call más allá de los 100/día gratuitos$0.005 por llamadaEl 429 se convierte en un 402 con un encabezado PAYMENT-REQUIRED; reintenta con PAYMENT-SIGNATURE
/api/v1/export.csv (historial completo)$0.25 por descargaPaga en lugar de una clave Builder
/api/v1/export.jsonl (masivo)$0.50 por descargaPaga en lugar de una clave Team
Pase API: hobby, 1 día$0.50POST /api/v1/passes?plan=hobby&days=1 o MCP buy_api_pass; devuelve una clave con caducidad
Pase API: hobby, 30 días$9POST /api/v1/passes?plan=hobby&days=30 o MCP buy_api_pass; devuelve una clave con caducidad
Pase API: builder, 30 días$19POST /api/v1/passes?plan=builder&days=30 o MCP buy_api_pass; devuelve una clave con caducidad
Pase API: team, 30 días$79POST /api/v1/passes?plan=team&days=30 o MCP buy_api_pass; devuelve una clave con caducidad

MCP: una llamada no pagada más allá de la cuota devuelve un resultado de herramienta con isError: true y el objeto PaymentRequired en structuredContent; reintenta con params._meta["x402/payment"]. Clientes: @x402/fetch (wrapFetchWithPayment) o cualquier cliente x402 v2.