Untilfree FIRE app (App Store, Google Play): your freedom date and FIRE retirement numbers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user wants a FIRE calculator or asks when can I retire, when can I retire early or stop working, their FIRE number or financial independence date, or how long until work is optional (also retire early in the UK, Canada or Australia), given age, invested savings, monthly investing and monthly spending; or what a purchase or a monthly cost does to that date (how many days of freedom a car, phone, holiday or recurring bill costs, the opportunity cost of buying it). Returns the FIRE number (4% rule by default, adjustable safe withdrawal rate), the date and days left, the age then, a cautious/base/optimistic range and a year-by-year table; with a purchase, also how many days it moves the date and what the money would grow to if invested instead. Ask for any missing number instead of guessing. Do not use for a question about one specific retirement age (use retire_at_age), comparing products or shop prices, loans, stock or fund picks, tax, pension or Social Security benefit rules, or live market data. An estimate, not financial advice.
Current age in years.
Invested savings today (not counting the home you live in).
Monthly spending today; the plan keeps this lifestyle.
Amount invested each month.
ISO currency code used only for display.
Optional: a purchase or monthly cost. Adds how many days it moves the freedom day and what the money would grow to if invested instead.
Yearly growth after inflation, in percent. Default 5.
Safe withdrawal rate in percent. Default 4.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http untilfree https://untilfree.mcp.srofia.com/mcp
Use this when the user wants a FIRE calculator or asks when can I retire, when can I retire early or stop working, their FIRE number or financial independence date, or how long until work is optional (also retire early in the UK, Canada or Australia), given age, invested savings, monthly investing and monthly spending; or what a purchase or a monthly cost does to that date (how many days of freedom a car, phone, holiday or recurring bill costs, the opportunity cost of buying it). Returns the FIRE number (4% rule by default, adjustable safe withdrawal rate), the date and days left, the age then, a cautious/base/optimistic range and a year-by-year table; with a purchase, also how many days it moves the date and what the money would grow to if invested instead. Ask for any missing number instead of guessing. Do not use for a question about one specific retirement age (use retire_at_age), comparing products or shop prices, loans, stock or fund picks, tax, pension or Social Security benefit rules, or live market data. An estimate, not financial advice.
| Argument | Type | Description |
|---|---|---|
| age* | integer | Current age in years. |
| currency | string | ISO currency code used only for display. |
| netWorth* | number | Invested savings today (not counting the home you live in). |
| purchase | object | Optional: a purchase or monthly cost. Adds how many days it moves the freedom day and what the money would grow to if invested instead. |
| realReturnPct | number | Yearly growth after inflation, in percent. Default 5. |
| monthlyExpenses* | number | Monthly spending today; the plan keeps this lifestyle. |
| monthlyInvestment* | number | Amount invested each month. |
| withdrawalRatePct | number | Safe withdrawal rate in percent. Default 4. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"age",
"netWorth",
"monthlyInvestment",
"monthlyExpenses"
],
"properties": {
"age": {
"type": "integer",
"maximum": 90,
"minimum": 14,
"description": "Current age in years."
},
"currency": {
"enum": [
"USD",
"EUR",
"GBP",
"CAD",
"AUD",
"NZD",
"CHF",
"SEK",
"NOK",
"DKK",
"SGD",
"JPY"
],
"type": "string",
"default": "USD",
"description": "ISO currency code used only for display."
},
"netWorth": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Invested savings today (not counting the home you live in)."
},
"purchase": {
"type": "object",
"required": [
"amount"
],
"properties": {
"item": {
"type": "string",
"maxLength": 60,
"description": "Short name of the item, for display only."
},
"amount": {
"type": "number",
"maximum": 10000000,
"minimum": 1,
"description": "The price."
},
"frequency": {
"enum": [
"one_off",
"monthly"
],
"type": "string",
"default": "one_off",
"description": "one_off for a single purchase, monthly for a recurring cost (subscription, car payment, rent increase)."
}
},
"description": "Optional: a purchase or monthly cost. Adds how many days it moves the freedom day and what the money would grow to if invested instead."
},
"realReturnPct": {
"type": "number",
"default": 5,
"maximum": 12,
"minimum": 0.5,
"description": "Yearly growth after inflation, in percent. Default 5."
},
"monthlyExpenses": {
"type": "number",
"maximum": 1000000,
"minimum": 1,
"description": "Monthly spending today; the plan keeps this lifestyle."
},
"monthlyInvestment": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Amount invested each month."
},
"withdrawalRatePct": {
"type": "number",
"default": 4,
"maximum": 10,
"minimum": 2,
"description": "Safe withdrawal rate in percent. Default 4."
}
}
}Use this when the user asks for their coast FIRE number, lean FIRE, fat FIRE or barista FIRE number, a coast FIRE calculator, barista FIRE calculator or FIRE number calculator for a variant, or what the 4% rule gives at leaner or richer spending. Needs age, invested savings, monthly spending and optionally monthly investing and the age to coast to (default 65). Use coast when the user wants to know if they can stop investing and still retire on time (amount needed now to coast to that age). Use barista when the user wants to leave full-time work early and cover the rest with part-time income (part-time income needed on top of what savings pay). Use lean when the user wants the number for a frugal, minimal budget. Use fat when the user wants the number for a comfortable or generous lifestyle. Do not use for an exact retire-at-age check (use retire_at_age), job or salary advice, tax, or picking investments. An estimate, not financial advice.
| Argument | Type | Description |
|---|---|---|
| age* | integer | Current age in years. |
| kind | string | Which FIRE variant: lean, fat, coast, barista, or all. |
| currency | string | ISO currency code used only for display. |
| netWorth* | number | Invested savings today (not counting the home you live in). |
| targetAge | integer | Traditional retirement age that coast FIRE coasts to. Default 65. |
Use this when the user asks how long will my savings last at a monthly withdrawal, for example how long will $500k or $1 million last in retirement, how long can I live on $X, will my money last to 90, a career break or sabbatical runway, the 4% rule in reverse, a safe withdrawal rate or whether X% is a safe withdrawal rate. Returns years until it runs out (or that growth covers it), the monthly amount that never runs out, a range and a year-by-year table. Do not use for annuity quotes, pension or Social Security payouts, tax on withdrawals, or choosing investments. An estimate, not financial advice.
| Argument | Type | Description |
|---|---|---|
| balance* | number | Savings today. |
| currency | string | ISO currency code used only for display. |
| realReturnPct | number | Yearly growth after inflation, in percent. Default 5. |
| monthlyWithdrawal* | number | Amount taken out every month, in today’s money. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"balance",
"monthlyWithdrawal"
],
"properties": {
"balance": {
"type": "number",
"maximum": 100000000,
"minimum": 100,
"description": "Savings today."
},
"currency": {
"enum": [
"USD",
"EUR",
"GBP",
"CAD",
"AUD",
"NZD",
"CHF",
"SEK",
"NOK",
"DKK",
"SGD",
"JPY"
],
"type": "string",
"default": "USD",
"description": "ISO currency code used only for display."
},
"realReturnPct": {
"type": "number",
"default": 5,
"maximum": 12,
"minimum": 0.5,
"description": "Yearly growth after inflation, in percent. Default 5."
},
"monthlyWithdrawal": {
"type": "number",
"maximum": 1000000,
"minimum": 1,
"description": "Amount taken out every month, in today’s money."
}
}
}Use this when the user wants a retirement calculator for a chosen age: "how much do I need to retire", "how much do I need to retire at 45 / 50 / 55 / 60 / 65", "how to retire at 50", "can I retire at 50 with $500k", "am I on track to retire at 55", "when can I retire" at a specific age, or the 25x rule / 4% rule for their spending (also in GBP, CAD, AUD or EUR). Needs monthly or yearly spending in retirement and the target age. Age, invested savings and monthly contribution are optional: without them it returns the amount needed with 4%, 3.5% and 3.3% withdrawal rate variants; with them it adds the age they reach it, the shortfall or surplus at the target age and the extra monthly amount needed. Do not use for an open "when can I retire" question with no age in mind (use calculate_freedom_day), pension, Social Security or annuity amounts and full retirement age rules, tax, or picking investments. An estimate, not financial advice.
| Argument | Type | Description |
|---|---|---|
| age | integer | Current age. Optional; with it the tool shows how far current savings are from the target. |
| currency | string | ISO currency code used only for display. |
| netWorth | number | Invested savings today. Optional, defaults to 0 when age is given. |
| spending* | number | Spending in retirement, in today’s money. |
| targetAge* | integer | Age at which the person wants to retire or make work optional. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.
| realReturnPct |
| number |
| Yearly growth after inflation, in percent. Default 5. |
| monthlyExpenses* | number | Monthly spending today; the plan keeps this lifestyle. |
| monthlyInvestment | number | Amount invested each month. 0 if nothing. |
| withdrawalRatePct | number | Safe withdrawal rate in percent. Default 4. |
| fatMonthlyExpenses | number | Fat monthly spending. Default 150% of monthlyExpenses. |
| leanMonthlyExpenses | number | Lean monthly spending. Default 75% of monthlyExpenses. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"age",
"netWorth",
"monthlyExpenses"
],
"properties": {
"age": {
"type": "integer",
"maximum": 90,
"minimum": 14,
"description": "Current age in years."
},
"kind": {
"enum": [
"lean",
"fat",
"coast",
"barista",
"all"
],
"type": "string",
"default": "all",
"description": "Which FIRE variant: lean, fat, coast, barista, or all."
},
"currency": {
"enum": [
"USD",
"EUR",
"GBP",
"CAD",
"AUD",
"NZD",
"CHF",
"SEK",
"NOK",
"DKK",
"SGD",
"JPY"
],
"type": "string",
"default": "USD",
"description": "ISO currency code used only for display."
},
"netWorth": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Invested savings today (not counting the home you live in)."
},
"targetAge": {
"type": "integer",
"default": 65,
"maximum": 100,
"minimum": 15,
"description": "Traditional retirement age that coast FIRE coasts to. Default 65."
},
"realReturnPct": {
"type": "number",
"default": 5,
"maximum": 12,
"minimum": 0.5,
"description": "Yearly growth after inflation, in percent. Default 5."
},
"monthlyExpenses": {
"type": "number",
"maximum": 1000000,
"minimum": 1,
"description": "Monthly spending today; the plan keeps this lifestyle."
},
"monthlyInvestment": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Amount invested each month. 0 if nothing."
},
"withdrawalRatePct": {
"type": "number",
"default": 4,
"maximum": 10,
"minimum": 2,
"description": "Safe withdrawal rate in percent. Default 4."
},
"fatMonthlyExpenses": {
"type": "number",
"maximum": 1000000,
"minimum": 1,
"description": "Fat monthly spending. Default 150% of monthlyExpenses."
},
"leanMonthlyExpenses": {
"type": "number",
"maximum": 1000000,
"minimum": 1,
"description": "Lean monthly spending. Default 75% of monthlyExpenses."
}
}
}| realReturnPct | number | Yearly growth after inflation, in percent. Default 5. |
| spendingPeriod | string | Whether spending is per month or per year. |
| monthlyInvestment | number | Amount invested each month. Optional, defaults to 0 when age is given. |
| withdrawalRatePct | number | Safe withdrawal rate in percent. Default 4. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"spending",
"targetAge"
],
"properties": {
"age": {
"type": "integer",
"maximum": 90,
"minimum": 14,
"description": "Current age. Optional; with it the tool shows how far current savings are from the target."
},
"currency": {
"enum": [
"USD",
"EUR",
"GBP",
"CAD",
"AUD",
"NZD",
"CHF",
"SEK",
"NOK",
"DKK",
"SGD",
"JPY"
],
"type": "string",
"default": "USD",
"description": "ISO currency code used only for display."
},
"netWorth": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Invested savings today. Optional, defaults to 0 when age is given."
},
"spending": {
"type": "number",
"maximum": 12000000,
"minimum": 1,
"description": "Spending in retirement, in today’s money."
},
"targetAge": {
"type": "integer",
"maximum": 100,
"minimum": 15,
"description": "Age at which the person wants to retire or make work optional."
},
"realReturnPct": {
"type": "number",
"default": 5,
"maximum": 12,
"minimum": 0.5,
"description": "Yearly growth after inflation, in percent. Default 5."
},
"spendingPeriod": {
"enum": [
"monthly",
"yearly"
],
"type": "string",
"default": "monthly",
"description": "Whether spending is per month or per year."
},
"monthlyInvestment": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Amount invested each month. Optional, defaults to 0 when age is given."
},
"withdrawalRatePct": {
"type": "number",
"default": 4,
"maximum": 10,
"minimum": 2,
"description": "Safe withdrawal rate in percent. Default 4."
}
}
}