firenum - retirement planner

¿Cuándo puedes jubilarte? Convierte tu edad, ahorros, ingresos y gastos en una fecha de jubilación, verificada contra 500 mercados simulados y todos los años de inicio desde 1872.

Servidor MCP alojado

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

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

Documentación

Desarrolladores

Pon firenum en tu sitio, o maneja el Fire Planner desde código. Sin clave de API, sin costo.

El planificador y las calculadoras de firenum se ejecutan en el navegador. Las herramientas siguientes te permiten reutilizarlos: incrusta una calculadora, muestra que apareces en el directorio, o entrega datos financieros estructurados al Fire Planner y recibe su respuesta y un enlace al plan. Todos los endpoints son abiertos y sin autenticación.

Incrustar una calculadora

Coloca cualquiera de las 8 calculadoras FIRE en tu página con un iframe. La incrustación se redimensiona sola a medida que los lectores cambian los datos y se adapta a su moneda. El generador de fragmentos te da el código de moneda, tema y auto-redimensionamiento listo para pegar.

Abrir el generador de incrustación

Insignia de socio

¿Apareces en el directorio de asesores? Muestra la insignia "Destacado en firenum" en tu sitio. Cuatro diseños, oscuro y claro, con código de copiar y pegar.

Obtener la insignia

Servidor MCP

https://firenum.com/mcp es un servidor de Model Context Protocol con una herramienta, build_retirement_plan. Cuando alguien le dice a ChatGPT, Claude u otro asistente su edad, ingresos, ahorros y gastos, y pregunta cuándo puede jubilarse, si su dinero alcanzará o cuál es su número Coast FIRE o FIRE, el asistente envía esos números y recibe la respuesta del planificador y un enlace que abre su plan, ya completado. Responde en el chat con los números de firenum; el enlace es el plan completo.

HTTP transmisible, sin estado, sin autenticación. La herramienta es la operación REST siguiente: su descripción, parámetros y esquema de resultados provienen de la especificación OpenAPI, y es de solo lectura.

Conectar

  • ChatGPT: chatgpt.com/plugins, luego +, luego Añadir servidor MCP personalizado, con la URL anterior.
  • Claude: Personalizar, luego Conectores, luego Añadir conector personalizado, con la URL anterior y sin iniciar sesión.
  • Claude Code: claude mcp add --transport http firenum https://firenum.com/mcp
  • Le Chat: Conectores, luego + Añadir conector, luego Conector MCP personalizado, llamado firenum, con la URL anterior.
  • Perplexity (Pro y superior): Configuración de la cuenta, luego Conectores, luego + Conector personalizado, luego Remoto, con la URL anterior y autenticación Ninguna.
  • Gemini (cuentas personales de EE. UU., mayores de 18, inglés): gemini.google.com, Configuración, luego Aplicaciones conectadas, luego Añadir una aplicación personalizada, con la URL anterior.

Listado en el Registro MCP oficial como com.firenum/fire-planner.

Llamada

POST https://firenum.com/mcp
Content-Type: application/json
Accept: application/json, text/event-stream

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": { "name": "build_retirement_plan", "arguments": { "salary": 80000, "expenses": 4000, "retirement": 200000, "birth": 1990, "retire_age": 55 } }
}

Resultado

structuredContent, también enviado como texto JSON, respondido cuando se construyó esta página (octubre de 2026):

{
  "url": "https://firenum.com/fire-planner?salary=80000&expenses=4000&retirement=200000&birth=1990&retire_age=55&source=agent",
  "params_applied": ["salary", "expenses", "retirement", "birth", "retire_age"],
  "answer": {
    "headline": "Retiring Jan 2045, at 55: money lasts to age 90",
    "monte_carlo": "money lasts in 230 of 500 simulations",
    "backtest": "money lasts in 100 of 100 start years",
    "money_left": "Money left at age 90: $1.56M",
    "spending_room": "You could spend up to $4,650/mo and the money still lasts to age 90",
    "coast": "If you stopped saving today and still retired Jan 2045, the money runs out in 2055.",
    "fire_number": 1200000,
    "coast_number": 569571,
    "coast_age": 55,
    "assumptions": {
      "currency": "USD",
      "money": "Today's money",
      "average_return_pct": 7,
      "inflation_pct": 3,
      "retirement": "Their own date",
      "money_lasts_until": "age 90",
      "models": {
        "average_returns": "One smooth path. Your investments grow 7% every year before 3% inflation. This shows what happens if every single year is average. Real years never are.",
        "monte_carlo": "500 simulations. Each one draws a different return every year around the same 7% average, with 15% yearly swings. The result is how many of the 500 simulations your money survives.",
        "backtest": "Every real start year since 1872 (100 of them, each with 55 years of data). Your plan is replayed through what the stock market returned from that year on, with your own inflation rate. The result is how many of the 100 start years your money survives."
      },
      "withdrawal_order": "Taxable first: Retirement Account",
      "early_withdrawal_penalty": "Not applied: every account is drawn in order at any age",
      "accounts": [
        {
          "name": "Retirement Account",
          "balance": 200000,
          "growth_pct": 7,
          "monthly_contribution": 0
        }
      ],
      "income": [
        {
          "name": "Salary",
          "amount": 6667,
          "frequency": "monthly",
          "from": "now",
          "until": "retirement",
          "growth_pct": 3
        }
      ],
      "spending": [
        {
          "name": "Monthly expenses",
          "amount": 4000,
          "frequency": "monthly",
          "from": "now",
          "until": "never",
          "growth_pct": 3
        }
      ],
      "debts": [],
      "not_modeled": "Tax amounts (model tax as spending or a lower growth rate); the early withdrawal penalty itself (flagged, not charged); benefit estimates and the best claiming age (Social Security and pensions are income from the age chosen); Roth conversions; non-US market history (the backtest replays the S&P 500). A projection, not financial advice."
    },
    "table": {
      "columns": ["year", "age", "net_worth_average_returns", "net_worth_monte_carlo_p10", "net_worth_monte_carlo_median", "net_worth_monte_carlo_p90", "net_worth_backtest_p10", "net_worth_backtest_median", "net_worth_backtest_p90", "income", "spending", "withdrawals"],
      "rows": [
        [2026, 36, 211000, 190000, 210000, 232000, 188000, 211000, 230000, 20000, 12000, 0],
        [2030, 40, 386000, 275000, 369000, 502000, 293000, 401000, 578000, 80000, 48000, 0],
        [2035, 45, 649000, 407000, 596000, 895000, 474000, 696000, 1170000, 80000, 48000, 0],
        [2040, 50, 971000, 512000, 860000, 1490000, 707000, 1050000, 2040000, 80000, 48000, 0],
        [2045, 55, 1280000, 620000, 1080000, 1940000, 952000, 1410000, 3320000, 0, 48000, 48000],
        [2050, 60, 1300000, 385000, 973000, 2260000, 1080000, 1500000, 4590000, 0, 48000, 48000],
        [2055, 65, 1330000, 152000, 857000, 2580000, 1090000, 2180000, 6180000, 0, 48000, 48000],
        [2060, 70, 1360000, 0, 704000, 3010000, 1140000, 3470000, 7690000, 0, 48000, 48000],
        [2065, 75, 1400000, 0, 512000, 2960000, 1090000, 5140000, 8660000, 0, 48000, 48000],
        [2070, 80, 1440000, 0, 341000, 3260000, 1130000, 6550000, 12800000, 0, 48000, 48000],
        [2075, 85, 1500000, 0, 109000, 3600000, 1400000, 7890000, 22100000, 0, 48000, 48000],
        [2080, 90, 1560000, 0, 0, 4180000, 1350000, 8680000, 31000000, 0, 48000, 48000]
      ],
      "retirement_year": 2045,
      "notes": ["2026 is a part year (Oct to Dec)."]
    }
  }
}

La respuesta

La herramienta MCP, la API REST y la API agente a agente devuelven el mismo answer: el propio del Fire Planner, en sus palabras, tal como el plan lo muestra una vez abierto. El código del planificador lo calcula: el plan que crea el enlace, su fecha de jubilación más temprana (o su propio año), 500 simulaciones de Monte Carlo con la semilla única del planificador y cada año de inicio histórico. Donde no dijeron nada, usa los valores predeterminados del planificador: crecimiento del 7%, inflación del 3%, dinero que dura hasta los 90 años, sin impuestos. Las sumas están en dinero actual y en su moneda. Un campo que no aplica se omite.

Campo

Qué indica

headline

Cuándo pueden jubilarse y cuánto dura el dinero con rendimientos promedio, o por qué ninguna fecha funciona.

monte_carlo

En cuántos de 500 mercados simulados dura el dinero.

backtest

En cuántos años de inicio históricos desde 1872 dura el dinero.

money_left

Qué queda al final, con rendimientos promedio, en dinero actual.

spending_room

Con un año de jubilación propio: el máximo que podrían gastar al mes y que aún así alcance.

coast

Si podrían dejar de ahorrar hoy y aún así jubilarse entonces (Coast FIRE).

fire_number

25 veces el gasto anual (la regla del 4%), en su moneda.

coast_number

Su número Coast FIRE: lo que necesitarían tener invertido hoy para dejar de ahorrar y aún así alcanzar fire_number a la coast_age, creciendo a la tasa del plan menos la inflación. En su moneda.

coast_age

La edad de jubilación para la que es coast_number: la suya si la dieron, si no, 65.

assumed

Lo que la respuesta asumió que no dijeron. Sin salario ni ingresos secundarios, un ingreso que cubra sus gastos, contribuciones y pagos de deudas hasta que se jubilen.

missing

Los parámetros que el planificador necesita antes de poder evaluar cualquier cosa (una edad, gastos). Pídelos y vuelve a llamar.

assumptions

En qué se basa la respuesta, tal como las Suposiciones del plan y sus líneas las contienen: tasas en % anual, sumas en su moneda. models\ dice cómo funciona cada modelo que se ejecutó, en palabras del planificador; accounts\, income\, spending\ y debts\ son sus números tal como el planificador los leyó, cada uno con su crecimiento, inicio y fin.

table

Año por año en dinero actual, las filas y números que muestra la Tabla del planificador (3 cifras significativas): el primer y último año, cada 5.º año y el año de jubilación. El patrimonio neto es al final de cada año: con rendimientos promedio, y el percentil 10, la mediana y el percentil 90 de las simulaciones de Monte Carlo y de los años de inicio del backtest, para cada modelo que se ejecutó (0 una vez que el dinero se ha agotado). Ingresos, gastos (pagos de deudas no incluidos) y retiros están en la trayectoria promedio. notes\ nombra un primer año parcial y los años que retiran de una cuenta de jubilación mientras aplica la penalización por retiro anticipado.

La fecha del titular es el primer mes en que el dinero dura con rendimientos promedio. Monte Carlo y el backtest dicen con qué frecuencia eso sobrevive a las oscilaciones reales del mercado, así que míralos juntos: un recuento bajo significa que la fecha está al filo de la navaja. Para evaluar otro año de jubilación, vuelve a llamar con retire.

API REST

POST /api/fire-plan toma un objeto JSON de datos financieros y devuelve la respuesta del planificador y una URL que abre el inicio rápido del Fire Planner con todo completado. El lector revisa los números, añade lo que falta y obtiene un nuevo plan llamado "Desde un enlace" junto a cualquier plan que ya tenga.

Los ingresos son anuales. Los gastos y contribuciones son mensuales. Los montos están en unidades monetarias enteras. Cada campo es opcional. Los campos desconocidos se ignoran. CORS está abierto, por lo que el código del navegador puede llamarlo.

Solicitud

curl -X POST https://firenum.com/api/fire-plan \
  -H "Content-Type: application/json" \
  -d '{ "salary": 80000, "expenses": 4000, "retirement": 200000, "birth": 1990, "retire_age": 55 }'

Respuesta

{
  "url": "https://firenum.com/fire-planner?salary=80000&expenses=4000&retirement=200000&birth=1990&retire_age=55&source=agent",
  "params_applied": ["salary", "expenses", "retirement", "birth", "retire_age"],
  "answer": {
    "headline": "Retiring Jan 2045, at 55: money lasts to age 90",
    "monte_carlo": "money lasts in 230 of 500 simulations",
    "backtest": "money lasts in 100 of 100 start years",
    "money_left": "Money left at age 90: $1.56M",
    "spending_room": "You could spend up to $4,650/mo and the money still lasts to age 90",
    "coast": "If you stopped saving today and still retired Jan 2045, the money runs out in 2055.",
    "fire_number": 1200000,
    "coast_number": 569571,
    "coast_age": 55,
    "assumptions": {
      "currency": "USD",
      "money": "Today's money",
      "average_return_pct": 7,
      "inflation_pct": 3,
      "retirement": "Their own date",
      "money_lasts_until": "age 90",
      "models": {
        "average_returns": "One smooth path. Your investments grow 7% every year before 3% inflation. This shows what happens if every single year is average. Real years never are.",
        "monte_carlo": "500 simulations. Each one draws a different return every year around the same 7% average, with 15% yearly swings. The result is how many of the 500 simulations your money survives.",
        "backtest": "Every real start year since 1872 (100 of them, each with 55 years of data). Your plan is replayed through what the stock market returned from that year on, with your own inflation rate. The result is how many of the 100 start years your money survives."
      },
      "withdrawal_order": "Taxable first: Retirement Account",
      "early_withdrawal_penalty": "Not applied: every account is drawn in order at any age",
      "accounts": [
        {
          "name": "Retirement Account",
          "balance": 200000,
          "growth_pct": 7,
          "monthly_contribution": 0
        }
      ],
      "income": [
        {
          "name": "Salary",
          "amount": 6667,
          "frequency": "monthly",
          "from": "now",
          "until": "retirement",
          "growth_pct": 3
        }
      ],
      "spending": [
        {
          "name": "Monthly expenses",
          "amount": 4000,
          "frequency": "monthly",
          "from": "now",
          "until": "never",
          "growth_pct": 3
        }
      ],
      "debts": [],
      "not_modeled": "Tax amounts (model tax as spending or a lower growth rate); the early withdrawal penalty itself (flagged, not charged); benefit estimates and the best claiming age (Social Security and pensions are income from the age chosen); Roth conversions; non-US market history (the backtest replays the S&P 500). A projection, not financial advice."
    },
    "table": {
      "columns": ["year", "age", "net_worth_average_returns", "net_worth_monte_carlo_p10", "net_worth_monte_carlo_median", "net_worth_monte_carlo_p90", "net_worth_backtest_p10", "net_worth_backtest_median", "net_worth_backtest_p90", "income", "spending", "withdrawals"],
      "rows": [
        [2026, 36, 211000, 190000, 210000, 232000, 188000, 211000, 230000, 20000, 12000, 0],
        [2030, 40, 386000, 275000, 369000, 502000, 293000, 401000, 578000, 80000, 48000, 0],
        [2035, 45, 649000, 407000, 596000, 895000, 474000, 696000, 1170000, 80000, 48000, 0],
        [2040, 50, 971000, 512000, 860000, 1490000, 707000, 1050000, 2040000, 80000, 48000, 0],
        [2045, 55, 1280000, 620000, 1080000, 1940000, 952000, 1410000, 3320000, 0, 48000, 48000],
        [2050, 60, 1300000, 385000, 973000, 2260000, 1080000, 1500000, 4590000, 0, 48000, 48000],
        [2055, 65, 1330000, 152000, 857000, 2580000, 1090000, 2180000, 6180000, 0, 48000, 48000],
        [2060, 70, 1360000, 0, 704000, 3010000, 1140000, 3470000, 7690000, 0, 48000, 48000],
        [2065, 75, 1400000, 0, 512000, 2960000, 1090000, 5140000, 8660000, 0, 48000, 48000],
        [2070, 80, 1440000, 0, 341000, 3260000, 1130000, 6550000, 12800000, 0, 48000, 48000],
        [2075, 85, 1500000, 0, 109000, 3600000, 1400000, 7890000, 22100000, 0, 48000, 48000],
        [2080, 90, 1560000, 0, 0, 4180000, 1350000, 8680000, 31000000, 0, 48000, 48000]
      ],
      "retirement_year": 2045,
      "notes": ["2026 is a part year (Oct to Dec)."]
    }
  }
}

La lista completa de parámetros (activos, deudas, gastos por categoría, tasas de crecimiento e inflación, moneda y el cronograma de jubilación) está en la especificación OpenAPI: firenum.com/openapi.yaml.

API agente a agente

La misma capacidad se expone como una habilidad A2A sobre JSON-RPC 2.0, para que un agente pueda obtener la respuesta del planificador y un enlace al plan sin extraer datos del sitio. La tarjeta del agente se publica en /.well-known/agent-card.json.

Envía los datos financieros como un DataPart (kind: "data") dentro de una llamada message/send. El resultado es una tarea completada cuyo artefacto lleva la respuesta REST como un DataPart y su resumen como texto.

Solicitud

POST https://firenum.com/a2a
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "message/send",
  "params": {
    "message": {
      "parts": [
        { "kind": "data", "data": { "salary": 80000, "expenses": 4000, "retirement": 200000, "birth": 1990, "retire_age": 55 } }
      ]
    }
  }
}

El texto del artefacto

Retiring Jan 2045, at 55: money lasts to age 90; money lasts in 230 of 500 simulations; money lasts in 100 of 100 start years. Full plan: https://firenum.com/fire-planner?salary=80000&expenses=4000&retirement=200000&birth=1990&retire_age=55&source=agent

Envía message/send sin DataPart y el agente responde con un estado input-required que describe los campos que espera. Los mismos nombres de parámetros que la API REST. No se admiten transmisión ni notificaciones push.

Uso justo

Sin clave, sin costo, sin niveles de tarifa a los que registrarse. Las API responden a partir de los datos que envías y construyen una URL del planificador a partir de ellos. No almacenan nada. La respuesta es una proyección de esos números, no asesoramiento financiero. Dos límites lo mantienen gratuito: más de 30 solicitudes en 10 segundos desde una IP reciben HTTP 429 durante 10 segundos, y una vez que se agotan las respuestas del día (compartidas por todos los llamadores, se restablecen a las 00:00 UTC), un resultado lleva el enlace sin answer. Consulta los términos para los detalles.