Free finance and trading calculators as MCP tools: risk/reward, RMD, Coast FIRE, inflation.
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.
The amount invested today that, growing alone with no further contributions, reaches a full FIRE number by retirement age.
Expected annual nominal investment return, as a percent
e.g. 4 for the 4% rule
Annual investment fee drag, as a percent
e.g. Social Security, pension
The amount invested today that, growing alone with no further contributions, reaches a full FIRE number by retirement age.
| Argument | Type | Description |
|---|---|---|
| age* | number | |
| feesPct | number | Annual investment fee drag, as a percent |
| invested* | number | |
| retireAge* | number | |
| annualSpend* | number | |
| inflationPct* | number | |
| contribMonthly | number | |
| nominalReturnPct* | number | Expected annual nominal investment return, as a percent |
| otherAnnualIncome | number | e.g. Social Security, pension |
| safeWithdrawalRatePct* | number | e.g. 4 for the 4% rule |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"age",
"retireAge",
"invested",
"annualSpend",
"nominalReturnPct",
"inflationPct",
"safeWithdrawalRatePct"
],
"properties": {
"age": {
"type": "number"
},
"feesPct": {
"type": "number",
"description": "Annual investment fee drag, as a percent"
},
"invested": {
"type": "number"
},
"retireAge": {
"type": "number"
},
"annualSpend": {
"type": "number"
},
"inflationPct": {
"type": "number"
},
"contribMonthly": {
"type": "number"
},
"nominalReturnPct": {
"type": "number",
"description": "Expected annual nominal investment return, as a percent"
},
"otherAnnualIncome": {
"type": "number",
"description": "e.g. Social Security, pension"
},
"safeWithdrawalRatePct": {
"type": "number",
"description": "e.g. 4 for the 4% rule"
}
}
}Account growth curve, total return and the gain from compounding vs. simple interest.
| Argument | Type | Description |
|---|---|---|
| start* | number | Starting balance |
| periods* | number | Number of periods to compound over (max 600) |
| ratePct* | number | Return per period, as a percent, e.g. 1 for 1% |
| contribution | number | Recurring contribution added each period |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"start",
"ratePct",
"periods"
],
"properties": {
"start": {
"type": "number",
"description": "Starting balance"
},
"periods": {
"type": "number",
"description": "Number of periods to compound over (max 600)"
},
"ratePct": {
"type": "number",
"description": "Return per period, as a percent, e.g. 1 for 1%"
},
"contribution": {
"type": "number",
"description": "Recurring contribution added each period"
}
}
}The annual (yearly-average) US CPI-U index value for a given year.
| Argument | Type | Description |
|---|---|---|
| year* | number |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"year"
],
"properties": {
"year": {
"type": "number"
}
}
}How many months of runway a set of resources covers against monthly expenses, net of unemployment benefits and COBRA.
| Argument | Type | Description |
|---|---|---|
| fund | number | Emergency fund savings |
| cobra | number | Monthly COBRA health insurance cost |
| severance | number | |
| targetMonths | number | Target runway in months, default 6 |
| otherResources | number | |
| monthlyExpenses* | number | |
| unemploymentBenefit | number | Monthly unemployment benefit |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"monthlyExpenses"
],
"properties": {
"fund": {
"type": "number",
"description": "Emergency fund savings"
},
"cobra": {
"type": "number",
"description": "Monthly COBRA health insurance cost"
},
"severance": {
"type": "number"
},
"targetMonths": {
"type": "number",
"description": "Target runway in months, default 6"
},
"otherResources": {
"type": "number"
},
"monthlyExpenses": {
"type": "number"
},
"unemploymentBenefit": {
"type": "number",
"description": "Monthly unemployment benefit"
}
}
}Retracement (0-100%) and extension (127.2-261.8%) price levels for a swing high/low.
| Argument | Type | Description |
|---|---|---|
| low* | number | |
| high* | number | |
| direction* | string | The swing's own direction |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"high",
"low",
"direction"
],
"properties": {
"low": {
"type": "number"
},
"high": {
"type": "number"
},
"direction": {
"enum": [
"up",
"down"
],
"type": "string",
"description": "The swing's own direction"
}
}
}A 0-100 score from savings rate, emergency fund coverage and debt-to-income, each against a named benchmark.
| Argument | Type | Description |
|---|---|---|
| emergencyFund* | number | |
| monthlyIncome* | number | |
| monthlyExpenses* | number | |
| monthlyDebtPayments* | number |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"monthlyIncome",
"monthlyExpenses",
"emergencyFund",
"monthlyDebtPayments"
],
"properties": {
"emergencyFund": {
"type": "number"
},
"monthlyIncome": {
"type": "number"
},
"monthlyExpenses": {
"type": "number"
},
"monthlyDebtPayments": {
"type": "number"
}
}
}Daily ECB reference cross rate between two currencies.
| Argument | Type | Description |
|---|---|---|
| to* | string | Currency code, e.g. USD |
| from* | string | Currency code, e.g. EUR |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"description": "Currency code, e.g. USD"
},
"from": {
"type": "string",
"description": "Currency code, e.g. EUR"
}
}
}Accrued and redeemable value of a Series I savings bond, from its issue month, face value and an as-of month.
| Argument | Type | Description |
|---|---|---|
| asOfMonth* | string | YYYY-MM |
| faceValue* | number | |
| issueMonth* | string | YYYY-MM |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"issueMonth",
"asOfMonth",
"faceValue"
],
"properties": {
"asOfMonth": {
"type": "string",
"description": "YYYY-MM"
},
"faceValue": {
"type": "number"
},
"issueMonth": {
"type": "string",
"description": "YYYY-MM"
}
}
}What a dollar amount in one year is worth in another year's dollars, based on annual US CPI-U.
| Argument | Type | Description |
|---|---|---|
| amount* | number | |
| toYear* | number | |
| fromYear* | number |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount",
"fromYear",
"toYear"
],
"properties": {
"amount": {
"type": "number"
},
"toYear": {
"type": "number"
},
"fromYear": {
"type": "number"
}
}
}Estimated liquidation price and distance from entry for a leveraged crypto position.
| Argument | Type | Description |
|---|---|---|
| qty* | number | |
| mode* | string | |
| side* | string | |
| entry* | number | |
| leverage* | number | |
| crossBalance | number | Wallet balance backing the position, cross mode only |
| maintenanceMarginRatePct* | number | Exchange maintenance margin rate, as a percent |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"side",
"mode",
"entry",
"leverage",
"maintenanceMarginRatePct",
"qty"
],
"properties": {
"qty": {
"type": "number"
},
"mode": {
"enum": [
"cross",
"isolated"
],
"type": "string"
},
"side": {
"enum": [
"long",
"short"
],
"type": "string"
},
"entry": {
"type": "number"
},
"leverage": {
"type": "number"
},
"crossBalance": {
"type": "number",
"description": "Wallet balance backing the position, cross mode only"
},
"maintenanceMarginRatePct": {
"type": "number",
"description": "Exchange maintenance margin rate, as a percent"
}
}
}Notional value, required margin, and effective leverage for a leveraged position.
| Argument | Type | Description |
|---|---|---|
| lots* | number | |
| price* | number | |
| symbol* | string | Instrument symbol. One of: EURUSD (EUR/USD), GBPUSD (GBP/USD), USDJPY (USD/JPY), USDCHF (USD/CHF), AUDUSD (AUD/USD), USDCAD (USD/CAD), NZDUSD (NZD/USD), EURGBP (EUR/GBP), EURJPY (EUR/JPY), GBPJPY (GBP/JPY), XAUUSD (Gold (XAU/USD)), XAGUSD (Silver (XAG/USD)), USOIL (WTI Crude (USOIL)), US30 (Dow Jones (US30)), NAS100 (Nasdaq 100 (NAS100)), SPX500 (S&P 500 (SPX500)), GER40 (DAX (GER40)), BTCUSD (Bitcoin (BTC/USD)), ETHUSD (Ethereum (ETH/USD)) |
| leverage* | number | |
| contractSize | number | |
| accountEquity | number | Account equity, used to compute effective leverage and % of equity used |
| accountCurrency | string | Account currency, e.g. "USD". Defaults to the instrument's own quote currency. |
Cash value of one pip/point for a given instrument, lot size and account currency.
| Argument | Type | Description |
|---|---|---|
| lots* | number | |
| symbol* | string | Instrument symbol. One of: EURUSD (EUR/USD), GBPUSD (GBP/USD), USDJPY (USD/JPY), USDCHF (USD/CHF), AUDUSD (AUD/USD), USDCAD (USD/CAD), NZDUSD (NZD/USD), EURGBP (EUR/GBP), EURJPY (EUR/JPY), GBPJPY (GBP/JPY), XAUUSD (Gold (XAU/USD)), XAGUSD (Silver (XAG/USD)), USOIL (WTI Crude (USOIL)), US30 (Dow Jones (US30)), NAS100 (Nasdaq 100 (NAS100)), SPX500 (S&P 500 (SPX500)), GER40 (DAX (GER40)), BTCUSD (Bitcoin (BTC/USD)), ETHUSD (Ethereum (ETH/USD)) |
| pipSize | number | |
| contractSize | number | |
| accountCurrency | string | Account currency, e.g. "USD". Defaults to the instrument's own quote currency. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"symbol",
"lots"
],
"properties": {
"lots": {
"type": "number"
},
"symbol": {
"type": "string",
"description": "Instrument symbol. One of: EURUSD (EUR/USD), GBPUSD (GBP/USD), USDJPY (USD/JPY), USDCHF (USD/CHF), AUDUSD (AUD/USD), USDCAD (USD/CAD), NZDUSD (NZD/USD), EURGBP (EUR/GBP), EURJPY (EUR/JPY), GBPJPY (GBP/JPY), XAUUSD (Gold (XAU/USD)), XAGUSD (Silver (XAG/USD)), USOIL (WTI Crude (USOIL)), US30 (Dow Jones (US30)), NAS100 (Nasdaq 100 (NAS100)), SPX500 (S&P 500 (SPX500)), GER40 (DAX (GER40)), BTCUSD (Bitcoin (BTC/USD)), ETHUSD (Ethereum (ETH/USD))"
},
"pipSize": {
"type": "number"
},
"contractSize": {
"type": "number"
},
"accountCurrency": {
"type": "string",
"description": "Account currency, e.g. \"USD\". Defaults to the instrument's own quote currency."
}
}
}Classic, Fibonacci, Camarilla and Woodie support/resistance levels from a prior high, low and close.
| Argument | Type | Description |
|---|---|---|
| low* | number | |
| high* | number | |
| close* | number |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"high",
"low",
"close"
],
"properties": {
"low": {
"type": "number"
},
"high": {
"type": "number"
},
"close": {
"type": "number"
}
}
}Lot size, units and per-lot pip value from account risk, a stop distance, and an instrument.
| Argument | Type | Description |
|---|---|---|
| symbol* | string | Instrument symbol. One of: EURUSD (EUR/USD), GBPUSD (GBP/USD), USDJPY (USD/JPY), USDCHF (USD/CHF), AUDUSD (AUD/USD), USDCAD (USD/CAD), NZDUSD (NZD/USD), EURGBP (EUR/GBP), EURJPY (EUR/JPY), GBPJPY (GBP/JPY), XAUUSD (Gold (XAU/USD)), XAGUSD (Silver (XAG/USD)), USOIL (WTI Crude (USOIL)), US30 (Dow Jones (US30)), NAS100 (Nasdaq 100 (NAS100)), SPX500 (S&P 500 (SPX500)), GER40 (DAX (GER40)), BTCUSD (Bitcoin (BTC/USD)), ETHUSD (Ethereum (ETH/USD)) |
| riskPct* | number | Percent of the account to risk, e.g. 1 for 1% |
| contractSize | number | Override the instrument's default contract size |
| stopDistance* | number | Stop distance in price units (pips x pip size, or |entry - stop|) |
| accountBalance* | number | |
| conversionRate | number | Override the quote-to-account conversion rate |
| accountCurrency | string | Account currency, e.g. "USD". Defaults to the instrument's own quote currency. |
Cash result, pips, and return-on-margin for a closed or hypothetical trade.
| Argument | Type | Description |
|---|---|---|
| exit* | number | |
| lots* | number | |
| entry* | number | |
| symbol* | string | Instrument symbol. One of: EURUSD (EUR/USD), GBPUSD (GBP/USD), USDJPY (USD/JPY), USDCHF (USD/CHF), AUDUSD (AUD/USD), USDCAD (USD/CAD), NZDUSD (NZD/USD), EURGBP (EUR/GBP), EURJPY (EUR/JPY), GBPJPY (GBP/JPY), XAUUSD (Gold (XAU/USD)), XAGUSD (Silver (XAG/USD)), USOIL (WTI Crude (USOIL)), US30 (Dow Jones (US30)), NAS100 (Nasdaq 100 (NAS100)), SPX500 (S&P 500 (SPX500)), GER40 (DAX (GER40)), BTCUSD (Bitcoin (BTC/USD)), ETHUSD (Ethereum (ETH/USD)) |
| leverage | number | Used to compute return-on-margin; omit to skip that figure |
| direction* | string | |
| accountCurrency | string | Account currency, e.g. "USD". Defaults to the instrument's own quote currency. |
Whether a pay change kept pace with inflation, in real (inflation-adjusted) terms, using annual US CPI.
| Argument | Type | Description |
|---|---|---|
| newPay* | number | |
| oldPay* | number | |
| newYear* | number | |
| oldYear* | number |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"oldPay",
"oldYear",
"newPay",
"newYear"
],
"properties": {
"newPay": {
"type": "number"
},
"oldPay": {
"type": "number"
},
"newYear": {
"type": "number"
},
"oldYear": {
"type": "number"
}
}
}Reward:risk ratio, breakeven win rate, and expectancy in R multiples from an entry, stop and target.
| Argument | Type | Description |
|---|---|---|
| stop* | number | |
| entry* | number | |
| target* | number | |
| winRatePct* | number | Expected win rate, 0-100 |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"entry",
"stop",
"target",
"winRatePct"
],
"properties": {
"stop": {
"type": "number"
},
"entry": {
"type": "number"
},
"target": {
"type": "number"
},
"winRatePct": {
"type": "number",
"description": "Expected win rate, 0-100"
}
}
}This year's RMD from a prior-year-end IRA/employer-plan balance and age, per the IRS Uniform Lifetime Table.
| Argument | Type | Description |
|---|---|---|
| age* | number | Age at the end of this year |
| priorYearBalance* | number |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"priorYearBalance",
"age"
],
"properties": {
"age": {
"type": "number",
"description": "Age at the end of this year"
},
"priorYearBalance": {
"type": "number"
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"symbol",
"lots",
"price",
"leverage"
],
"properties": {
"lots": {
"type": "number"
},
"price": {
"type": "number"
},
"symbol": {
"type": "string",
"description": "Instrument symbol. One of: EURUSD (EUR/USD), GBPUSD (GBP/USD), USDJPY (USD/JPY), USDCHF (USD/CHF), AUDUSD (AUD/USD), USDCAD (USD/CAD), NZDUSD (NZD/USD), EURGBP (EUR/GBP), EURJPY (EUR/JPY), GBPJPY (GBP/JPY), XAUUSD (Gold (XAU/USD)), XAGUSD (Silver (XAG/USD)), USOIL (WTI Crude (USOIL)), US30 (Dow Jones (US30)), NAS100 (Nasdaq 100 (NAS100)), SPX500 (S&P 500 (SPX500)), GER40 (DAX (GER40)), BTCUSD (Bitcoin (BTC/USD)), ETHUSD (Ethereum (ETH/USD))"
},
"leverage": {
"type": "number"
},
"contractSize": {
"type": "number"
},
"accountEquity": {
"type": "number",
"description": "Account equity, used to compute effective leverage and % of equity used"
},
"accountCurrency": {
"type": "string",
"description": "Account currency, e.g. \"USD\". Defaults to the instrument's own quote currency."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"symbol",
"accountBalance",
"riskPct",
"stopDistance"
],
"properties": {
"symbol": {
"type": "string",
"description": "Instrument symbol. One of: EURUSD (EUR/USD), GBPUSD (GBP/USD), USDJPY (USD/JPY), USDCHF (USD/CHF), AUDUSD (AUD/USD), USDCAD (USD/CAD), NZDUSD (NZD/USD), EURGBP (EUR/GBP), EURJPY (EUR/JPY), GBPJPY (GBP/JPY), XAUUSD (Gold (XAU/USD)), XAGUSD (Silver (XAG/USD)), USOIL (WTI Crude (USOIL)), US30 (Dow Jones (US30)), NAS100 (Nasdaq 100 (NAS100)), SPX500 (S&P 500 (SPX500)), GER40 (DAX (GER40)), BTCUSD (Bitcoin (BTC/USD)), ETHUSD (Ethereum (ETH/USD))"
},
"riskPct": {
"type": "number",
"description": "Percent of the account to risk, e.g. 1 for 1%"
},
"contractSize": {
"type": "number",
"description": "Override the instrument's default contract size"
},
"stopDistance": {
"type": "number",
"description": "Stop distance in price units (pips x pip size, or |entry - stop|)"
},
"accountBalance": {
"type": "number"
},
"conversionRate": {
"type": "number",
"description": "Override the quote-to-account conversion rate"
},
"accountCurrency": {
"type": "string",
"description": "Account currency, e.g. \"USD\". Defaults to the instrument's own quote currency."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"symbol",
"direction",
"lots",
"entry",
"exit"
],
"properties": {
"exit": {
"type": "number"
},
"lots": {
"type": "number"
},
"entry": {
"type": "number"
},
"symbol": {
"type": "string",
"description": "Instrument symbol. One of: EURUSD (EUR/USD), GBPUSD (GBP/USD), USDJPY (USD/JPY), USDCHF (USD/CHF), AUDUSD (AUD/USD), USDCAD (USD/CAD), NZDUSD (NZD/USD), EURGBP (EUR/GBP), EURJPY (EUR/JPY), GBPJPY (GBP/JPY), XAUUSD (Gold (XAU/USD)), XAGUSD (Silver (XAG/USD)), USOIL (WTI Crude (USOIL)), US30 (Dow Jones (US30)), NAS100 (Nasdaq 100 (NAS100)), SPX500 (S&P 500 (SPX500)), GER40 (DAX (GER40)), BTCUSD (Bitcoin (BTC/USD)), ETHUSD (Ethereum (ETH/USD))"
},
"leverage": {
"type": "number",
"description": "Used to compute return-on-margin; omit to skip that figure"
},
"direction": {
"enum": [
"buy",
"sell"
],
"type": "string"
},
"accountCurrency": {
"type": "string",
"description": "Account currency, e.g. \"USD\". Defaults to the instrument's own quote currency."
}
}
}