# io.github.VladimirWrites/nestegg-calculators (remote · nestegg.money)

90+ pure finance calculators: loans, investing, bonds, options, tax. Stateless, stores nothing.

- Trust score: 64/100 (medium)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `nestegg.money`: 64/100 (this document), [markdown](https://verifymcp.io/servers/vladimirwrites-nestegg-calculators/nestegg.md), [page](https://verifymcp.io/servers/vladimirwrites-nestegg-calculators/nestegg)

## Channel facts

- Endpoint: `https://nestegg.money/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.4.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 99 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 84/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 8857 tokens (~87/item across 101 items; 99 tools + 2 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http vladimirwrites-nestegg-calculators https://nestegg.money/mcp
```

### Codex

```toml
[mcp_servers.vladimirwrites-nestegg-calculators]
url = "https://nestegg.money/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vladimirwrites-nestegg-calculators": {
      "type": "remote",
      "url": "https://nestegg.money/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add vladimirwrites-nestegg-calculators --url https://nestegg.money/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  vladimirwrites-nestegg-calculators:
    url: "https://nestegg.money/mcp"
```

### Other

```json
{
  "mcpServers": {
    "vladimirwrites-nestegg-calculators": {
      "type": "http",
      "url": "https://nestegg.money/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 63, −2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 63, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 63)

First indexed and scored.

## MCP tools (99)

### `amortization` (~320 tokens)

Amortization Schedule

Monthly loan amortization schedule and summary. Supports dated extra principal payments and a rate-fixed period. detail controls output size: 'summary' (default) returns totals plus a per-year breakdown; 'monthly' returns the full schedule (paginate with offset/limit). Returns numbers and schedules; no advice.

Input parameters:

- `amount` (number, required): Loan principal.
- `detail` (string): Output size. summary (default): totals + yearly breakdown. monthly: full schedule (use offset/limit to paginate).
- `extra` (array): Optional dated extra principal payments.
- `fixedUntil` (string): Optional. Rate is certain until this ISO date; beyond it the schedule is an estimate.
- `limit` (number): Max monthly rows when detail=monthly (default and maximum 360; page with nextOffset).
- `mode` (string, required): Fix the term (compute the payment) or fix the payment (compute the term).
- `offset` (number): Monthly schedule start index when detail=monthly (default 0).
- `payment` (number): Monthly payment, used when mode is 'payment'.
- `rate` (number, required): Annual interest rate in percent (6 = 6%).
- `rateSteps` (array): Optional rate changes (e.g. after a Zinsbindung). The installment is held; from each date the outstanding balance continues at the new annual rate.
- `startDate` (string, required): First payment month as an ISO date (YYYY-MM-DD).
- `termYears` (number): Term in years, used when mode is 'term'.

Output parameters:

- `monthlyPayment` (number): Monthly payment.
- `nextOffset` (number): Next pagination offset, or null.
- `payments` (number): Number of payments made.
- `payoffDate` (string): Payoff date, ISO.
- `schedule` (array): Monthly rows (only when detail=monthly).
- `scheduleTotal` (number): Total monthly rows (when detail=monthly).
- `scheduledMonths` (number): Scheduled months (null if open-ended).
- `totalInterest` (number): Total interest paid.
- `totalPaid` (number): Total paid (incl. extras).
- `yearly` (array): Per-year totals: { year, interest, principal, extra, payments, endBalance }.

### `loan-payoff` (~183 tokens)

Loan Payoff

Time and interest saved by paying a fixed extra amount every month on a loan, versus the baseline schedule.

Input parameters:

- `amount` (number, required): Loan principal.
- `extra` (array): Optional dated extra principal payments.
- `extraMonthly` (number, required): Extra principal paid each month.
- `fixedUntil` (string): Optional. Rate is certain until this ISO date; beyond it the schedule is an estimate.
- `mode` (string, required): Fix the term (compute the payment) or fix the payment (compute the term).
- `payment` (number): Monthly payment, used when mode is 'payment'.
- `rate` (number, required): Annual interest rate in percent (6 = 6%).
- `startDate` (string, required): First payment month as an ISO date (YYYY-MM-DD).
- `termYears` (number): Term in years, used when mode is 'term'.

Output parameters:

- `accelerated` (object): Accelerated { months, totalInterest, payoffDate }.
- `baseline` (object): Baseline { months, totalInterest, payoffDate }.
- `interestSaved` (number): Interest saved.
- `monthsSaved` (number): Months saved.

### `future-value` (~51 tokens)

Future Value

Future value of a single lump sum compounded annually.

Input parameters:

- `annualRatePct` (number, required): Annual growth rate in percent.
- `principal` (number, required): Starting amount.
- `years` (number, required): Number of years.

Output parameters:

- `value` (number): Result value.

### `contributions` (~71 tokens)

Future Value of Contributions

Future value of a fixed monthly contribution, optionally stepping up each year.

Input parameters:

- `annualRatePct` (number, required): Annual growth rate in percent.
- `contribGrowthPct` (number): Optional. Contribution step-up percent per year.
- `monthly` (number, required): Monthly contribution.
- `months` (number, required): Number of months.

Output parameters:

- `value` (number): Result value.

### `cagr` (~61 tokens)

CAGR

Compound annual growth rate between two values over a number of years. Returns a decimal (0.07 means 7%).

Input parameters:

- `begin` (number, required): Starting value.
- `end` (number, required): Ending value.
- `years` (number, required): Number of years.

Output parameters:

- `value` (number): Result value.

### `savings-rate` (~40 tokens)

Savings Rate

Fraction of income saved (savings divided by income). Returns a decimal.

Input parameters:

- `income` (number, required): Income.
- `savings` (number, required): Amount saved.

Output parameters:

- `value` (number): Result value.

### `fx-convert` (~60 tokens)

FX Convert

Convert an amount using a rate supplied by the caller (units of target currency per unit of source). No rate is ever looked up.

Input parameters:

- `amount` (number, required): Amount to convert.
- `rate` (number, required): Rate: target units per source unit.

Output parameters:

- `value` (number): Result value.

### `depreciate` (~85 tokens)

Depreciation

Value after compounding down (or up) at a yearly percentage rate over a number of years. This is the method the app uses for long-term assets.

Input parameters:

- `annualRatePct` (number, required): Annual rate in percent.
- `up` (boolean): false depreciates, true appreciates.
- `value` (number, required): Starting value.
- `years` (number, required): Number of years.

Output parameters:

- `value` (number): Result value.

### `straight-line-depreciation` (~68 tokens)

Straight-Line Depreciation

Straight-line depreciation: value falling evenly to a salvage value over a useful life.

Input parameters:

- `salvage` (number, required): Salvage value.
- `usefulYears` (number, required): Useful life in years.
- `value` (number, required): Starting value.
- `yearsElapsed` (number, required): Years elapsed.

Output parameters:

- `value` (number): Result value.

### `fire-number` (~141 tokens)

FIRE Number

FIRE target nest egg from annual spend and a safe withdrawal rate (default 4%), plus the gap from today and the years to reach it given optional savings and growth. No advice.

Input parameters:

- `annualContribution` (number): Optional. Amount saved per year (default 0).
- `annualRatePct` (number): Optional. Annual portfolio growth in percent (default 0).
- `annualSpend` (number, required): Yearly spending the nest egg must cover.
- `currentNestEgg` (number): Optional. Amount already saved (default 0).
- `withdrawalRatePct` (number): Safe withdrawal rate in percent (default 4 = the 4% rule).

Output parameters:

- `gap` (number): Gap from today.
- `target` (number): Target nest egg.
- `yearsToFI` (number): Years to FI (null if unreachable).

### `required-contribution` (~88 tokens)

Required Contribution

Inverse of contributions: the fixed monthly amount needed to reach a target future value over a number of months, given an optional starting balance.

Input parameters:

- `annualRatePct` (number, required): Annual growth rate in percent.
- `months` (number, required): Number of months.
- `presentValue` (number): Optional. Starting balance (default 0).
- `targetValue` (number, required): Future value goal.

Output parameters:

- `monthly` (number): Monthly contribution needed (null if horizon<=0).

### `inflation-adjust` (~96 tokens)

Inflation Adjust

Convert a nominal amount to today's purchasing power (real), or with toNominal inflate a real amount forward, at a given annual inflation rate.

Input parameters:

- `amount` (number, required): Amount to adjust.
- `inflationRatePct` (number, required): Annual inflation rate in percent.
- `toNominal` (boolean): false (default) deflates nominal to real; true inflates real to nominal.
- `years` (number, required): Number of years.

Output parameters:

- `value` (number): Result value.

### `effective-rate` (~110 tokens)

Effective Rate

Convert a nominal annual rate to the effective annual rate (APY) for a compounding frequency, or with toNominal recover the nominal rate from an APY.

Input parameters:

- `periodsPerYear` (number, required): Compounding periods per year (12 monthly, 365 daily).
- `ratePct` (number, required): The rate in percent (nominal, or effective when toNominal is true).
- `toNominal` (boolean): false (default) returns the effective rate; true returns the nominal rate.

Output parameters:

- `effectiveRatePct` (number): Effective annual rate (APY), percent.
- `nominalRatePct` (number): Nominal rate, percent (when toNominal).

### `npv` (~72 tokens)

NPV

Net present value of a cashflow series (index 0 is today; outflows negative) discounted at a per-period rate.

Input parameters:

- `cashflows` (array, required): Cashflows by period, starting at period 0. Outflows are negative.
- `discountRatePct` (number, required): Discount rate per period in percent.

Output parameters:

- `npv` (number): Net present value.

### `irr` (~64 tokens)

IRR

Internal rate of return: the per-period rate that zeroes the NPV of a cashflow series. Returns a percent, or null when the series never crosses zero.

Input parameters:

- `cashflows` (array, required): Cashflows by period, starting at period 0. Outflows are negative.

Output parameters:

- `irrPct` (number): Internal rate of return, percent (null if none).

### `refi-breakeven` (~100 tokens)

Refinance Break-Even

Refinance break-even: monthly saving, whole months to recoup closing costs, and (if remainingMonths given) the net saving over the remaining term.

Input parameters:

- `closingCosts` (number, required): Upfront cost to refinance.
- `currentPayment` (number, required): Current monthly payment.
- `newPayment` (number, required): New monthly payment after refinancing.
- `remainingMonths` (number): Optional. Months left on the loan, for the lifetime saving.

Output parameters:

- `breakevenMonths` (number): Whole months to recoup (null if no saving).
- `lifetimeSaving` (number): Net lifetime saving (null if no term).
- `monthlySaving` (number): Monthly saving.

### `emergency-fund` (~45 tokens)

Emergency Fund

Months of runway: liquid savings divided by monthly expenses.

Input parameters:

- `liquidSavings` (number, required): Cash and liquid savings on hand.
- `monthlyExpenses` (number, required): Total monthly expenses.

Output parameters:

- `months` (number): Months of runway (null if expenses<=0).

### `mortgage-affordability` (~155 tokens)

Mortgage Affordability

Maximum loan and home price the income supports: the DTI cap on gross monthly income (less existing debts) sets the payment, whose present value at the rate and term is the loan.

Input parameters:

- `annualIncome` (number, required): Gross annual income.
- `downPayment` (number): Optional. Cash down payment, added to the loan for the home price (default 0).
- `dtiPct` (number, required): Max share of gross monthly income for the payment, in percent (e.g. 36).
- `monthlyDebts` (number): Optional. Existing monthly debt payments (default 0).
- `rate` (number, required): Annual interest rate in percent.
- `termYears` (number, required): Loan term in years.

Output parameters:

- `maxHomePrice` (number): Max home price.
- `maxLoan` (number): Max loan.
- `maxMonthlyPayment` (number): Max payment.

### `debt-payoff` (~105 tokens)

Debt Payoff

Multi-debt payoff plan under a fixed monthly budget. method 'avalanche' (highest rate first) minimizes interest; 'snowball' (smallest balance first) clears accounts soonest. Returns months, total interest, and payoff order; flags insolvent budgets.

Input parameters:

- `debts` (array, required): The debts to pay off.
- `method` (string): Payoff strategy (default avalanche).
- `monthlyBudget` (number, required): Total amount available across all debts each month.

Output parameters:

- `insolvent` (boolean): True if the budget can't keep up.
- `months` (number): Months to debt-free (null if insolvent).
- `payoffOrder` (array): Debt names in payoff order.
- `totalInterest` (number): Total interest (null if insolvent).

### `portfolio-longevity` (~117 tokens)

Portfolio Longevity

How many years a balance lasts while withdrawing from it: the balance grows each year, then the withdrawal (optionally stepping up) is taken. Returns the depletion year, or sustainable=true when it outlasts 200 years.

Input parameters:

- `annualRatePct` (number, required): Annual portfolio growth in percent.
- `annualWithdrawal` (number, required): Amount withdrawn in the first year.
- `balance` (number, required): Starting balance.
- `withdrawalGrowthPct` (number): Optional. Yearly step-up of the withdrawal in percent (default 0).

Output parameters:

- `sustainable` (boolean): True if it outlasts 200 years.
- `years` (number): Depletion year (null if sustainable).

### `present-value` (~66 tokens)

Present Value

Present value of a single future amount discounted annually. The inverse of future-value.

Input parameters:

- `annualRatePct` (number, required): Annual discount rate in percent.
- `futureAmount` (number, required): Amount received in the future.
- `years` (number, required): Number of years until the amount is received.

Output parameters:

- `pv` (number): Present value.

### `required-return` (~95 tokens)

Required Return

Annual return needed to grow a starting value to a target over a number of years, optionally with a fixed annual contribution. With no contribution this equals CAGR. Returns a percent, or null when unreachable.

Input parameters:

- `annualContribution` (number): Optional. Amount added each year (default 0).
- `begin` (number, required): Starting value.
- `end` (number, required): Target ending value.
- `years` (number, required): Number of years.

Output parameters:

- `ratePct` (number): Annual rate, percent (null if unreachable).

### `yield-to-maturity` (~122 tokens)

Yield to Maturity

Bond yield to maturity: the nominal annual yield that prices a bond at the given price, with periodic coupons and face returned at maturity. Solved numerically. Returns a percent, or null.

Input parameters:

- `couponRatePct` (number, required): Annual coupon rate in percent of face.
- `faceValue` (number, required): Face (par) value repaid at maturity.
- `periodsPerYear` (number): Coupon periods per year (default 2 = semiannual).
- `price` (number, required): Current bond price.
- `years` (number, required): Years to maturity.

Output parameters:

- `yieldPct` (number): Nominal annual yield, percent (null if none).

### `tax-from-brackets` (~78 tokens)

Tax from Brackets

Progressive tax from caller-supplied brackets. No jurisdiction, year, or rates are baked in: pass the brackets yourself. Returns total tax, effective rate, and marginal rate.

Input parameters:

- `brackets` (array, required): Ordered tax bands. The final band may omit upTo to run to infinity.
- `income` (number, required): Taxable income.

Output parameters:

- `effectiveRatePct` (number): Effective rate, percent.
- `marginalRatePct` (number): Marginal rate, percent.
- `tax` (number): Total tax.

### `margin-markup` (~97 tokens)

Margin & Markup

Convert between margin and markup. Supply any one of cost/price plus one of marginPct/markupPct (or both cost and price); returns cost, price, profit, marginPct, and markupPct.

Input parameters:

- `cost` (number): Unit cost.
- `marginPct` (number): Profit as a percent of price.
- `markupPct` (number): Profit as a percent of cost.
- `price` (number): Selling price.

Output parameters:

- `cost` (number): Cost.
- `marginPct` (number): Margin, percent.
- `markupPct` (number): Markup, percent.
- `price` (number): Price.
- `profit` (number): Profit.

### `compound-interest` (~118 tokens)

Compound Interest

Compound growth at any frequency, with an optional contribution each period (paid at period end). Generalizes future-value (periodsPerYear 1) and contributions (periodsPerYear 12).

Input parameters:

- `annualRatePct` (number, required): Annual growth rate in percent.
- `contributionPerPeriod` (number): Optional. Amount added each period (default 0).
- `periodsPerYear` (number): Compounding periods per year (default 1).
- `principal` (number, required): Starting amount.
- `years` (number, required): Number of years.

Output parameters:

- `value` (number): Result value.

### `de-gross-to-net` (~326 tokens)

German Gross-to-Net (manual figures)

German net (Netto) salary from gross (Brutto). No tax tables are baked in: look up the current year's statutory figures and pass them in. Income tax (Lohnsteuer) and Soli are amounts; church tax is a percent of the income tax; the four employee social rates and the two contribution ceilings are inputs. Use consistent units (e.g. all annual).

Input parameters:

- `carePct` (number): Employee long-term care (Pflegeversicherung) rate in percent.
- `churchTaxPct` (number): Church tax (Kirchensteuer) rate in percent of income tax (8 or 9, 0 if none).
- `gross` (number, required): Gross salary (Brutto).
- `healthCeiling` (number): Contribution ceiling for health and care.
- `healthPct` (number): Employee health (Krankenversicherung incl. Zusatzbeitrag) rate in percent.
- `incomeTax` (number): Income tax (Lohnsteuer) amount for the period — look up via the §32a / Steuerklasse tables.
- `pensionCeiling` (number): Contribution ceiling (Beitragsbemessungsgrenze) for pension and unemployment.
- `pensionPct` (number): Employee pension (Rentenversicherung) rate in percent (e.g. 9.3).
- `soli` (number): Solidarity surcharge (Solidaritätszuschlag) amount (often 0 below the threshold).
- `unemploymentPct` (number): Employee unemployment (Arbeitslosenversicherung) rate in percent (e.g. 1.3).

Output parameters:

- `churchTax` (number): Church tax.
- `contributions` (object): { pension, unemployment, health, care, total }.
- `gross` (number): Gross.
- `incomeTax` (number): Income tax.
- `net` (number): Net.
- `soli` (number): Soli.
- `totalDeductions` (number): Total deductions.

### `de-net-salary` (~492 tokens)

German Net Salary (exact, by tax year)

Exact German net (Netto) salary from annual gross (Brutto) for tax years 2023-2026. Income tax and Soli follow the official BMF Programmablaufplan for the year (to the euro; 2024 uses the retroactive December tariff), church tax comes from the PAP's Kirchensteuer base, and employee social insurance uses that year's ceilings and rates (KV Zusatzbeitrag defaults to the year's average). Earlier years are rejected - use de-gross-to-net with self-supplied figures instead.

Input parameters:

- `age` (number): Optional. Age in years - under 23 skips the childless care surcharge.
- `bundesland` (string): Optional. State code (BW, BY, BE, ... SN, TH). Drives the Saxony care-insurance split and the pre-2025 East pension ceiling.
- `children` (number): Kinderfreibetrag counter (ZKF), halves allowed (default 0). Also drives the care-insurance child discounts.
- `childrenUnder25` (number): Optional. Children under 25 for the care-insurance discounts, when it differs from `children`.
- `churchTaxPct` (number): Church tax rate: 8, 9, or 0 for none (default 0).
- `faktor` (number): Optional. Tax-class-4 Faktorverfahren factor, default 1.0 (no factor). Only the small minority of married IV/IV couples who applied for it have one; it is assigned by the Finanzamt and printed on the…
- `grossAnnual` (number, required): Annual gross salary (Brutto) in EUR.
- `kvZusatzPct` (number): Optional. The Krankenkasse's own Zusatzbeitrag in percent — pass the actual rate for exact results (rates change yearly, e.g. TK 2025: 2.45, 2026: 2.69). Defaults to the year's official average, whic…
- `privateHealth` (object)
- `taxClass` (number): Steuerklasse 1-6 (default 1).
- `year` (number, required): Tax year: 2023, 2024, 2025 or 2026.

Output parameters:

- `assumptions` (object): Inputs as applied (tax class, Zusatzbeitrag, PAP basis, ...).
- `churchTax` (number): Kirchensteuer.
- `contributions` (object): { pension, unemployment, health, care, total, rates, ceilingsApplied }.
- `gross` (object): { annual, monthly }.
- `incomeTax` (number): Lohnsteuer (annual).
- `net` (object): { annual, monthly }.
- `soli` (number): Solidaritätszuschlag.
- `totalDeductions` (number): Taxes + contributions.
- `totalTax` (number): All taxes.
- `year` (number): Tax year.

### `de-abgeltungsteuer` (~222 tokens)

German Capital Gains Tax (Abgeltungsteuer)

German flat tax on capital income (Abgeltungsteuer, §32d EStG) for tax years 2023-2026 with the year's Sparerpauschbetrag built in. 25% above the allowance, Soli 5.5% on top (no Freigrenze for capital income), and with church tax the statutory reduced rate (e.g. 24.45% at 9%) plus the church tax itself.

Input parameters:

- `capitalIncome` (number, required): Annual capital income (interest, dividends, realized gains) in EUR.
- `churchTaxPct` (number): Church tax rate: 8, 9, or 0 for none (default 0).
- `foreignTaxCredit` (number): Optional. Creditable foreign withholding tax (q in the §32d formula).
- `joint` (boolean): true for jointly assessed couples (doubles the Sparerpauschbetrag).
- `year` (number, required): Tax year: 2023, 2024, 2025 or 2026.

Output parameters:

- `allowance` (number): Sparerpauschbetrag applied.
- `capitalIncome` (number): Income.
- `churchTax` (number): Church tax.
- `effectiveRatePct` (number): Total tax / income, percent.
- `incomeTax` (number): Flat tax (25% or church-reduced).
- `net` (number): Income after taxes.
- `soli` (number): Soli (5.5%).
- `taxable` (number): Taxable after allowance.
- `totalTax` (number): All taxes.
- `year` (number): Tax year.

### `de-kindergeld` (~84 tokens)

German Child Benefit (Kindergeld)

German child benefit (Kindergeld) for 2023-2026: the year's flat monthly amount per child (uniform since 2023), as monthly and annual totals.

Input parameters:

- `children` (number): Number of children (default 1).
- `year` (number, required): Year: 2023, 2024, 2025 or 2026.

Output parameters:

- `annual` (number): Total annual.
- `children` (number): Children.
- `monthly` (number): Total monthly.
- `perChildMonthly` (number): Monthly amount per child.
- `year` (number): Year.

### `de-midijob` (~237 tokens)

German Midijob Contributions

German Midijob / Uebergangsbereich (paragraph 20 Abs. 2a SGB IV) for 2023-2026: classifies a monthly pay as Minijob / Midijob / regular against the year's thresholds and, inside the Midijob band, computes the reduced contribution bases (Faktor F from the year's rates) and the employee vs employer social-insurance split.

Input parameters:

- `age` (number): Optional. Age - under 23 skips the childless care surcharge.
- `bundesland` (string): Optional. State code; SN applies the Saxony care split.
- `children` (number): Children, for the care-insurance rate (default 0).
- `childrenUnder25` (number): Optional. Children under 25 for the care discounts, when different.
- `kvZusatzPct` (number): Optional. Krankenkasse Zusatzbeitrag in percent; defaults to the year's average.
- `monthlyPay` (number, required): Gross monthly pay in EUR.
- `year` (number, required): Year: 2023, 2024, 2025 or 2026.

Output parameters:

- `contributionBase` (object): { total, employee } reduced bases.
- `employee` (object): { pension, unemployment, health, care, total }.
- `employer` (object): { total }.
- `faktorF` (number): Faktor F (midijob only).
- `monthlyPay` (number): Pay.
- `rates` (object): { employee, total } percent rates.
- `savingsVsFull` (number): Employee saving vs full contributions.
- `thresholds` (object): { minijobMonthly, midijobUpper }.
- `year` (number): Year.
- `zone` (string): minijob | midijob | regular | none.

### `de-rentenpunkte` (~166 tokens)

German Pension Points (Rentenpunkte)

German pension points (Entgeltpunkte, paragraph 63 SGB VI) for 2023-2026: points earned from an annual gross via the year's Durchschnittsentgelt (capped at the contribution ceiling), the aktueller Rentenwert for both halves of the year, and optionally the gross monthly state pension for a total point count.

Input parameters:

- `bundesland` (string): Optional. State code - East states use the East ceiling before 2025.
- `grossAnnual` (number, required): Annual insured gross salary in EUR.
- `totalPoints` (number): Optional. Accumulated points, to project the gross monthly pension at today's Rentenwert.
- `year` (number, required): Year: 2023, 2024, 2025 or 2026.

Output parameters:

- `ceilingApplied` (boolean): True if capped.
- `durchschnittsentgelt` (number): Average earnings divisor.
- `grossAnnual` (number): Gross.
- `insuredGross` (number): Gross after the ceiling.
- `maxPointsThisYear` (number): Ceiling / average.
- `monthlyPensionPerPoint` (number): Current EUR per point.
- `points` (number): Points earned this year.
- `projection` (object): { totalPoints, monthlyPension, note } when totalPoints given.
- `rentenwert` (object): { janToJun, fromJuly } EUR per point per month.
- `year` (number): Year.

### `vat` (~120 tokens)

VAT

Value-added tax (MwSt/USt, sales tax) on a price. By default adds the tax to a net price; with inclusive=true treats the amount as gross and extracts the tax. The rate is always an input (19 or 7 for Germany, etc.).

Input parameters:

- `amount` (number, required): The price.
- `inclusive` (boolean): false (default): amount is net, add the tax. true: amount is gross, extract the tax.
- `ratePct` (number, required): VAT rate in percent (e.g. 19 or 7).

Output parameters:

- `gross` (number): Gross price.
- `net` (number): Net price.
- `tax` (number): Tax amount.

### `roi` (~67 tokens)

ROI

Return on investment: total percent gain, plus the annualized rate when a holding period in years is given.

Input parameters:

- `finalValue` (number, required): Ending value.
- `initial` (number, required): Amount invested.
- `years` (number): Optional. Holding period in years, for the annualized rate.

Output parameters:

- `annualizedPct` (number): Annualized return, percent (null if no years).
- `roiPct` (number): Total return, percent.

### `real-return` (~68 tokens)

Real Return

Real (inflation-adjusted) return from a nominal rate via the Fisher relation: (1+nominal)/(1+inflation) - 1.

Input parameters:

- `inflationRatePct` (number, required): Annual inflation in percent.
- `nominalRatePct` (number, required): Nominal annual rate in percent.

Output parameters:

- `realPct` (number): Real return, percent.

### `return-stats` (~59 tokens)

Return Statistics

Mean, sample variance, and sample standard deviation (n-1) of a series of returns. Pass percents to get a percent stdev (volatility).

Input parameters:

- `returns` (array, required): The return series (e.g. yearly percents).

Output parameters:

- `count` (number): Number of returns.
- `mean` (number): Mean return.
- `stdev` (number): Sample stdev / volatility (null if <2).
- `variance` (number): Sample variance (null if <2).

### `sharpe-ratio` (~73 tokens)

Sharpe Ratio

Sharpe ratio: excess mean return per unit of volatility, (mean - riskFree) / stdev. Null when volatility is undefined or zero.

Input parameters:

- `returns` (array, required): The return series (percents).
- `riskFreePct` (number): Risk-free rate in the same unit (default 0).

Output parameters:

- `meanPct` (number): Mean return.
- `sharpe` (number): Sharpe ratio (null if no volatility).
- `stdevPct` (number): Volatility.

### `max-drawdown` (~47 tokens)

Max Drawdown

Maximum drawdown of a value series: the largest peak-to-trough decline, as a positive percent.

Input parameters:

- `series` (array, required): Sequence of values (e.g. portfolio levels).

Output parameters:

- `maxDrawdownPct` (number): Largest peak-to-trough decline, percent.

### `holding-period-return` (~58 tokens)

Holding Period Return

Holding-period return: (income + capital gain) / starting value, in percent.

Input parameters:

- `beginValue` (number, required): Starting value.
- `endValue` (number, required): Ending value.
- `income` (number, required): Income received over the period.

Output parameters:

- `hprPct` (number): Holding-period return, percent (null if begin=0).

### `fee-drag` (~80 tokens)

Fee Drag

Effect of an annual fee: the compounded balance at the gross rate vs net of the fee, and the amount lost to fees.

Input parameters:

- `feePct` (number, required): Annual fee in percent.
- `grossAnnualPct` (number, required): Gross annual return in percent.
- `principal` (number, required): Starting amount.
- `years` (number, required): Number of years.

Output parameters:

- `gross` (number): Gross balance.
- `lostToFees` (number): Amount lost to fees.
- `net` (number): Net of fees.

### `dollar-cost-averaging` (~69 tokens)

Dollar-Cost Averaging

Dollar-cost averaging: buying a fixed amount each period at the given prices. Returns units accumulated, total invested, average cost, and final value at the last price.

Input parameters:

- `periodicInvestment` (number, required): Fixed amount invested each period.
- `prices` (array, required): Price at each purchase period.

Output parameters:

- `avgCost` (number): Average cost per unit (null if none).
- `finalValue` (number): Value at the last price.
- `invested` (number): Total invested.
- `units` (number): Units accumulated.

### `bond-price` (~96 tokens)

Bond Price

Price of a coupon bond given a yield: present value of the coupons plus the face at maturity.

Input parameters:

- `couponRatePct` (number, required): Annual coupon rate in percent of face.
- `faceValue` (number, required): Face (par) value.
- `periodsPerYear` (number): Coupon periods per year (default 2).
- `years` (number, required): Years to maturity.
- `yieldPct` (number, required): Annual yield in percent.

Output parameters:

- `price` (number): Bond price (null if degenerate).

### `current-yield` (~61 tokens)

Current Yield

Current yield: the annual coupon as a percent of the bond's current price.

Input parameters:

- `couponRatePct` (number, required): Annual coupon rate in percent of face.
- `faceValue` (number, required): Face value.
- `price` (number, required): Current bond price.

Output parameters:

- `currentYieldPct` (number): Current yield, percent (null if price<=0).

### `bond-duration` (~97 tokens)

Bond Duration

Macaulay duration (PV-weighted average time of cashflows, in years) and modified duration (price sensitivity to yield).

Input parameters:

- `couponRatePct` (number, required): Annual coupon rate in percent.
- `faceValue` (number, required): Face value.
- `periodsPerYear` (number): Coupon periods per year (default 2).
- `years` (number, required): Years to maturity.
- `yieldPct` (number, required): Annual yield in percent.

Output parameters:

- `macaulay` (number): Macaulay duration, years.
- `modified` (number): Modified duration.

### `convexity` (~92 tokens)

Bond Convexity

Bond convexity (years^2): the curvature of price with respect to yield, used alongside duration.

Input parameters:

- `couponRatePct` (number, required): Annual coupon rate in percent.
- `faceValue` (number, required): Face value.
- `periodsPerYear` (number): Coupon periods per year (default 2).
- `years` (number, required): Years to maturity.
- `yieldPct` (number, required): Annual yield in percent.

Output parameters:

- `convexity` (number): Convexity, years^2.

### `zero-coupon-price` (~78 tokens)

Zero-Coupon Price

Price of a zero-coupon bond: face value discounted to today at the yield.

Input parameters:

- `compoundingPerYear` (number): Compounding periods per year (default 1).
- `faceValue` (number, required): Face value.
- `years` (number, required): Years to maturity.
- `yieldPct` (number, required): Annual yield in percent.

Output parameters:

- `price` (number): Zero-coupon price.

### `accrued-interest` (~86 tokens)

Accrued Interest

Accrued interest since the last coupon: the annual coupon pro-rated by days elapsed over the day-count basis.

Input parameters:

- `couponRatePct` (number, required): Annual coupon rate in percent.
- `dayCountBasis` (number): Day-count basis (default 360).
- `daysSinceLastCoupon` (number, required): Days since the last coupon.
- `faceValue` (number, required): Face value.

Output parameters:

- `accrued` (number): Accrued interest.

### `black-scholes` (~127 tokens)

Black-Scholes Option Price

Black-Scholes price of a European call or put option, plus d1/d2. Volatility and rates in percent; optional continuous dividend yield.

Input parameters:

- `dividendYieldPct` (number): Continuous dividend yield in percent (default 0).
- `riskFreePct` (number, required): Risk-free rate in percent.
- `spot` (number, required): Current underlying price.
- `strike` (number, required): Strike price.
- `type` (string): Option type (default call).
- `volatilityPct` (number, required): Annualized volatility in percent.
- `years` (number, required): Time to expiry in years.

Output parameters:

- `d1` (number): d1.
- `d2` (number): d2.
- `price` (number): Option price (null if degenerate).

### `option-greeks` (~134 tokens)

Option Greeks

Black-Scholes greeks for a European option: delta, gamma, vega (per 1% vol), theta (per day), rho (per 1% rate).

Input parameters:

- `dividendYieldPct` (number): Continuous dividend yield in percent (default 0).
- `riskFreePct` (number, required): Risk-free rate in percent.
- `spot` (number, required): Current underlying price.
- `strike` (number, required): Strike price.
- `type` (string): Option type (default call).
- `volatilityPct` (number, required): Annualized volatility in percent.
- `years` (number, required): Time to expiry in years.

Output parameters:

- `delta` (number): Delta.
- `gamma` (number): Gamma.
- `rho` (number): Rho per 1% rate.
- `theta` (number): Theta per day.
- `vega` (number): Vega per 1% vol.

### `put-call-parity` (~129 tokens)

Put-Call Parity

Put-call parity: given one option price, returns both. Provide call or put, plus spot, strike, years, and the rate.

Input parameters:

- `call` (number): Call price (provide call or put).
- `dividendYieldPct` (number): Continuous dividend yield in percent (default 0).
- `put` (number): Put price (provide call or put).
- `riskFreePct` (number, required): Risk-free rate in percent.
- `spot` (number, required): Underlying price.
- `strike` (number, required): Strike price.
- `years` (number, required): Time to expiry in years.

Output parameters:

- `call` (number): Call price.
- `put` (number): Put price.

### `option-breakeven` (~63 tokens)

Option Break-Even

Break-even underlying price at expiry: strike + premium for a call, strike - premium for a put.

Input parameters:

- `premium` (number, required): Option premium paid.
- `strike` (number, required): Strike price.
- `type` (string): Option type (default call).

Output parameters:

- `breakeven` (number): Break-even underlying price.

### `intrinsic-time-value` (~66 tokens)

Intrinsic & Time Value

Split an option premium into intrinsic value (in-the-money amount) and time value.

Input parameters:

- `premium` (number, required): Option premium.
- `spot` (number, required): Underlying price.
- `strike` (number, required): Strike price.
- `type` (string): Option type (default call).

Output parameters:

- `intrinsic` (number): Intrinsic value.
- `timeValue` (number): Time value.

### `annuity-pv` (~67 tokens)

Annuity Present Value

Present value of an ordinary annuity (level payment at each period end). rate is the per-period rate in percent.

Input parameters:

- `payment` (number, required): Payment per period.
- `periods` (number, required): Number of periods.
- `ratePct` (number, required): Rate per period in percent.

Output parameters:

- `pv` (number): Present value.

### `annuity-fv` (~60 tokens)

Annuity Future Value

Future value of an ordinary annuity. rate is the per-period rate in percent.

Input parameters:

- `payment` (number, required): Payment per period.
- `periods` (number, required): Number of periods.
- `ratePct` (number, required): Rate per period in percent.

Output parameters:

- `fv` (number): Future value.

### `annuity-payment` (~67 tokens)

Annuity Payment

The level payment that amortizes a present value over n periods (the loan-payment formula). rate is per period.

Input parameters:

- `periods` (number, required): Number of periods.
- `presentValue` (number, required): Present value / principal.
- `ratePct` (number, required): Rate per period in percent.

Output parameters:

- `payment` (number): Level payment (null if periods<=0).

### `perpetuity` (~75 tokens)

Perpetuity

Present value of a level or growing perpetuity: payment / (rate - growth). Null when growth is not below the rate.

Input parameters:

- `growthPct` (number): Optional. Payment growth rate in percent (default 0).
- `payment` (number, required): Periodic payment.
- `ratePct` (number, required): Discount rate in percent.

Output parameters:

- `pv` (number): Present value (null if growth>=rate).

### `rule-of-72` (~51 tokens)

Rule of 72

Years to double: the rule-of-72 estimate (72/rate) and the exact figure (ln2 / ln(1+rate)).

Input parameters:

- `ratePct` (number, required): Growth rate in percent.

Output parameters:

- `exactYears` (number): Exact doubling time.
- `years72` (number): 72/rate estimate.

### `payback-period` (~58 tokens)

Payback Period

Simple payback period: periods until cumulative cashflows recover the initial cost, interpolated within the crossing period. Null if never.

Input parameters:

- `cashflows` (array, required): Inflow each period.
- `initialCost` (number, required): Upfront cost.

Output parameters:

- `years` (number): Payback in periods (null if never).

### `discounted-payback` (~68 tokens)

Discounted Payback

Discounted payback period: like payback-period but each cashflow is discounted at the per-period rate.

Input parameters:

- `cashflows` (array, required): Inflow each period.
- `initialCost` (number, required): Upfront cost.
- `ratePct` (number, required): Discount rate per period in percent.

Output parameters:

- `years` (number): Discounted payback in periods (null if never).

### `mirr` (~84 tokens)

MIRR

Modified internal rate of return: negatives financed at financeRate, positives reinvested at reinvestRate. Percents in and out.

Input parameters:

- `cashflows` (array, required): Cashflows by period (index 0 today; outflows negative).
- `financeRatePct` (number, required): Finance rate in percent.
- `reinvestRatePct` (number, required): Reinvestment rate in percent.

Output parameters:

- `mirrPct` (number): Modified IRR, percent (null if degenerate).

### `xnpv` (~74 tokens)

XNPV

Date-aware net present value: each amount discounted by its fractional years (act/365) from the first cashflow's date. Annual rate in percent.

Input parameters:

- `annualRatePct` (number, required): Annual discount rate in percent.
- `cashflows` (array, required): Dated cashflows; the first date is the valuation date.

Output parameters:

- `npv` (number): Date-aware net present value.

### `xirr` (~57 tokens)

XIRR

Date-aware internal rate of return: the annual rate that zeroes the XNPV of irregular dated cashflows. Null if no rate fits.

Input parameters:

- `cashflows` (array, required): Dated cashflows; the first date is the valuation date.

Output parameters:

- `xirrPct` (number): Date-aware IRR, percent (null if none).

### `loan-apr` (~89 tokens)

Loan APR

Effective APR including upfront fees: the note-rate payment priced against the net proceeds (amount - fees). Annual percent.

Input parameters:

- `amount` (number, required): Loan amount.
- `fees` (number): Optional. Upfront fees / points in currency (default 0).
- `ratePct` (number, required): Note (nominal) annual rate in percent.
- `termMonths` (number, required): Term in months.

Output parameters:

- `aprPct` (number): Effective APR, percent (null if degenerate).

### `interest-only-payment` (~38 tokens)

Interest-Only Payment

Interest-only monthly payment on a balance.

Input parameters:

- `amount` (number, required): Outstanding balance.
- `ratePct` (number, required): Annual rate in percent.

Output parameters:

- `payment` (number): Monthly interest payment.

### `balloon-loan` (~83 tokens)

Balloon Loan

Balloon loan: payment based on a long amortization, with the balloon being the balance still due after the shorter balloon term.

Input parameters:

- `amortMonths` (number, required): Amortization basis in months.
- `amount` (number, required): Loan amount.
- `balloonMonths` (number, required): Months until the balloon is due.
- `ratePct` (number, required): Annual rate in percent.

Output parameters:

- `balloon` (number): Balloon balance due.
- `payment` (number): Monthly payment.

### `ltv` (~40 tokens)

Loan-to-Value

Loan-to-value ratio, percent (loan / property value).

Input parameters:

- `loanAmount` (number, required): Loan amount.
- `propertyValue` (number, required): Property value.

Output parameters:

- `ltvPct` (number): Loan-to-value, percent (null if value<=0).

### `dti` (~46 tokens)

Debt-to-Income

Debt-to-income ratio, percent (monthly debt / gross monthly income).

Input parameters:

- `grossMonthlyIncome` (number, required): Gross monthly income.
- `monthlyDebt` (number, required): Total monthly debt payments.

Output parameters:

- `dtiPct` (number): Debt-to-income, percent (null if income<=0).

### `credit-card-payoff` (~71 tokens)

Credit Card Payoff

Months to clear a credit-card balance at a fixed monthly payment, plus interest paid. Null when the payment can't cover the first month's interest.

Input parameters:

- `aprPct` (number, required): Annual percentage rate in percent.
- `balance` (number, required): Current balance.
- `monthlyPayment` (number, required): Fixed monthly payment.

Output parameters:

- `months` (number): Months to clear (null if never).
- `totalInterest` (number): Total interest (null if never).
- `totalPaid` (number): Total paid (null if never).

### `points-breakeven` (~103 tokens)

Points Break-Even

Mortgage points break-even: the upfront cost to buy down the rate, the monthly payment saving, and the whole months to recoup it.

Input parameters:

- `loanAmount` (number, required): Loan amount.
- `pointsPct` (number, required): Points paid, percent of the loan.
- `ratePct` (number, required): Base annual rate in percent.
- `reducedRatePct` (number, required): Reduced annual rate after buying points.
- `termMonths` (number, required): Term in months.

Output parameters:

- `breakevenMonths` (number): Whole months to recoup (null if no saving).
- `cost` (number): Upfront cost of points.
- `monthlySaving` (number): Monthly payment saving.

### `biweekly-payoff` (~69 tokens)

Biweekly Payoff

Biweekly mortgage acceleration: paying half the monthly payment every two weeks. Returns the biweekly payment and the months and interest saved.

Input parameters:

- `amount` (number, required): Loan amount.
- `ratePct` (number, required): Annual rate in percent.
- `termMonths` (number, required): Original term in months.

Output parameters:

- `biweeklyPayment` (number): Biweekly payment.
- `interestSaved` (number): Interest saved.
- `monthsSaved` (number): Months saved.

### `cap-rate` (~42 tokens)

Cap Rate

Capitalization rate: net operating income as a percent of property value.

Input parameters:

- `noi` (number, required): Net operating income.
- `propertyValue` (number, required): Property value.

Output parameters:

- `capRatePct` (number): Cap rate, percent (null if value<=0).

### `cash-on-cash` (~54 tokens)

Cash-on-Cash Return

Cash-on-cash return: annual pre-tax cash flow as a percent of the cash invested.

Input parameters:

- `annualCashFlow` (number, required): Annual pre-tax cash flow.
- `cashInvested` (number, required): Cash invested.

Output parameters:

- `cashOnCashPct` (number): Cash-on-cash return, percent (null if invested<=0).

### `noi` (~56 tokens)

Net Operating Income

Net operating income: gross rental income less vacancy and operating expenses.

Input parameters:

- `grossRentalIncome` (number, required): Gross annual rental income.
- `operatingExpenses` (number, required): Annual operating expenses.
- `vacancyPct` (number, required): Vacancy rate in percent.

Output parameters:

- `noi` (number): Net operating income.

### `gross-rent-multiplier` (~44 tokens)

Gross Rent Multiplier

Gross rent multiplier: price divided by gross annual rent.

Input parameters:

- `grossAnnualRent` (number, required): Gross annual rent.
- `price` (number, required): Purchase price.

Output parameters:

- `grm` (number): Gross rent multiplier (null if rent<=0).

### `dscr` (~44 tokens)

Debt Service Coverage Ratio

Debt service coverage ratio: net operating income divided by annual debt service.

Input parameters:

- `annualDebtService` (number, required): Annual debt service.
- `noi` (number, required): Net operating income.

Output parameters:

- `dscr` (number): Debt service coverage ratio (null if debt<=0).

### `wacc` (~95 tokens)

WACC

Weighted average cost of capital: equity and after-tax debt weighted by the capital structure. Percents in and out.

Input parameters:

- `costDebtPct` (number, required): Cost of debt in percent.
- `costEquityPct` (number, required): Cost of equity in percent.
- `debt` (number, required): Market value of debt.
- `equity` (number, required): Market value of equity.
- `taxRatePct` (number, required): Tax rate in percent.

Output parameters:

- `waccPct` (number): WACC, percent (null if no capital).

### `break-even-units` (~73 tokens)

Break-Even Units

Break-even volume: fixed costs divided by the per-unit contribution (price - variable cost), plus the revenue at that volume.

Input parameters:

- `fixedCosts` (number, required): Total fixed costs.
- `pricePerUnit` (number, required): Selling price per unit.
- `variableCostPerUnit` (number, required): Variable cost per unit.

Output parameters:

- `revenue` (number): Revenue at break-even (null if none).
- `units` (number): Break-even units (null if no contribution).

### `contribution-margin` (~46 tokens)

Contribution Margin

Contribution margin per unit and as a percent of price.

Input parameters:

- `pricePerUnit` (number, required): Selling price per unit.
- `variableCostPerUnit` (number, required): Variable cost per unit.

Output parameters:

- `contributionMargin` (number): Contribution per unit.
- `ratioPct` (number): Contribution margin ratio, percent (null if price=0).

### `current-ratio` (~39 tokens)

Current Ratio

Current ratio: current assets over current liabilities.

Input parameters:

- `currentAssets` (number, required): Current assets.
- `currentLiabilities` (number, required): Current liabilities.

Output parameters:

- `currentRatio` (number): Current ratio (null if liabilities<=0).

### `quick-ratio` (~55 tokens)

Quick Ratio

Quick (acid-test) ratio: (current assets - inventory) over current liabilities.

Input parameters:

- `currentAssets` (number, required): Current assets.
- `currentLiabilities` (number, required): Current liabilities.
- `inventory` (number, required): Inventory.

Output parameters:

- `quickRatio` (number): Quick ratio (null if liabilities<=0).

### `roe` (~41 tokens)

Return on Equity

Return on equity, percent: net income over shareholders' equity.

Input parameters:

- `equity` (number, required): Shareholders' equity.
- `netIncome` (number, required): Net income.

Output parameters:

- `roePct` (number): Return on equity, percent (null if equity<=0).

### `roa` (~39 tokens)

Return on Assets

Return on assets, percent: net income over total assets.

Input parameters:

- `netIncome` (number, required): Net income.
- `totalAssets` (number, required): Total assets.

Output parameters:

- `roaPct` (number): Return on assets, percent (null if assets<=0).

### `declining-balance-depreciation` (~75 tokens)

Declining-Balance Depreciation

Declining-balance depreciation: a fixed percent of the reducing book value, for a given year. Returns that year's depreciation and the remaining book value.

Input parameters:

- `ratePct` (number, required): Annual depreciation rate in percent.
- `value` (number, required): Initial cost.
- `year` (number, required): Year (1-based).

Output parameters:

- `bookValue` (number): Book value at year end.
- `depreciation` (number): Depreciation this year.

### `double-declining-depreciation` (~84 tokens)

Double-Declining Depreciation

Double-declining-balance depreciation: 2/usefulYears of the book value each year, not falling below salvage.

Input parameters:

- `salvage` (number): Salvage value (default 0).
- `usefulYears` (number, required): Useful life in years.
- `value` (number, required): Initial cost.
- `year` (number, required): Year (1-based).

Output parameters:

- `bookValue` (number): Book value at year end.
- `depreciation` (number): Depreciation this year.

### `sum-of-years-digits` (~71 tokens)

Sum-of-Years' Digits Depreciation

Sum-of-the-years'-digits depreciation: the depreciable base weighted toward the early years.

Input parameters:

- `salvage` (number, required): Salvage value.
- `usefulYears` (number, required): Useful life in years.
- `value` (number, required): Initial cost.
- `year` (number, required): Year (1-based).

Output parameters:

- `bookValue` (number): Book value at year end.
- `depreciation` (number): Depreciation this year.

### `units-of-production-depreciation` (~81 tokens)

Units-of-Production Depreciation

Units-of-production depreciation: the depreciable base spread over total expected units, charged by the units used this period.

Input parameters:

- `salvage` (number, required): Salvage value.
- `totalUnits` (number, required): Total expected units over the life.
- `unitsThisPeriod` (number, required): Units produced this period.
- `value` (number, required): Initial cost.

Output parameters:

- `depreciation` (number): Depreciation this period (null if totalUnits<=0).

### `net-worth` (~33 tokens)

Net Worth

Net worth: assets minus liabilities.

Input parameters:

- `assets` (number, required): Total assets.
- `liabilities` (number, required): Total liabilities.

Output parameters:

- `netWorth` (number): Assets minus liabilities.

### `budget-50-30-20` (~45 tokens)

50/30/20 Budget Split

The 50/30/20 budget split of monthly income into needs, wants, and savings.

Input parameters:

- `monthlyIncome` (number, required): Monthly take-home income.

Output parameters:

- `needs` (number): 50% needs.
- `savings` (number): 20% savings.
- `wants` (number): 30% wants.

### `tip-split` (~61 tokens)

Tip Split

Tip and split: the tip amount, the total, and the per-person share.

Input parameters:

- `billAmount` (number, required): Bill amount.
- `people` (number): Number of people (default 1).
- `tipPct` (number, required): Tip in percent.

Output parameters:

- `perPerson` (number): Per-person share.
- `tip` (number): Tip amount.
- `total` (number): Total with tip.

### `discount` (~40 tokens)

Discount

A single percentage discount: the amount off and the final price.

Input parameters:

- `discountPct` (number, required): Discount in percent.
- `price` (number, required): Original price.

Output parameters:

- `discount` (number): Amount off.
- `finalPrice` (number): Final price.

### `successive-discounts` (~50 tokens)

Successive Discounts

Stacked discounts applied in order: the final price and the effective single discount rate.

Input parameters:

- `discountsPct` (array, required): Discounts in percent, applied in order.
- `price` (number, required): Original price.

Output parameters:

- `effectivePct` (number): Effective single discount, percent (null if price=0).
- `finalPrice` (number): Final price.

### `percentage-change` (~42 tokens)

Percentage Change

Percentage change from one value to another. Null when the starting value is zero.

Input parameters:

- `from` (number, required): Starting value.
- `to` (number, required): Ending value.

Output parameters:

- `changePct` (number): Percentage change (null if from=0).

### `unit-price` (~45 tokens)

Unit Price

Unit price: price divided by quantity (for comparing pack sizes). Null when quantity is zero.

Input parameters:

- `price` (number, required): Price.
- `quantity` (number, required): Quantity / size.

Output parameters:

- `unitPrice` (number): Price per unit (null if quantity=0).

### `hourly-to-salary` (~64 tokens)

Hourly to Salary

Annualize an hourly rate (and the monthly equivalent).

Input parameters:

- `hourlyRate` (number, required): Hourly rate.
- `hoursPerWeek` (number): Hours per week (default 40).
- `weeksPerYear` (number): Weeks per year (default 52).

Output parameters:

- `annual` (number): Annual salary.
- `monthly` (number): Monthly equivalent.

### `salary-to-hourly` (~61 tokens)

Salary to Hourly

Hourly rate implied by an annual salary.

Input parameters:

- `annualSalary` (number, required): Annual salary.
- `hoursPerWeek` (number): Hours per week (default 40).
- `weeksPerYear` (number): Weeks per year (default 52).

Output parameters:

- `hourly` (number): Hourly rate (null if hours<=0).

### `after-tax-yield` (~54 tokens)

After-Tax Yield

After-tax yield: a yield reduced by the tax rate. Percents in and out.

Input parameters:

- `taxRatePct` (number, required): Tax rate in percent.
- `yieldPct` (number, required): Pre-tax yield in percent.

Output parameters:

- `afterTaxPct` (number): After-tax yield, percent.

### `tax-equivalent-yield` (~68 tokens)

Tax-Equivalent Yield

Tax-equivalent yield: the taxable yield that matches a tax-free (e.g. muni) yield. Percents in and out.

Input parameters:

- `taxFreeYieldPct` (number, required): Tax-free yield in percent.
- `taxRatePct` (number, required): Marginal tax rate in percent.

Output parameters:

- `taxEquivalentPct` (number): Tax-equivalent yield, percent (null if tax>=100%).

### `coast-fire` (~118 tokens)

Coast FIRE

Coast FIRE: whether the current nest egg, left to grow untouched to retirement, already reaches the FIRE target. Returns the target, the projected balance, whether it coasts, and any shortfall.

Input parameters:

- `annualRatePct` (number, required): Expected annual growth in percent.
- `annualSpend` (number, required): Yearly spending in retirement.
- `currentNestEgg` (number, required): Amount invested today.
- `withdrawalRatePct` (number): Safe withdrawal rate in percent (default 4).
- `yearsToRetirement` (number, required): Years until retirement.

Output parameters:

- `fireTarget` (number): FIRE target.
- `gap` (number): Shortfall in future-value terms.
- `isCoasting` (boolean): True if it already coasts.
- `projected` (number): Projected balance at retirement.

### `barista-fire` (~83 tokens)

Barista FIRE

Barista FIRE: the nest egg needed when part-time income covers part of the spending, so the portfolio only funds the remainder at the safe withdrawal rate.

Input parameters:

- `annualSpend` (number, required): Yearly spending.
- `partTimeIncome` (number, required): Yearly part-time income.
- `withdrawalRatePct` (number): Safe withdrawal rate in percent (default 4).

Output parameters:

- `target` (number): Nest egg needed (null if withdrawal rate<=0).

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/vladimirwrites-nestegg-calculators/nestegg#diagnostics

## Score history

- 2026-08-03: 64
- 2026-08-02: 64
- 2026-08-01: 63
- 2026-07-31: 63
- 2026-07-30: 65
- 2026-07-29: 65
- 2026-07-28: 64
- 2026-07-27: 63
- 2026-07-26: 63

## Links

- Remote endpoint: https://nestegg.money/mcp
- Repository: https://github.com/VladimirWrites/nestegg.money
- Changelog RSS feed: https://verifymcp.io/servers/vladimirwrites-nestegg-calculators/nestegg/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/vladimirwrites-nestegg-calculators/nestegg/changelog.json
- HTML version of this page: https://verifymcp.io/servers/vladimirwrites-nestegg-calculators/nestegg
