firenum - retirement planner
Quando você pode se aposentar? Transforma sua idade, economias, renda e gastos em uma data de aposentadoria, verificada contra 500 mercados simulados e todos os anos de início desde 1872.
Servidor MCP hospedado
npx add-mcp 'https://firenum.com/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
Desenvolvedores
Coloque o firenum no seu site ou controle o Fire Planner a partir do código. Sem chave de API, sem custo.
O planner e as calculadoras do firenum rodam no navegador. As ferramentas abaixo permitem reutilizá-los: incorpore uma calculadora, mostre que você está listado no diretório ou envie dados financeiros estruturados ao Fire Planner e receba a resposta e um link para o plano. Todos os endpoints são abertos e sem autenticação.
Incorporar uma calculadora
Coloque qualquer uma das 8 calculadoras FIRE na sua página com um iframe. A incorporação se redimensiona conforme os leitores alteram as entradas e se adapta à moeda deles. O gerador de trechos de código fornece o código de moeda, tema e redimensionamento automático pronto para colar.
Abrir o gerador de incorporação
Selo de parceiro
Está listado no diretório de consultores? Mostre o selo "Featured on firenum" no seu site. Quatro layouts, claro e escuro, com código de copiar e colar.
Servidor MCP
https://firenum.com/mcp é um servidor Model Context Protocol com uma ferramenta, build_retirement_plan. Quando alguém diz ao ChatGPT, Claude ou outro assistente sua idade, renda, economias e gastos e pergunta quando pode se aposentar, se seu dinheiro vai durar ou qual é seu número Coast FIRE ou FIRE, o assistente envia esses números e recebe a resposta do planner e um link que abre o plano preenchido. Ele responde no chat com os números do firenum; o link é o plano completo.
HTTP streamable, sem estado, sem autenticação. A ferramenta é a operação REST abaixo: sua descrição, parâmetros e esquema de resultado vêm da especificação OpenAPI, e é somente leitura.
Conectar
- ChatGPT: chatgpt.com/plugins, depois +, depois Add custom MCP server, com a URL acima.
- Claude: Customize, depois Connectors, depois Add custom connector, com a URL acima e sem login.
- Claude Code:
claude mcp add --transport http firenum https://firenum.com/mcp - Le Chat: Connectors, depois + Add Connector, depois Custom MCP Connector, nomeado
firenum, com a URL acima. - Perplexity (Pro e superior): Account settings, depois Connectors, depois + Custom connector, depois Remote, com a URL acima e autenticação None.
- Gemini (contas pessoais dos EUA, 18+, inglês): gemini.google.com, Settings, depois Connected Apps, depois Add a custom app, com a URL acima.
Listado no Registro MCP oficial como com.firenum/fire-planner.
Chamada
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, também enviado como texto JSON, respondido quando esta página foi criada (outubro 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)."]
}
}
}
A resposta
A ferramenta MCP, a API REST e a API agente-a-agente retornam o mesmo answer: o do próprio Fire Planner, em suas palavras, como o plano o mostra quando aberto. O código do planner o calcula: o plano que o link gera, sua data de aposentadoria mais cedo (ou o ano escolhido), 500 simulações de Monte Carlo na semente única do planner e em todos os anos históricos de início. Onde não foi informado nada, ele usa os padrões do planner: crescimento de 7%, inflação de 3%, dinheiro durando até os 90 anos, sem impostos. Os valores estão no dinheiro de hoje e na moeda do usuário. Um campo que não se aplica é omitido.
Campo
O que significa
headline
Quando podem se aposentar e por quanto tempo o dinheiro dura com retornos médios, ou por que nenhuma data funciona.
monte_carlo
Em quantos dos 500 mercados simulados o dinheiro dura.
backtest
Em quantos anos históricos de início desde 1872 o dinheiro dura.
money_left
O que sobra no final, com retornos médios, no dinheiro de hoje.
spending_room
Com um ano de aposentadoria escolhido: o máximo que poderiam gastar por mês e ainda assim o dinheiro durar.
coast
Se poderiam parar de economizar hoje e ainda assim se aposentar então (Coast FIRE).
fire_number
25 vezes o gasto anual (a regra dos 4%), na moeda deles.
coast_number
O número Coast FIRE deles: quanto precisariam ter investido hoje para parar de economizar e ainda assim alcançar fire_number até coast_age, crescendo à taxa de crescimento do plano menos a inflação. Na moeda deles.
coast_age
A idade de aposentadoria para a qual coast_number se refere: a deles, se informada, senão 65.
assumed
O que a resposta assumiu que eles não informaram. Sem salário ou renda lateral, uma renda que cubra seus gastos, contribuições e pagamentos de dívidas até se aposentarem.
missing
Os parâmetros que o planner precisa antes de poder avaliar qualquer coisa (uma idade, gastos). Peça-os e chame novamente.
assumptions
No que a resposta se baseia, conforme as Premissas do plano e suas linhas: taxas em % ao ano, valores na moeda deles. models\ diz como cada modelo executado funciona, nas palavras do planner; accounts\, income\, spending\ e debts\ são os números deles como o planner os leu, cada um com seu crescimento, início e fim.
table
Ano a ano no dinheiro de hoje, as linhas e números que a Tabela do planner mostra (3 algarismos significativos): o primeiro e o último ano, cada 5º ano e o ano de aposentadoria. O patrimônio líquido é no final de cada ano: com retornos médios, e o 10º percentil, a mediana e o 90º percentil das simulações de Monte Carlo e dos anos de início do backtest, para cada modelo executado (0 quando o dinheiro acabou). Renda, gastos (pagamentos de dívidas não incluídos) e retiradas estão no caminho médio. notes\ nomeia um primeiro ano parcial e os anos que usam uma conta de aposentadoria enquanto a penalidade de retirada antecipada se aplica.
A data do título é o primeiro mês em que o dinheiro dura com retornos médios. Monte Carlo e o backtest dizem com que frequência isso sobrevive a oscilações reais do mercado, então considere-os juntos: uma contagem baixa significa que a data está em uma faca de dois gumes. Para avaliar outro ano de aposentadoria, chame novamente com retire.
API REST
POST /api/fire-plan recebe um objeto JSON de dados financeiros e retorna a resposta do planner e uma URL que abre o quick-start do Fire Planner com tudo preenchido. O leitor confere os números, adiciona o que falta e obtém um novo plano chamado "From a link" ao lado de quaisquer planos que já tenha.
A renda é anual. Despesas e contribuições são mensais. Os valores estão em unidades monetárias inteiras. Todo campo é opcional. Campos desconhecidos são ignorados. O CORS está aberto, então código de navegador pode chamá-la.
Requisição
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 }'
Resposta
{
"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)."]
}
}
}
A lista completa de parâmetros (ativos, dívidas, despesas por categoria, taxas de crescimento e inflação, moeda e o cronograma de aposentadoria) está na especificação OpenAPI: firenum.com/openapi.yaml.
API agente-a-agente
A mesma capacidade é exposta como uma habilidade A2A sobre JSON-RPC 2.0, para que um agente possa obter a resposta do planner e um link de plano sem fazer scraping no site. O cartão do agente é publicado em /.well-known/agent-card.json.
Envie os dados financeiros como um DataPart (kind: "data") dentro de uma chamada message/send. O resultado é uma tarefa concluída cujo artefato carrega a resposta REST como um DataPart e seu resumo como texto.
Requisição
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 } }
]
}
}
}
O texto do artefato
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
Envie message/send sem DataPart e o agente responde com um status input-required descrevendo os campos que espera. Mesmos nomes de parâmetros da API REST. Streaming e notificações push não são suportados.
Uso justo
Sem chave, sem custo, sem níveis de taxa para se inscrever. As APIs respondem a partir dos dados que você envia e criam uma URL de planner a partir deles. Elas não armazenam nada. A resposta é uma projeção desses números, não aconselhamento financeiro. Dois limites a mantêm gratuita: mais de 30 requisições em 10 segundos de um mesmo IP recebem HTTP 429 por 10 segundos, e quando as respostas do dia se esgotam (compartilhadas por todos os chamadores, redefinidas às 00:00 UTC) um resultado traz o link sem answer. Veja os termos para os detalhes.