Compound interest, investment, retirement, CD, S&P 500 and DCA calculators with charts.
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.
Compound interest calculator with an interactive chart. Works out what a starting amount and monthly deposits grow to at a fixed rate, compounded daily, monthly or yearly, and gives the APY. Use it for savings growth, CD and high-yield savings balances, future value at a fixed rate, and questions like what $10,000 becomes in 10 years at 5%.
Whole years, from 1 to 60.
Dollars added at the end of each month.
Starting amount, in US dollars.
How often interest is added to the balance.
Yearly interest rate as a percent, so 5 means 5%.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http calculators https://tools.amaltash.com/mcp
Compound interest calculator with an interactive chart. Works out what a starting amount and monthly deposits grow to at a fixed rate, compounded daily, monthly or yearly, and gives the APY. Use it for savings growth, CD and high-yield savings balances, future value at a fixed rate, and questions like what $10,000 becomes in 10 years at 5%.
| Argument | Type | Description |
|---|---|---|
| years* | integer | Whole years, from 1 to 60. |
| per_month* | number | Dollars added at the end of each month. |
| principal* | number | Starting amount, in US dollars. |
| compounding* | string | How often interest is added to the balance. |
| annual_rate_percent* | number | Yearly interest rate as a percent, so 5 means 5%. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"principal",
"per_month",
"annual_rate_percent",
"compounding",
"years"
],
"properties": {
"years": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Whole years, from 1 to 60."
},
"per_month": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Dollars added at the end of each month."
},
"principal": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Starting amount, in US dollars."
},
"compounding": {
"enum": [
"yearly",
"half-yearly",
"quarterly",
"monthly",
"daily"
],
"type": "string",
"description": "How often interest is added to the balance."
},
"annual_rate_percent": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Yearly interest rate as a percent, so 5 means 5%."
}
},
"additionalProperties": false
}Portfolio stress test with an interactive chart. Works out how much a portfolio would lose if stocks fell by a chosen percent, given its mix of stocks, bonds and cash, with an optional loss limit.
| Argument | Type | Description |
|---|---|---|
| cash_pct* | number | Share of the portfolio in cash, in percent. |
| bonds_pct* | number | Share of the portfolio in bonds, in percent. |
| stocks_pct* | number | Share of the portfolio in stocks, in percent. Stocks, bonds and cash must add up to 100. |
| portfolio_value* | number | Total portfolio value in US dollars. |
| stock_crash_pct* | number | How far stocks fall, in percent, from 0 to 100. |
| drawdown_limit_pct | any | Optional limit on the portfolio loss, in percent of the portfolio. Leave null for no limit. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"portfolio_value",
"stocks_pct",
"bonds_pct",
"cash_pct",
"stock_crash_pct"
],
"properties": {
"cash_pct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Share of the portfolio in cash, in percent."
},
"bonds_pct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Share of the portfolio in bonds, in percent."
},
"stocks_pct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Share of the portfolio in stocks, in percent. Stocks, bonds and cash must add up to 100."
},
"portfolio_value": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0,
"description": "Total portfolio value in US dollars."
},
"stock_crash_pct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "How far stocks fall, in percent, from 0 to 100."
},
"drawdown_limit_pct": {
"anyOf": [
{
"type": "number",
"maximum": 100,
"minimum": 0.01
},
{
"type": "null"
}
],
"description": "Optional limit on the portfolio loss, in percent of the portfolio. Leave null for no limit."
}
},
"additionalProperties": false
}Dollar-cost averaging vs lump sum calculator with an interactive chart. Compares investing a fixed amount at each price in a list with investing the same total at the first price, both valued at the last price. Use it when the person provides the price series.
| Argument | Type | Description |
|---|---|---|
| prices* | array | One price per period, oldest first, from 1 to 120 prices. |
| amount_per_period* | number | Dollars invested at each price, from 0 to 1,000,000,000. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"amount_per_period",
"prices"
],
"properties": {
"prices": {
"type": "array",
"items": {
"type": "number",
"maximum": 1000000000,
"minimum": 1e-8,
"description": "The price for one period, above 0."
},
"maxItems": 120,
"minItems": 1,
"description": "One price per period, oldest first, from 1 to 120 prices."
},
"amount_per_period": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Dollars invested at each price, from 0 to 1,000,000,000."
}
},
"additionalProperties": false
}Drawdown and loss recovery calculator with an interactive chart. Works out the percentage gain needed to get back to even after a loss, and how many years that takes at a yearly return the person enters.
| Argument | Type | Description |
|---|---|---|
| loss_pct* | number | The loss, in percent, from 0 up to but not including 100. |
| annual_return_pct | any | Optional yearly return, in percent, used to estimate years to recover. Leave null to skip the estimate. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"loss_pct"
],
"properties": {
"loss_pct": {
"type": "number",
"minimum": 0,
"description": "The loss, in percent, from 0 up to but not including 100.",
"exclusiveMaximum": 100
},
"annual_return_pct": {
"anyOf": [
{
"type": "number",
"maximum": 100,
"minimum": 0.01
},
{
"type": "null"
}
],
"description": "Optional yearly return, in percent, used to estimate years to recover. Leave null to skip the estimate."
}
},
"additionalProperties": false
}Lists the long-run market rates, which can be used for future plans, and common stocks and funds, which can only be used to look at the past. Stock questions work for any US stock or fund we hold history for, past only. Use it to find a valid long-run rate id.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Net worth calculator with an interactive chart. Subtracts debts from assets and, when an age is given, shows the median net worth for that age group from a US government survey. Use it for a net worth total or a net worth by age comparison.
| Argument | Type | Description |
|---|---|---|
| age | integer | Age in whole years, from 18 to 110, to compare with others that age. |
| debts* | number | Total of everything owed, as a positive number of US dollars. |
| assets* | number | Total value of everything owned, in US dollars. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"assets",
"debts"
],
"properties": {
"age": {
"type": "integer",
"maximum": 110,
"minimum": 18,
"description": "Age in whole years, from 18 to 110, to compare with others that age."
},
"debts": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0,
"description": "Total of everything owed, as a positive number of US dollars."
},
"assets": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0,
"description": "Total value of everything owned, in US dollars."
}
},
"additionalProperties": false
}Investment growth calculator with an interactive chart. Works out what regular deposits could grow to at a long-run market average or a yearly rate you choose. Use it for monthly investment plans and questions like what $10 a day or $500 a month could become in 20 or 30 years. Single stocks cannot be run forward.
| Argument | Type | Description |
|---|---|---|
| asset | string | A long-run rate to use. Give this or custom_annual_percent, not both. |
| years* | integer | Whole years, 1 to 60. |
| amount* | number | Dollars put in each time, above 0. |
| cadence* | string | How often the amount goes in. |
| starting_amount | number | Dollars already invested. Defaults to 0. |
| custom_annual_percent | number | Your own yearly return in percent, so 7 means 7%. Give this or asset, not both. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"amount",
"cadence",
"years"
],
"properties": {
"asset": {
"enum": [
"sp",
"6040",
"bonds",
"bills",
"lost"
],
"type": "string",
"description": "A long-run rate to use. Give this or custom_annual_percent, not both."
},
"years": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Whole years, 1 to 60."
},
"amount": {
"type": "number",
"maximum": 1000000,
"description": "Dollars put in each time, above 0.",
"exclusiveMinimum": 0
},
"cadence": {
"enum": [
"day",
"week",
"month"
],
"type": "string",
"description": "How often the amount goes in."
},
"starting_amount": {
"type": "number",
"default": 0,
"maximum": 1000000000,
"minimum": 0,
"description": "Dollars already invested. Defaults to 0."
},
"custom_annual_percent": {
"type": "number",
"maximum": 50,
"minimum": -50,
"description": "Your own yearly return in percent, so 7 means 7%. Give this or asset, not both."
}
},
"additionalProperties": false
}Position size calculator with an interactive chart. Works out the dollar size of one position at a percent cap the person chooses, how many positions of that size fit, and the amount at risk. It does not pick investments or judge whether a size is suitable.
| Argument | Type | Description |
|---|---|---|
| portfolio_value* | number | Total portfolio value in US dollars. |
| max_position_pct* | number | The cap per position or theme, in percent of the portfolio, the person chose. |
| stop_distance_pct | any | Optional stop distance below entry, in percent. Leave null if there is none. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"portfolio_value",
"max_position_pct"
],
"properties": {
"portfolio_value": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0,
"description": "Total portfolio value in US dollars."
},
"max_position_pct": {
"type": "number",
"maximum": 100,
"minimum": 0.01,
"description": "The cap per position or theme, in percent of the portfolio, the person chose."
},
"stop_distance_pct": {
"anyOf": [
{
"type": "number",
"maximum": 100,
"minimum": 0.01
},
{
"type": "null"
}
],
"description": "Optional stop distance below entry, in percent. Leave null if there is none."
}
},
"additionalProperties": false
}Stock return and dollar-cost averaging (DCA) calculator with an interactive chart. Shows what investing in a US stock or fund would have become, using real past prices, as regular deposits, a lump sum, or both. Use it for what-if-I-had-invested and DCA questions about a ticker such as AAPL or VOO, over the last 120 months or fewer. It covers the past only and gives no estimate of the future.
| Argument | Type | Description |
|---|---|---|
| amount* | number | Dollars invested each time. Can be 0 if there is a starting amount. |
| ticker* | string | A US stock or fund ticker, such as AAPL or SPY. |
| cadence | string | How often the amount goes in: day, week or month. Defaults to month. |
| months_back* | integer | How many months before the latest data to begin, from 1 to 120. |
| starting_amount | number | Dollars invested once at the start. Defaults to 0. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ticker",
"amount",
"months_back"
],
"properties": {
"amount": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Dollars invested each time. Can be 0 if there is a starting amount."
},
"ticker": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "A US stock or fund ticker, such as AAPL or SPY."
},
"cadence": {
"enum": [
"day",
"week",
"month"
],
"type": "string",
"default": "month",
"description": "How often the amount goes in: day, week or month. Defaults to month."
},
"months_back": {
"type": "integer",
"maximum": 120,
"minimum": 1,
"description": "How many months before the latest data to begin, from 1 to 120."
},
"starting_amount": {
"type": "number",
"default": 0,
"maximum": 100000000,
"minimum": 0,
"description": "Dollars invested once at the start. Defaults to 0."
}
},
"additionalProperties": false
}Retirement calculator with an interactive chart of the balance by age. Replays a plan through every complete stretch of real US market history since 1928 and reports how often the money lasted. Use it when the monthly spending is known, for questions like can I retire at 60, or how long will my savings last.
| Argument | Type | Description |
|---|---|---|
| age* | integer | Age today, in whole years, from 18 to 100. |
| stock* | number | Share held in stocks, from 0 to 1. The rest is in 10-year US Treasuries. |
| end_age* | integer | Age the money must last to. It must be above retire_age, and the span from age must fit in the data since 1928. |
| savings* | number | Money saved so far, in US dollars. |
| retire_age* | integer | Age when saving stops and spending starts. It cannot be below age. |
| other_income* | number | Monthly income in retirement from other sources, such as Social Security, in today's dollars. |
| save_monthly* |
Retirement withdrawal calculator with an interactive chart. Finds the highest monthly spending that lasted in at least a chosen share of real US market history since 1928. Use it when the spending amount is the unknown, for retirement income questions, and to check the 4% rule.
| Argument | Type | Description |
|---|---|---|
| age* | integer | Age today, in whole years, from 18 to 100. |
| share* | number | Share of past periods the money must last in, from 0.5 to 1. |
| stock* | number | Share held in stocks, from 0 to 1. The rest is in 10-year US Treasuries. |
| end_age* | integer | Age the money must last to. It must be above retire_age, and the span from age must fit in the data since 1928. |
| savings* | number | Money saved so far, in US dollars. |
| retire_age* | integer | Age when saving stops and spending starts. It cannot be below age. |
| other_income* | number | Monthly income in retirement from other sources, such as Social Security, in today's dollars. |
Finds US stocks and funds by ticker or company name. Used by the calculator card's stock picker.
| Argument | Type | Description |
|---|---|---|
| query* | string | A ticker or part of a company name. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "A ticker or part of a company name."
}
},
"additionalProperties": false
}Sequence of returns calculator with an interactive chart. Runs a list of yearly returns with a fixed yearly withdrawal in the order given and in reverse, and compares where the balance ends.
| Argument | Type | Description |
|---|---|---|
| returns_pct* | array | Yearly returns in percent, in order, from 1 to 60 years. |
| start_balance* | number | Starting balance in US dollars. |
| annual_withdrawal* | number | Amount withdrawn at the start of each year, in US dollars. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"start_balance",
"annual_withdrawal",
"returns_pct"
],
"properties": {
"returns_pct": {
"type": "array",
"items": {
"type": "number",
"maximum": 1000,
"description": "One yearly return in percent, above -100.",
"exclusiveMinimum": -100
},
"maxItems": 60,
"minItems": 1,
"description": "Yearly returns in percent, in order, from 1 to 60 years."
},
"start_balance": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0,
"description": "Starting balance in US dollars."
},
"annual_withdrawal": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0,
"description": "Amount withdrawn at the start of each year, in US dollars."
}
},
"additionalProperties": false
}S&P 500 return calculator with an interactive chart. Shows what a set amount in the S&P 500 would have become between two years from 1928 to 2025, using real yearly returns. It also gives the amount put in after inflation and the worst year in the span.
| Argument | Type | Description |
|---|---|---|
| amount* | number | Dollars invested each time. |
| cadence* | string | How often the money goes in: day, week, month, year, or once. |
| to_year* | integer | Last year, included, from 1928 to 2025. Cannot be before from_year. |
| from_year* | integer | First year, from 1928 to 2025. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"amount",
"cadence",
"from_year",
"to_year"
],
"properties": {
"amount": {
"type": "number",
"maximum": 100000000,
"description": "Dollars invested each time.",
"exclusiveMinimum": 0
},
"cadence": {
"enum": [
"day",
"week",
"month",
"year",
"once"
],
"type": "string",
"description": "How often the money goes in: day, week, month, year, or once."
},
"to_year": {
"type": "integer",
"maximum": 2025,
"minimum": 1928,
"description": "Last year, included, from 1928 to 2025. Cannot be before from_year."
},
"from_year": {
"type": "integer",
"maximum": 2025,
"minimum": 1928,
"description": "First year, from 1928 to 2025."
}
},
"additionalProperties": false
}Treasury bill ladder calculator with an interactive timeline chart. Lays out how much goes in each same-term bill, how far apart to buy them, and the first and last dates. Shows simple interest only if a rate is given.
| Argument | Type | Description |
|---|---|---|
| rungs* | integer | How many bills to stagger, a whole number no larger than the term in weeks (13 at most for 52-week bills). |
| amount* | number | Total dollars to split across the bills, from 0 to 1,000,000,000. |
| rate_pct | any | An annual interest rate the person chooses, in percent, from 0 to 25. Leave out to skip interest. |
| start_date* | string | The first purchase date, as YYYY-MM-DD. |
| term_weeks* | number | Length of each bill in weeks: 4, 8, 13, 17, 26 or 52. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"amount",
"rungs",
"term_weeks",
"start_date"
],
"properties": {
"rungs": {
"type": "integer",
"maximum": 26,
"minimum": 1,
"description": "How many bills to stagger, a whole number no larger than the term in weeks (13 at most for 52-week bills)."
},
"amount": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Total dollars to split across the bills, from 0 to 1,000,000,000."
},
"rate_pct": {
"anyOf": [
{
"type": "number",
"maximum": 25,
"minimum": 0
},
{
"type": "null"
}
],
"description": "An annual interest rate the person chooses, in percent, from 0 to 25. Leave out to skip interest."
},
"start_date": {
"type": "string",
"format": "date",
"pattern": "^20\\d{2}-",
"description": "The first purchase date, as YYYY-MM-DD."
},
"term_weeks": {
"enum": [
4,
8,
13,
17,
26,
52
],
"type": "number",
"description": "Length of each bill in weeks: 4, 8, 13, 17, 26 or 52."
}
},
"additionalProperties": false
}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 10, 2026.
| number |
| Dollars added each month until retirement. |
| spend_monthly* | number | Monthly spending in retirement, in today's dollars. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"age",
"retire_age",
"end_age",
"savings",
"save_monthly",
"other_income",
"stock",
"spend_monthly"
],
"properties": {
"age": {
"type": "integer",
"maximum": 100,
"minimum": 18,
"description": "Age today, in whole years, from 18 to 100."
},
"stock": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Share held in stocks, from 0 to 1. The rest is in 10-year US Treasuries."
},
"end_age": {
"type": "integer",
"maximum": 120,
"minimum": 19,
"description": "Age the money must last to. It must be above retire_age, and the span from age must fit in the data since 1928."
},
"savings": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Money saved so far, in US dollars."
},
"retire_age": {
"type": "integer",
"maximum": 110,
"minimum": 18,
"description": "Age when saving stops and spending starts. It cannot be below age."
},
"other_income": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Monthly income in retirement from other sources, such as Social Security, in today's dollars."
},
"save_monthly": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Dollars added each month until retirement."
},
"spend_monthly": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Monthly spending in retirement, in today's dollars."
}
},
"additionalProperties": false
}| save_monthly* | number | Dollars added each month until retirement. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"age",
"retire_age",
"end_age",
"savings",
"save_monthly",
"other_income",
"stock",
"share"
],
"properties": {
"age": {
"type": "integer",
"maximum": 100,
"minimum": 18,
"description": "Age today, in whole years, from 18 to 100."
},
"share": {
"type": "number",
"maximum": 1,
"minimum": 0.5,
"description": "Share of past periods the money must last in, from 0.5 to 1."
},
"stock": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Share held in stocks, from 0 to 1. The rest is in 10-year US Treasuries."
},
"end_age": {
"type": "integer",
"maximum": 120,
"minimum": 19,
"description": "Age the money must last to. It must be above retire_age, and the span from age must fit in the data since 1928."
},
"savings": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Money saved so far, in US dollars."
},
"retire_age": {
"type": "integer",
"maximum": 110,
"minimum": 18,
"description": "Age when saving stops and spending starts. It cannot be below age."
},
"other_income": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Monthly income in retirement from other sources, such as Social Security, in today's dollars."
},
"save_monthly": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Dollars added each month until retirement."
}
},
"additionalProperties": false
}