Financial calculators over MCP: compound interest, FIRE, historical returns, deep links, 6 languages
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.
Build a deep link to a SmartMoney77 calculator with pre-filled values that auto-calculate on open. Use list_calculators first to find the slug and its parameters. Example: { "calculator": "bitcoin-history", "lang": "en", "params": { "amount": 1000, "year": 2015 } } → https://smartmoney77.com/en/bitcoin-history?amount=1000&year=2015
Calculator slug, e.g. 'fire-number' or 'bitcoin-history'.
Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted.
Pre-filled query params for the calculator, e.g. { expenses: 4000, saving: 1500 }. Use the exact param names from list_calculators.
Optional currency override, e.g. USD, GBP, SAR, MXN, BRL. Ignored for history calculators (always USD).
Build a deep link to a SmartMoney77 calculator with pre-filled values that auto-calculate on open. Use list_calculators first to find the slug and its parameters. Example: { "calculator": "bitcoin-history", "lang": "en", "params": { "amount": 1000, "year": 2015 } } → https://smartmoney77.com/en/bitcoin-history?amount=1000&year=2015
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| params | object | Pre-filled query params for the calculator, e.g. { expenses: 4000, saving: 1500 }. Use the exact param names from list_calculators. |
| currency | string | Optional currency override, e.g. USD, GBP, SAR, MXN, BRL. Ignored for history calculators (always USD). |
| calculator* | string | Calculator slug, e.g. 'fire-number' or 'bitcoin-history'. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"calculator"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"params": {
"type": "object",
"default": {},
"description": "Pre-filled query params for the calculator, e.g. { expenses: 4000, saving: 1500 }. Use the exact param names from list_calculators.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": [
"string",
"number"
]
}
},
"currency": {
"type": "string",
"description": "Optional currency override, e.g. USD, GBP, SAR, MXN, BRL. Ignored for history calculators (always USD)."
},
"calculator": {
"type": "string",
"description": "Calculator slug, e.g. 'fire-number' or 'bitcoin-history'."
}
}
}Build everything needed to share a SmartMoney77 calculation on social media in one call: the deep link to the result, a ready-to-embed 1200x628 image URL rendered on our servers, a link that opens the on-site share modal (1200x628, 1080x1080, 1080x1920 downloads), and a localized caption with attribution. Works for all 31 calculators. Example: { "calculator": "fire-number", "lang": "en", "params": { "expenses": 4000, "saving": 1500 } }
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| emoji | string | Optional emoji to open the caption with. Defaults to a chart emoji. |
| params | object | Calculation params to pre-fill, e.g. { amount: 1000, year: 2015 }. Same names as build_calculator_link. |
| currency | string | Optional currency override, e.g. USD, ILS, BRL. Ignored for history calculators (always USD). |
| calculator* | string | Calculator slug, e.g. 'fire-number' or 'bitcoin-history'. Use list_calculators to discover slugs. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"calculator"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"emoji": {
"type": "string",
"description": "Optional emoji to open the caption with. Defaults to a chart emoji."
},
"params": {
"type": "object",
"default": {},
"description": "Calculation params to pre-fill, e.g. { amount: 1000, year: 2015 }. Same names as build_calculator_link.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": [
"string",
"number"
]
}
},
"currency": {
"type": "string",
"description": "Optional currency override, e.g. USD, ILS, BRL. Ignored for history calculators (always USD)."
},
"calculator": {
"type": "string",
"description": "Calculator slug, e.g. 'fire-number' or 'bitcoin-history'. Use list_calculators to discover slugs."
}
}
}Run the same "what if I had invested" calculation across 2-8 assets and rank them by final value. USD only, same yearly low/high average pricing as the SmartMoney77 history calculators. Assets: bitcoin, ethereum, solana, sp500, nasdaq100, nvidia, microsoft, meta, apple, tesla, amazon, google, netflix, amd, gold, silver, oil. Example: { "amount": 1000, "buy_year": 2015, "assets": ["bitcoin", "sp500", "gold"] } → each asset's value today, sorted best first, each with its own reproduction link.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| amount* | number | Amount invested in USD, identical for every asset. |
| assets* | array | 2-8 asset slugs. Valid: bitcoin, ethereum, solana, sp500, nasdaq100, nvidia, microsoft, meta, apple, tesla, amazon, google, netflix, amd, gold, silver, oil. |
| buy_year* | integer | Year of purchase. |
| sell_year | any | Year to sell in, or "today" for the live market price. Default "today". |
Project the future value of an initial amount plus monthly contributions at a given annual return (monthly compounding), and return a link to the same calculation on SmartMoney77. Example: { "initial": 10000, "monthly": 500, "rate": 8, "years": 20 } → futureValue = 343,778. Monthly contributions are made at the end of each month (ordinary annuity).
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| rate* | number | Expected annual return in percent, e.g. 8. |
| years* | number | Investment horizon in years (1-80). |
| initial* | number | Initial lump sum, in the user's currency. |
| monthly | number | Monthly contribution (default 0). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"initial",
"rate",
"years"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"rate": {
"type": "number",
"description": "Expected annual return in percent, e.g. 8."
},
"years": {
"type": "number",
"maximum": 80,
"minimum": 1,
"description": "Investment horizon in years (1-80)."
},
"initial": {
"type": "number",
"minimum": 0,
"description": "Initial lump sum, in the user's currency."
},
"monthly": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "Monthly contribution (default 0)."
}
}
}Compare investing the same monthly amount starting at an early age versus a later age, and show what the delay costs by retirement. Example: { "monthly": 1000, "start": 25, "compare": 35, "retire": 67, "rate": 8 } → a large gap created mostly by compounding, not by the extra contributions.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| rate | number | Expected annual return in percent (default 10 — same as the site's field default). |
| start* | number | Early starting age. |
| retire | number | Retirement age (default 67). Must exceed `compare`. |
| compare* | number | Delayed starting age. Must be greater than `start`. |
| monthly* | number | Monthly amount invested in both scenarios. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"monthly",
"start",
"compare"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"rate": {
"type": "number",
"default": 10,
"description": "Expected annual return in percent (default 10 — same as the site's field default)."
},
"start": {
"type": "number",
"maximum": 90,
"minimum": 10,
"description": "Early starting age."
},
"retire": {
"type": "number",
"default": 67,
"maximum": 100,
"minimum": 20,
"description": "Retirement age (default 67). Must exceed `compare`."
},
"compare": {
"type": "number",
"maximum": 90,
"minimum": 10,
"description": "Delayed starting age. Must be greater than `start`."
},
"monthly": {
"type": "number",
"minimum": 1,
"description": "Monthly amount invested in both scenarios."
}
}
}Calculate how long it takes to clear a credit card balance at a fixed monthly payment and APR, plus the total interest paid. Example: { "balance": 10000, "payment": 400, "rate": 18 } → about 32 months and ~2,600 in interest. Errors when the payment is smaller than the first month's interest.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| rate* | number | Annual interest rate (APR) in percent, e.g. 18. |
| balance* | number | Outstanding card balance. |
| payment* | number | Fixed monthly payment. Must exceed the first month's interest. |
| purchases | number | New spending added to the card every month (default 0) — same as the site's `purchases` field. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"balance",
"payment",
"rate"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"rate": {
"type": "number",
"minimum": 0,
"description": "Annual interest rate (APR) in percent, e.g. 18."
},
"balance": {
"type": "number",
"minimum": 1,
"description": "Outstanding card balance."
},
"payment": {
"type": "number",
"minimum": 1,
"description": "Fixed monthly payment. Must exceed the first month's interest."
},
"purchases": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "New spending added to the card every month (default 0) — same as the site's `purchases` field."
}
}
}Calculate how many months of expenses current savings cover, the target emergency fund size, the gap, and how long it takes to close it. Example: { "expenses": 3000, "savings": 6000, "contribution": 500, "target": 6 } → 2 months covered, target 18,000, gap 12,000, 24 months to go.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| target | number | Target coverage in months (default 6). |
| savings | number | Current emergency savings (default 0). |
| expenses* | number | Monthly living expenses. |
| contribution | number | Monthly amount added to the fund (default 0). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"expenses"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"target": {
"type": "number",
"default": 6,
"maximum": 36,
"minimum": 1,
"description": "Target coverage in months (default 6)."
},
"savings": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "Current emergency savings (default 0)."
},
"expenses": {
"type": "number",
"minimum": 1,
"description": "Monthly living expenses."
},
"contribution": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "Monthly amount added to the fund (default 0)."
}
}
}Calculate the financial-independence (FIRE) target from monthly expenses using the 4% rule, plus how many years of saving are needed. Example: { "expenses": 4000, "saving": 1500, "current": 50000 } → fireNumber 1,200,000.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| rate | number | Expected annual real return in percent (default 5 — same as the site's field default). |
| saving* | number | Amount saved/invested per month. |
| current | number | Current invested savings (default 0). |
| expenses* | number | Monthly living expenses in retirement. |
| withdrawalRate | number | Safe withdrawal rate in percent (default 4 = the 4% rule). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"expenses",
"saving"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"rate": {
"type": "number",
"default": 5,
"description": "Expected annual real return in percent (default 5 — same as the site's field default)."
},
"saving": {
"type": "number",
"minimum": 0,
"description": "Amount saved/invested per month."
},
"current": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "Current invested savings (default 0)."
},
"expenses": {
"type": "number",
"minimum": 1,
"description": "Monthly living expenses in retirement."
},
"withdrawalRate": {
"type": "number",
"default": 4,
"description": "Safe withdrawal rate in percent (default 4 = the 4% rule)."
}
}
}Discovery helper: returns the standard prompt template, argument template, output-interpretation guide and related resources for one or all SmartMoney77 tools, so you can call them correctly without guessing. Example: { "tool": "fire_number" }.
| Argument | Type | Description |
|---|---|---|
| tool | string | Tool name to describe. Omit for all. One of: list_calculators, build_calculator_link, build_share_pack, compound_interest, fire_number, credit_card_payoff, emergency_fund, inflation_check, latte_factor, killer_fees, cost_of_waiting, historical_investment_return, compare_investments. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"tool": {
"type": "string",
"description": "Tool name to describe. Omit for all. One of: list_calculators, build_calculator_link, build_share_pack, compound_interest, fire_number, credit_card_payoff, emergency_fund, inflation_check, latte_factor, killer_fees, cost_of_waiting, historical_investment_return, compare_investments."
}
}
}Compute what a past investment would be worth today (or in a later year), using the same yearly low/high average prices as the SmartMoney77 history calculators. All amounts and prices are in USD only. Assets: bitcoin, ethereum, solana, sp500, nasdaq100, nvidia, microsoft, meta, apple, tesla, amazon, google, netflix, amd, gold, silver, oil. Example: { "asset": "bitcoin", "amount": 1000, "buy_year": 2015 } → units bought, current value, profit, total return and CAGR, plus a link that reproduces it on the site.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| asset* | string | Asset slug. One of: bitcoin, ethereum, solana, sp500, nasdaq100, nvidia, microsoft, meta, apple, tesla, amazon, google, netflix, amd, gold, silver, oil. |
| amount* | number | Amount invested in USD. |
| buy_year* | integer | Year of purchase. Must be within the asset's data range. |
| sell_year | any | Year to sell in, or "today" for the live market price. Default "today". |
Calculate how much purchasing power cash loses to inflation over time, and what nominal amount keeps the same buying power. Example: { "amount": 100000, "rate": 3, "years": 10 } → realValue ≈ 74,409 and equivalentNeeded ≈ 134,392.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| rate | number | Annual inflation rate in percent (default 3). |
| years* | number | Number of years (1-80). |
| amount* | number | Amount of money held today. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"amount",
"years"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"rate": {
"type": "number",
"default": 3,
"description": "Annual inflation rate in percent (default 3)."
},
"years": {
"type": "number",
"maximum": 80,
"minimum": 1,
"description": "Number of years (1-80)."
},
"amount": {
"type": "number",
"minimum": 1,
"description": "Amount of money held today."
}
}
}Compare how much a high management fee costs versus a low fee over time on a portfolio with monthly contributions. Example: { "portfolio": 100000, "monthly": 1000, "highFee": 1.5, "lowFee": 0.3, "years": 25 } → the low-fee portfolio ends materially higher.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| rate | number | Gross annual return in percent before fees (default 8 — same as the site). |
| years* | number | Investment horizon in years (1-60). |
| lowFee* | number | Lower annual fee in percent, e.g. 0.3. |
| highFee* | number | Higher annual fee in percent, e.g. 1.5. |
| monthly | number | Monthly contribution (default 0). |
| portfolio* | number | Current portfolio value. |
Calculate what a small recurring daily expense (coffee, cigarettes, takeaway) costs over time and what it would grow to if invested instead. Monthly cost = cost × perWeek × 52 / 12, and monthly contributions are made at the end of each month (ordinary annuity). Example: { "cost": 5, "years": 30, "rate": 8, "perWeek": 5 } → ~108/month spent and a six-figure invested balance.
| Argument | Type | Description |
|---|---|---|
| cost* | number | Cost of the habit per day. |
| lang | string | Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted. |
| rate | number | Expected annual investment return in percent (default 8). |
| type | string | Optional habit key for the link, e.g. 'coffee'. |
| years | number | Number of years (default 30). |
| perWeek | number | How many days per week the expense happens (default 7). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cost"
],
"properties": {
"cost": {
"type": "number",
"minimum": 0.1,
"description": "Cost of the habit per day."
},
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"rate": {
"type": "number",
"default": 8,
"description": "Expected annual investment return in percent (default 8)."
},
"type": {
"type": "string",
"description": "Optional habit key for the link, e.g. 'coffee'."
},
"years": {
"type": "number",
"default": 30,
"maximum": 80,
"minimum": 1,
"description": "Number of years (default 30)."
},
"perWeek": {
"type": "number",
"default": 7,
"maximum": 7,
"minimum": 1,
"description": "How many days per week the expense happens (default 7)."
}
}
}List every SmartMoney77 calculator with its slug, accepted URL parameters and supported languages/currencies. Call this before build_calculator_link. Example: { "group": "history" } returns only the 'what if I had invested' tools.
| Argument | Type | Description |
|---|---|---|
| group | string | Filter: 'planning' for financial planning tools, 'history' for what-if investment history tools, 'all' (default) for everything. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"group": {
"enum": [
"planning",
"history",
"all"
],
"type": "string",
"description": "Filter: 'planning' for financial planning tools, 'history' for what-if investment history tools, 'all' (default) for everything."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"amount",
"buy_year",
"assets"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"amount": {
"type": "number",
"minimum": 1,
"description": "Amount invested in USD, identical for every asset."
},
"assets": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8,
"minItems": 2,
"description": "2-8 asset slugs. Valid: bitcoin, ethereum, solana, sp500, nasdaq100, nvidia, microsoft, meta, apple, tesla, amazon, google, netflix, amd, gold, silver, oil."
},
"buy_year": {
"type": "integer",
"maximum": 2100,
"minimum": 1900,
"description": "Year of purchase."
},
"sell_year": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1900
},
{
"type": "string",
"const": "today"
}
],
"default": "today",
"description": "Year to sell in, or \"today\" for the live market price. Default \"today\"."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"asset",
"amount",
"buy_year"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"asset": {
"type": "string",
"description": "Asset slug. One of: bitcoin, ethereum, solana, sp500, nasdaq100, nvidia, microsoft, meta, apple, tesla, amazon, google, netflix, amd, gold, silver, oil."
},
"amount": {
"type": "number",
"minimum": 1,
"description": "Amount invested in USD."
},
"buy_year": {
"type": "integer",
"maximum": 2100,
"minimum": 1900,
"description": "Year of purchase. Must be within the asset's data range."
},
"sell_year": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1900
},
{
"type": "string",
"const": "today"
}
],
"default": "today",
"description": "Year to sell in, or \"today\" for the live market price. Default \"today\"."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"portfolio",
"highFee",
"lowFee",
"years"
],
"properties": {
"lang": {
"enum": [
"he",
"en",
"ar",
"es",
"pt",
"in"
],
"type": "string",
"default": "en",
"description": "Language of the reply: he, en, ar, es, pt or in. Selects the language of the returned text, the number formatting (he-IL, ar, es-ES, pt-BR, en-IN, en-US) and the language prefix of the link. Default en. Structured fields always stay raw and unformatted."
},
"rate": {
"type": "number",
"default": 8,
"description": "Gross annual return in percent before fees (default 8 — same as the site)."
},
"years": {
"type": "number",
"maximum": 60,
"minimum": 1,
"description": "Investment horizon in years (1-60)."
},
"lowFee": {
"type": "number",
"minimum": 0,
"description": "Lower annual fee in percent, e.g. 0.3."
},
"highFee": {
"type": "number",
"minimum": 0,
"description": "Higher annual fee in percent, e.g. 1.5."
},
"monthly": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "Monthly contribution (default 0)."
},
"portfolio": {
"type": "number",
"minimum": 0,
"description": "Current portfolio value."
}
}
}