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.json | Todas las empresas con métricas con fuente |
|---|---|
GET /api/v1/businesses/{slug}.json | Una empresa |
GET /api/v1/leaderboard.json | Clasificadas por ingresos anualizados |
GET /api/v1/leaderboard.csv | Misma 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.json | Informació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.json | Informació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.json | Empresa destacada de hoy |
GET /api/v1/features.json | Rotación de destacados de 14 días (entries, card_url, is_today) |
GET /api/v1/stats.json | Totales 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}.svg | Insignia 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.json | Nú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.json | Empresas con series de crecimiento multipunto |
GET /api/v1/growth.csv | Cada 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}.json | Puntos de ingresos anualizados con fecha para una empresa |
GET /api/v1/lessons.json | Cada lección, atribuida, con temas etiquetados por palabras clave (reglas incluidas) |
GET /api/v1/insights.json | Grupos de modelos de precios con medianas, y tiempo hasta $100M (con fuentes y método) |
GET /api/v1/sources.json | Cada fuente citada, qué empresas la usan y su última verificación automática de enlaces |
GET /api/v1/changes.json | Registro de cambios con fecha: empresas añadidas, nuevos puntos con fuente, revisiones (más recientes primero) |
GET /api/v1/pricing.json | Planes, 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.json | Especificación OpenAPI 3.1, más una copia OpenAPI 3.0.3 para herramientas que solo importan 3.0 |
/llms.txt, /llms-full.txt | Resú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 |
/mcp | Servidor 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.json | Manifiesto 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. Usaverified_only=trueen/api/v1/search.jsono MCPsearch_businesses/leaderboardpara 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:
ownershipaparece solo cuando una empresa fue adquirida ({status: "acquired", acquirer, as_of, source_url});independentes 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 destats.jsonmedian_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);unclearu omitido cuando no hay confianza. Filtro de ranking?origin=native/?origin=added.stats.jsontieneagent_native_countyagent_added_count. - revenue_disclosed (booleano):
truesi y solo si la empresa tiene una cifra de ingresos anualizados con fuente y clasificable (ARR / MRR×12 / Ingresos convalue_usd— misma regla que la membresía del ranking /annualized_revenue_usd). Financiación o valoración por sí sola esfalse. 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.jsontienerevenue_disclosed_countyrevenue_undisclosed_count. - older_figure / age_days: en cada registro y en cada fila del ranking,
older_figureestruecuando la métrica de ingresos principal tiene más de 365 días y no ha sido reemplazada;age_dayses la fecha de compilación menosas_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 enleaderboard.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_urlpara 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.
| Plan | Solicitudes/día (UTC) | Claves | Extras |
|---|---|---|---|
| Free | 100 por IP | ninguna | JSON/CSV estático, búsqueda, comparación, MCP |
| Hobby ($9/mes) | 2,000 | 1 | Uso comercial |
| Builder ($19/mes) | 10,000 | 1 | CSV de historial completo: /api/v1/export.csv |
| Team ($79/mes) | 25,000 compartidas | 5 | JSONL 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é | Precio | Cómo |
|---|---|---|
search / compare / MCP tools/call más allá de los 100/día gratuitos | $0.005 por llamada | El 429 se convierte en un 402 con un encabezado PAYMENT-REQUIRED; reintenta con PAYMENT-SIGNATURE |
/api/v1/export.csv (historial completo) | $0.25 por descarga | Paga en lugar de una clave Builder |
/api/v1/export.jsonl (masivo) | $0.50 por descarga | Paga en lugar de una clave Team |
| Pase API: hobby, 1 día | $0.50 | POST /api/v1/passes?plan=hobby&days=1 o MCP buy_api_pass; devuelve una clave con caducidad |
| Pase API: hobby, 30 días | $9 | POST /api/v1/passes?plan=hobby&days=30 o MCP buy_api_pass; devuelve una clave con caducidad |
| Pase API: builder, 30 días | $19 | POST /api/v1/passes?plan=builder&days=30 o MCP buy_api_pass; devuelve una clave con caducidad |
| Pase API: team, 30 días | $79 | POST /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.