# Fair Value MCP Server (remote · fair-value.ascent-partners.com)

Valuation MCP: DCF/NAV/CCA, WACC, derivatives, credit risk, fixed income, structured products.

- Trust score: 73/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-06

## Components

- remote · `fair-value.ascent-partners.com`: 73/100 (this document), [markdown](https://verifymcp.io/servers/simonmak-ascent-fair-value/fair-value-3.md), [page](https://verifymcp.io/servers/simonmak-ascent-fair-value/fair-value-3)
- pypi · `fair-value`: 24/100, [markdown](https://verifymcp.io/servers/simonmak-ascent-fair-value/fair-value.md), [page](https://verifymcp.io/servers/simonmak-ascent-fair-value/fair-value)

## Channel facts

- Endpoint: `https://fair-value.ascent-partners.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.6`

## 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-10-06.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - 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**: 70/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).
  - Context-footprint check failed: tool/resource definitions use about 8756 tokens (~515/item across 17 items; 14 tools + 3 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability check failed: schema churn in the 2 days we've observed: 2 tool removals, 0 breaking changes, 0 auth/transport breaks, 0 additions.
- **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.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Fair Value MCP Server server?

Fair Value MCP Server is a hosted endpoint at https://fair-value.ascent-partners.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http simonmak-ascent-fair-value 'https://fair-value.ascent-partners.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "simonmak-ascent-fair-value": {
      "url": "https://fair-value.ascent-partners.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "simonmak-ascent-fair-value": {
      "type": "http",
      "url": "https://fair-value.ascent-partners.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.simonmak-ascent-fair-value]
url = "https://fair-value.ascent-partners.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "simonmak-ascent-fair-value": {
      "type": "remote",
      "url": "https://fair-value.ascent-partners.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add simonmak-ascent-fair-value --url 'https://fair-value.ascent-partners.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  simonmak-ascent-fair-value:
    url: "https://fair-value.ascent-partners.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "simonmak-ascent-fair-value": {
      "Transport": "http",
      "Url": "https://fair-value.ascent-partners.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add simonmak-ascent-fair-value -t streamable-http -u 'https://fair-value.ascent-partners.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "simonmak-ascent-fair-value": {
      "type": "http",
      "url": "https://fair-value.ascent-partners.com/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-10-06 (score 73, +1)

- [security] Tool “calculate_discount_rate” rewrote its description, which is the text the model reads
- [security] Tool “calculate_fair_value_adjustment” rewrote its description, which is the text the model reads
- [security] Tool “calculate_fixed_income” rewrote its description, which is the text the model reads
- [security] Tool “calculate_loss_making_company” rewrote its description, which is the text the model reads
- [security] Tool “calculate_market_multiple” rewrote its description, which is the text the model reads
- [security] Tool “calculate_option” rewrote its description, which is the text the model reads
- [security] Tool “calculate_residual” rewrote its description, which is the text the model reads
- [security] Tool “calculate_sector_metrics” rewrote its description, which is the text the model reads
- [security] Tool “calculate_structured_product” rewrote its description, which is the text the model reads
- [security] Tool “calculate_expected_value” rewrote its description, which is the text the model reads
- [security] Tool “calculate_actuarial_pv” rewrote its description, which is the text the model reads
- [security] Tool “calculate_convertible_bond” rewrote its description, which is the text the model reads
- [security] Tool “calculate_credit_loss” rewrote its description, which is the text the model reads
- [security] Tool “calculate_dcf” rewrote its description, which is the text the model reads
- [functional] Server version: 4.0.11 → 0.2.6
- [cosmetic] “calculate_discount_rate” reworded the description of “method”
- [cosmetic] “calculate_expected_value” reworded the description of “method”
- [cosmetic] “calculate_fair_value_adjustment” reworded the description of “method”
- [cosmetic] “calculate_fixed_income” reworded the description of “method”
- [cosmetic] “calculate_loss_making_company” reworded the description of “method”
- [cosmetic] “calculate_market_multiple” reworded the description of “method”
- [cosmetic] “calculate_option” reworded the description of “method”
- [cosmetic] “calculate_residual” reworded the description of “method”
- [cosmetic] “calculate_sector_metrics” reworded the description of “method”
- [cosmetic] “calculate_structured_product” reworded the description of “method”
- [cosmetic] “calculate_actuarial_pv” reworded the description of “method”
- [cosmetic] “calculate_convertible_bond” reworded the description of “method”
- [cosmetic] “calculate_credit_loss” reworded the description of “method”
- [cosmetic] “calculate_dcf” reworded the description of “method”

### 2026-10-05 (score 72, +6)

- [security regression] Stability: unverified → fail
- [security regression] Tool “calculate_company_summary” was removed
- [security regression] Tool “calculate_report_review” was removed
- [security improvement] Judged manipulation: unverified → pass
- [security] Tool “calculate_convertible_bond” rewrote its description, which is the text the model reads
- [security] Tool “calculate_credit_loss” rewrote its description, which is the text the model reads
- [security] Tool “calculate_dcf” rewrote its description, which is the text the model reads
- [security] Tool “calculate_discount_rate” rewrote its description, which is the text the model reads
- [security] Tool “calculate_expected_value” rewrote its description, which is the text the model reads
- [security] Tool “calculate_fair_value_adjustment” rewrote its description, which is the text the model reads
- [security] Tool “calculate_fixed_income” rewrote its description, which is the text the model reads
- [security] Tool “calculate_loss_making_company” rewrote its description, which is the text the model reads
- [security] Tool “calculate_market_multiple” rewrote its description, which is the text the model reads
- [security] Tool “calculate_option” rewrote its description, which is the text the model reads
- [security] Tool “calculate_residual” rewrote its description, which is the text the model reads
- [security] Tool “calculate_sector_metrics” rewrote its description, which is the text the model reads
- [security] Tool “calculate_structured_product” rewrote its description, which is the text the model reads
- [security] Tool “calculate_actuarial_pv” rewrote its description, which is the text the model reads
- [functional regression] Prompt “review_valuation_report” was removed
- [functional improvement] Schema quality: unverified → good
- [functional] New resource “fair_value_methods”
- [functional] Server version: 4.0.10 → 4.0.11

### 2026-10-04 (score 66)

First indexed and scored.

## MCP tools (14)

### `calculate_actuarial_pv` (~456 tokens)

Actuarial present value

Actuarial present value engine. Discount expected cash flows with mortality, survival, and risk adjustment for insurance and benefit obligations, generalising IFRS 17 (fulfilment cash flows), IAS 19 (employee benefits), IFRS 2 (share-based payments), and IAS 37 (provisions). Use this for regulated IFRS/HKFRS obligations only; it does NOT do generic project or scenario probability weighting (use calculate_expected_value). Methods: ifrs17_gmm: cash_flows, discount_rate, risk_adjustment; ifrs17_paa: premiums, claims_cash, acquisition_cash_flows, coverage_periods; ifrs17_vfa: cash_flows, discount_rate, underlying_items_return, risk_adjustment; ias19_puc: projected_benefits, discount_rate, attribution_years; ias37_provision: outcomes, probabilities, discount_rate, periods. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `acquisition_cash_flows`: Acquisition cash flows in reporting currency.
- `attribution_years`: Years of service for attribution (>=1).
- `cash_flows`: Projected cash flows in reporting currency, indexed t=1..n.
- `claims_cash`: Expected claims in reporting currency.
- `coverage_periods`: Coverage periods for the PAA (>=1).
- `discount_rate`: Discount rate as a decimal (0.10 = 10%); pre-tax when method=viu_pre_tax.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `outcomes`: Outcome values aligned with probabilities.
- `periods`: Number of periods n (>=1).
- `premiums`: Premiums in reporting currency.
- `probabilities`: Cumulative success probability per period in [0,1], aligned with cash_flows.
- `projected_benefits`: Projected benefits per service year.
- `risk_adjustment`: Explicit risk adjustment for non-financial risk.
- `underlying_items_return`: Return on underlying items (decimal).

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_convertible_bond` (~462 tokens)

Convertible and exchangeable bond valuation

Convertible-bond engine. Value callable and puttable convertible or exchangeable bonds with credit risk using a Tsiveriotis-Fernandes lattice (equity discounted at the risk-free rate, debt at a credit spread), with conversion, issuer call, holder put, coupon schedule, and a straight-bond floor. Use this for convertible and exchangeable bonds; for a plain bond or rate curve use calculate_fixed_income, and for a standalone option or warrant use calculate_option. The lattice_tsf, lattice_intensity, finite_difference, lsmc and quantlib methods are alternative numerical schemes for the same valuation and take identical inputs (Tsiveriotis-Fernandes is the reference, lsmc is Monte Carlo, quantlib needs the optional engine); choose one. Methods: lattice_tsf/lattice_intensity/finite_difference/lsmc/quantlib: spot, face, coupon_rate, maturity, conversion_ratio, volatility, risk_free, credit_spread, call_schedule, put_schedule, rights_priority. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `call_schedule`: Issuer call schedule [{date_years, price}]; pass [] when there is none.
- `conversion_ratio`: Shares received per bond on conversion.
- `coupon_rate`: Annual coupon rate (decimal).
- `credit_spread`: Credit spread over the risk-free rate (decimal).
- `face`: Bond face value.
- `maturity`: Time to expiry in years (0.5 = six months); > 0.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `put_schedule`: Investor put schedule [{date_years, price}]; pass [] when there is none.
- `rights_priority`: Which right prevails when call and put coincide.
- `risk_free`: Continuously-compounded risk-free rate (decimal).
- `spot`: Spot price of the underlying (or FX rate for garman_kohlhagen).
- `volatility`: Annualized volatility (decimal, 0.30 = 30%); > 0.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_credit_loss` (~531 tokens)

Credit loss and impairment

Credit-risk engine (IFRS 9 / HKFRS 9). Compute 12-month, lifetime, and staged expected credit loss, PD/LGD/EAD, provision matrices, hazard rates, and CVA/DVA. Use this for impairment, fair-value credit adjustment, and loan-loss provisioning; for the credit component of a specific convertible bond use calculate_convertible_bond, and for liquidity, control or marketability discounts rather than credit loss use calculate_fair_value_adjustment. Methods: ecl_12m: ead, pd, lgd; ecl_lifetime: ead, pd_lifetime, lgd; ecl_staged: ead, pd_12m, pd_lifetime, lgd, stage; provision_matrix: receivables_ageing, loss_rates; pd_from_spread: credit_spread, recovery, tenor_years; cumulative_pd: annual_pd, years; hazard: hazard_rate, tenor_years; cva_dva: exposure_profile, pd, lgd, discount_rate. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `annual_pd`: Annual PD in [0,1].
- `credit_spread`: Credit spread over the risk-free rate (decimal).
- `discount_rate`: Discount rate as a decimal (0.10 = 10%); pre-tax when method=viu_pre_tax.
- `ead`: Exposure at default in currency units.
- `exposure_profile`: Expected exposure per period.
- `hazard_rate`: Default hazard rate as a decimal.
- `lgd`: Loss given default in [0,1] (1 - recovery rate).
- `loss_rates`: Loss rate per ageing bucket.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `pd`: Probability of default over the horizon, in [0,1].
- `pd_12m`: 12-month PD in [0,1].
- `pd_lifetime`: Lifetime PD in [0,1].
- `receivables_ageing`: Ageing buckets [{bucket, amount}].
- `recovery`: Recovery rate in [0,1].
- `stage`: IFRS 9 stage (1, 2 or 3).
- `tenor_years`: Tenor in years (>0).
- `years`: Number of projection years n; equal len(cash_flows) when both are supplied.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_dcf` (~515 tokens)

Discounted cash flow valuation

Discounted cash flow valuation engine. Choose a method and supply its exact inputs to value a business from projected free cash flows, dividends, residual income, or economic profit. Covers FCFF/FCFE DCF, NPV/IRR, terminal values, and multi-stage growth. Use this for going-concern cash-flow businesses; for asset-anchored or financial firms use calculate_residual, for peer-based pricing use calculate_market_multiple, and for pre-profit companies use calculate_loss_making_company. Methods: dcf/npv: cash_flows, discount_rate; annuity: payment, discount_rate, periods; growing_annuity: payment, discount_rate, growth_rate, periods; perpetuity: payment, discount_rate; terminal_gordon: final_cash_flow, discount_rate, perpetual_growth; terminal_multiple: final_cash_flow, exit_multiple; viu_pre_tax: cash_flows, pre_tax_discount_rate; rnpv: cash_flows, discount_rate, probabilities; lease_pv: lease_payments, incremental_borrowing_rate. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `cash_flows`: Projected cash flows in reporting currency, indexed t=1..n.
- `discount_rate`: Discount rate as a decimal (0.10 = 10%); pre-tax when method=viu_pre_tax.
- `exit_multiple`: Exit multiple on the final flow, e.g. 8.0 for 8x.
- `final_cash_flow`: Final-period cash flow for the terminal value.
- `growth_rate`: Periodic growth rate as a decimal (0.03 = 3%).
- `incremental_borrowing_rate`: Lessee incremental borrowing rate (decimal), IFRS 16.
- `lease_payments`: Contractual lease payments in reporting currency, t=1..n.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `payment`: Level periodic payment in reporting currency.
- `periods`: Number of periods n (>=1).
- `perpetual_growth`: Gordon growth rate (decimal); strictly below discount_rate.
- `pre_tax_discount_rate`: Pre-tax discount rate (decimal), required by viu_pre_tax (IAS 36).
- `probabilities`: Cumulative success probability per period in [0,1], aligned with cash_flows.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_discount_rate` (~694 tokens)

Cost of capital and discount rates

Cost-of-capital engine. Compute WACC, cost of equity (CAPM), cost of debt, unlevered/relevered beta, and country or size premiums from an explicit capital structure and market inputs. Use this to derive the discount rate an income-approach valuation needs; it returns a rate, not a valuation, so feed the result to calculate_dcf, or to calculate_residual for IFRS-basis measurement. Methods: wacc: equity_weight, debt_weight, cost_equity, cost_debt, tax_rate; capm: risk_free, beta, market_return; startup_capm: risk_free, beta, market_risk_premium, size_premium, illiquidity_premium; build_up: risk_free, equity_risk_premium, size_premium, industry_premium, specific_premium; currency_adjusted: base_rate, currency_risk_premium, country_risk_premium; country_risk: sovereign_yield, us_risk_free; esg: base_rate, esg_risk_premium, esg_opportunity_discount; portfolio_beta: weights, betas; ibr: risk_free, credit_spread, tenor_years. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `base_rate`: Base rate before currency/country/ESG adjustment (decimal).
- `beta`: Equity beta (market = 1.0).
- `betas`: Asset/segment betas aligned with weights.
- `cost_debt`: Pre-tax cost of debt as a decimal.
- `cost_equity`: Cost of equity as a decimal (0.12 = 12%).
- `country_risk_premium`: Country risk premium (decimal).
- `credit_spread`: Credit spread over the risk-free rate (decimal).
- `currency_risk_premium`: Currency risk premium (decimal).
- `debt_weight`: Market-value weight of debt (decimal); with equity_weight must sum to 1.
- `equity_risk_premium`: Equity risk premium (decimal).
- `equity_weight`: Market-value weight of equity (decimal); with debt_weight must sum to 1.
- `esg_opportunity_discount`: ESG opportunity discount subtracted from the base rate (decimal).
- `esg_risk_premium`: ESG risk premium added to the base rate (decimal).
- `illiquidity_premium`: Illiquidity premium (decimal).
- `industry_premium`: Industry risk premium (decimal).
- `market_return`: Expected market return (decimal).
- `market_risk_premium`: Market risk premium (decimal).
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `risk_free`: Continuously-compounded risk-free rate (decimal).
- `size_premium`: Small-size premium (decimal).
- `sovereign_yield`: Sovereign bond yield (decimal).
- `specific_premium`: Company-specific risk premium (decimal).
- `tax_rate`: Marginal corporate tax rate as a decimal.
- `tenor_years`: Tenor in years (>0).
- `us_risk_free`: US Treasury risk-free yield (decimal).
- `weights`: Weights that must sum to 1.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_expected_value` (~384 tokens)

Expected value and probability weighting

Expected-value engine. Compute expected values over discrete, continuous, simulated, or tree-structured uncertainty, plus football-field ranges. Use this for generic probability weighting of scenarios, Monte-Carlo and decision trees; it does NOT perform IFRS/HKFRS measurement of provisions, insurance or employee-benefit obligations (use calculate_actuarial_pv), and it does not price path-dependent payoffs (use calculate_structured_product). Methods: discrete: outcomes, probabilities; continuous: distribution, mean, std, lower, upper; scenario: scenarios; monte_carlo: iterations, distributions, base_params, seed; decision_tree: tree; football_field: estimates. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `base_params`: Base parameter values for simulation.
- `distribution`: Continuous distribution to integrate over.
- `distributions`: Input distributions [{parameter, type, mean, std}].
- `estimates`: Estimates [{method, central, low, high}] for a football field.
- `iterations`: Monte-Carlo iterations (>=1000).
- `lower`: Lower integration bound.
- `mean`: Distribution mean.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `outcomes`: Outcome values aligned with probabilities.
- `probabilities`: Cumulative success probability per period in [0,1], aligned with cash_flows.
- `scenarios`: Scenarios [{probability, value}] with probabilities summing to 1.
- `seed`: Deterministic RNG seed (required by simulation methods for reproducibility).
- `std`: Distribution standard deviation (>0).
- `tree`: Decision tree with chance/decision nodes.
- `upper`: Upper integration bound.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_fair_value_adjustment` (~349 tokens)

Fair value adjustments (IFRS 13)

Fair-value-adjustment engine (IFRS 13). Compute exit-price adjustments including credit, liquidity, control and marketability discounts, blockage, and the fair-value hierarchy level. Use this to move from an indicated value to the fair value recognised in the accounts; for liquidity/marketability inputs of a listed instrument prefer calculate_market_multiple, and for expected credit loss use calculate_credit_loss. Methods: dlom: base_value, restricted_period, volatility, risk_free; dloc: base_value, transaction_cost_pct; control_premium: base_value, control_premium_pct; minority_discount: base_value, minority_discount_pct; highest_best_use: base_value, alternative_use_values; hierarchy_level: inputs. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `alternative_use_values`: Financially feasible alternative-use values.
- `base_value`: Base valuation before the adjustment.
- `control_premium_pct`: Control premium as a fraction of value.
- `inputs`: Inputs [{value, level}] used to determine the hierarchy level.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `minority_discount_pct`: Minority discount as a fraction of value.
- `restricted_period`: Restricted/marketability period in years (>=0).
- `risk_free`: Continuously-compounded risk-free rate (decimal).
- `transaction_cost_pct`: Transaction cost as a fraction of value.
- `volatility`: Annualized volatility (decimal, 0.30 = 30%); > 0.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_fixed_income` (~546 tokens)

Fixed income and term structure analytics

Fixed-income engine. Price plain coupon bonds, solve for yield to maturity, measure interest-rate sensitivity via Macaulay and modified duration and convexity, and build a HIBOR/HKD-style term structure: bootstrap a zero curve from par rates, infer forward rates, and discount cash flows on the curve. Use this for vanilla bonds, rate risk and discount curves; for convertibles use calculate_convertible_bond and for structured payoffs use calculate_structured_product. Methods: bond_price/duration/convexity: face, coupon_rate, years, ytm, frequency; bond_yield: face, coupon_rate, years, price, frequency; matrix_pricing: target_tenor, benchmark_tenors, benchmark_yields; discount_factor: rate, years, frequency; zero_curve: par_rates, tenors, frequency; forward_rate: zero_rates, tenors, t1, t2; pv_curve: cash_flows, times, zero_rates, tenors. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `benchmark_tenors`: Benchmark tenors in years, sorted, aligned with benchmark_yields.
- `benchmark_yields`: Benchmark yields (decimal) at each benchmark tenor.
- `cash_flows`: Projected cash flows in reporting currency, indexed t=1..n.
- `coupon_rate`: Annual coupon rate (decimal).
- `face`: Bond face value.
- `frequency`: Coupon payments per year (1=annual, 2=semi-annual).
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `par_rates`: Par (coupon) rates per tenor, aligned with tenors (decimal).
- `price`: Dirty price of the instrument in reporting currency.
- `rate`: A single interest/zero rate (decimal).
- `t1`: Forward period start in years (>=0).
- `t2`: Forward period end in years (> t1).
- `target_tenor`: Target tenor in years for matrix pricing (interpolated).
- `tenors`: Tenors in years, aligned with par_rates or zero_rates.
- `times`: Cash-flow times in years, aligned with cash_flows.
- `years`: Number of projection years n; equal len(cash_flows) when both are supplied.
- `ytm`: Yield to maturity (decimal, annualised).
- `zero_rates`: Zero (spot) rates per tenor, decimal, annual compounding.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_loss_making_company` (~724 tokens)

Loss-making and pre-profit company valuation

Loss-making-company engine. Value currently unprofitable companies with margin-ramp DCF, revenue multiples, Merton structural equity, the VC method, distressed waterfalls, bank residual income, and SPAC deals; every method returns a central value plus a dispersion (sigma, percentiles, long-tail). Use this when earnings-based multiples break down; for standalone probability weighting of arbitrary scenarios use calculate_expected_value, and for a single going-concern DCF use calculate_dcf. Methods: margin_ramp_dcf: revenue, growth_rate, start_margin, target_margin, ramp_years, discount_rate, years, shares_outstanding, net_debt, range_method; revenue_multiple: revenue, ev_revenue_multiple, net_debt, shares_outstanding, range_method; merton_equity: firm_value, firm_volatility, debt, risk_free, maturity, range_method; vc_method: terminal_value, target_return, investment, shares_outstanding, range_method; distressed_waterfall: enterprise_value, claims, range_method; bank_residual_income: book_value, net_income, cost_equity, growth_rate, range_method; spac_deal: trust_cash, shares_outstanding, redemption_price, range_method. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `book_value`: Book value of equity in reporting currency.
- `claims`: Ordered claims [{name, amount, priority}] for a waterfall.
- `cost_equity`: Cost of equity as a decimal (0.12 = 12%).
- `debt`: Debt face value (default point) for the Merton equity model.
- `discount_rate`: Discount rate as a decimal (0.10 = 10%); pre-tax when method=viu_pre_tax.
- `enterprise_value`: Enterprise value distributed across claims.
- `ev_revenue_multiple`: EV/Revenue multiple.
- `firm_value`: Firm/asset value for the Merton equity model.
- `firm_volatility`: Asset volatility for the Merton equity model (decimal).
- `growth_rate`: Periodic growth rate as a decimal (0.03 = 3%).
- `investment`: Amount invested (VC method).
- `maturity`: Time to expiry in years (0.5 = six months); > 0.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `net_debt`: Total debt minus cash and equivalents.
- `net_income`: Net income in reporting currency.
- `ramp_years`: Years to move from start_margin to target_margin (>=1).
- `range_method`: Statistic returned as the headline value; the full dispersion is always included.
- `redemption_price`: SPAC redemption price per share.
- `revenue`: Base-year revenue in reporting currency.
- `risk_free`: Continuously-compounded risk-free rate (decimal).
- `shares_outstanding`: Shares outstanding.
- `start_margin`: Opening operating margin (decimal, may be negative); margin_ramp.
- `target_margin`: Normalized margin reached after ramp_years; margin_ramp.
- `target_return`: VC target return multiple.
- `terminal_value`: Exit/terminal value (VC method).
- `trust_cash`: SPAC trust cash available for redemption.
- `years`: Number of projection years n; equal len(cash_flows) when both are supplied.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_market_multiple` (~626 tokens)

Market multiples and comparable pricing

Market-multiple engine. Apply peer multiples (P/E, P/B, EV/EBITDA, EV/Sales, PEG and more) or derive implied multiples to price a company on a comparable basis. Use this for market-approach pricing where peers exist; it does peer multiples only — for intrinsic cash-flow value use calculate_dcf, and for residual-income or IFRS-basis measurement use calculate_residual. Methods: ev_revenue: revenue, ev_revenue_multiple; ev_ebitda: ebitda, ev_ebitda_multiple; ev_arr: arr, ev_arr_multiple; ev_gmv: gmv, ev_gmv_multiple; pe: eps, pe_multiple; pb: book_value_per_share, pb_multiple; ps: sales_per_share, ps_multiple; cap_rate: net_operating_income, cap_rate; regression: intercept, growth_rate, growth_coefficient, market_maturity, maturity_coefficient; royalty_cap: revenue, royalty_rate, discount_rate; ddm: dividend_per_share, cost_equity, growth_rate. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `arr`: Annual recurring revenue in reporting currency.
- `book_value_per_share`: Book value per share.
- `cap_rate`: Capitalisation rate as a decimal (0.06 = 6%).
- `cost_equity`: Cost of equity as a decimal (0.12 = 12%).
- `discount_rate`: Discount rate as a decimal (0.10 = 10%); pre-tax when method=viu_pre_tax.
- `dividend_per_share`: Dividend per share in reporting currency.
- `ebitda`: EBITDA in reporting currency.
- `eps`: Earnings per share.
- `ev_arr_multiple`: EV/ARR multiple.
- `ev_ebitda_multiple`: EV/EBITDA multiple.
- `ev_gmv_multiple`: EV/GMV multiple.
- `ev_revenue_multiple`: EV/Revenue multiple.
- `gmv`: Gross merchandise value in reporting currency.
- `growth_coefficient`: Regression slope on growth.
- `growth_rate`: Periodic growth rate as a decimal (0.03 = 3%).
- `intercept`: Regression intercept (base multiple).
- `market_maturity`: Market maturity indicator.
- `maturity_coefficient`: Regression slope on market maturity.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `net_operating_income`: Stabilised net operating income in reporting currency.
- `pb_multiple`: Price/Book multiple.
- `pe_multiple`: Price/Earnings multiple.
- `ps_multiple`: Price/Sales multiple.
- `revenue`: Base-year revenue in reporting currency.
- `royalty_rate`: Royalty rate as a decimal (0.05 = 5% of revenue).
- `sales_per_share`: Sales per share.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_option` (~644 tokens)

Option and warrant pricing

Option-pricing engine. Price European and American options and warrants (Black-Scholes, Black-76, CRR binomial, Garman-Kohlhagen FX, digital, range, share-based) and their greeks. Use this for a single contingent claim or warrant on one underlying; it does NOT price listed structured payoffs such as CBBCs, inline/derivative warrants or autocallables (use calculate_structured_product). Methods: black_scholes: spot, strike, maturity, risk_free, volatility, option_type; black76: forward, strike, maturity, risk_free, volatility, option_type; binomial_american: spot, strike, maturity, risk_free, volatility, option_type, steps; garman_kohlhagen: spot, strike, maturity, domestic_rate, foreign_rate, volatility, option_type; barrier_first_passage: spot, strike, maturity, risk_free, volatility, option_type, barrier, barrier_type; asian_average: spot, strike, maturity, risk_free, volatility, option_type, average_type; digital: spot, strike, maturity, risk_free, volatility, cash_payout; range: spot, lower_strike, upper_strike, maturity, risk_free, volatility, payout; share_based: share_price, exercise_price, expected_life, volatility, risk_free, dividend_yield. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `average_type`: Averaging convention.
- `barrier`: Knock level for barrier_first_passage.
- `barrier_type`: Barrier direction.
- `cash_payout`: Fixed cash amount paid when the digital condition is met.
- `dividend_yield`: Continuous dividend yield (decimal).
- `domestic_rate`: Domestic continuously-compounded rate (decimal).
- `exercise_price`: Exercise price of the award (IFRS 2).
- `expected_life`: Expected life of the award in years (IFRS 2).
- `foreign_rate`: Foreign continuously-compounded rate (decimal).
- `forward`: Forward/futures price of the underlying.
- `lower_strike`: Lower strike of the range.
- `maturity`: Time to expiry in years (0.5 = six months); > 0.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `option_type`: Option right.
- `payout`: Fixed payout when the range condition is met.
- `risk_free`: Continuously-compounded risk-free rate (decimal).
- `share_price`: Grant-date share price (IFRS 2).
- `spot`: Spot price of the underlying (or FX rate for garman_kohlhagen).
- `steps`: Lattice steps for binomial_american (>=50).
- `strike`: Strike or exercise price in the same currency as spot.
- `upper_strike`: Upper strike of the range.
- `volatility`: Annualized volatility (decimal, 0.30 = 30%); > 0.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_residual` (~1285 tokens)

IFRS measurement, residual income and non-financial fair value

IFRS/HKFRS measurement engine. Compute goodwill and purchase-price allocation, impairment (IAS 36), inventory net realisable value, held-for-sale, debt waterfalls, cap tables, sum-of-the-parts and SPAC redemption; residual income and justified price-to-book; and non-financial asset fair value: investment property (IAS 40 / HKAS 40), PP&E revaluation via depreciated replacement cost (IAS 16) and biological assets at fair value less costs to sell (IAS 41). Use this for accounting-basis measurement of assets and equity; for going-concern cash flow use calculate_dcf and for peer multiples use calculate_market_multiple. Methods: goodwill: purchase_price, fair_value_net_identifiable_assets; ppa: purchase_price, tangible_assets_fv, identified_intangibles_fv; impairment_fvlcd: carrying_value, fair_value_less_costs_to_dispose; impairment_viu: carrying_value, value_in_use; inventory_nrv: carrying_value, net_realisable_value; held_for_sale: carrying_value, fair_value_less_costs_to_sell; debt_waterfall/cap_table: enterprise_value, claims; sotp: segments, net_debt, holding_discount; spac_redemption: trust_cash, shares_outstanding, redemption_price; investment_property: noi, cap_rate; ppe_revaluation: replacement_cost, accumulated_depreciation; biological_asset: expected_price, quantity, costs_to_sell; residual_income: book_value, net_income, cost_equity; justified_pb: roe, cost_equity, growth_rate; relief_from_royalty: revenue, royalty_rate, discount_rate, periods; mpeem: cash_flows, contributory_charges, discount_rate; with_without: with_cash_flows, without_cash_flows, discount_rate; recoverable_amount: fair_value_less_costs_to_dispose, value_in_use; liability_fulfilment: fulfilment_costs, mark_up, discount_rate; inventory_residual: selling_price, costs_to_complete, profit_allowance; development_residual: gross_development_value, development_costs, developer_profit. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extr…

Input parameters:

- `accumulated_depreciation`: Accumulated depreciation to deduct (IAS 16).
- `book_value`: Book value of equity in reporting currency.
- `cap_rate`: Capitalisation rate as a decimal (0.06 = 6%).
- `carrying_value`: Carrying amount before the test.
- `cash_flows`: Projected cash flows in reporting currency, indexed t=1..n.
- `claims`: Ordered claims [{name, amount, priority}] for a waterfall.
- `contributory_charges`: Contributory-asset charges (economic rent) per period, aligned with cash_flows (IVS 210 MPEEM).
- `cost_equity`: Cost of equity as a decimal (0.12 = 12%).
- `costs_to_complete`: Remaining costs to complete work-in-process inventory (IVS 230).
- `costs_to_sell`: Incremental costs to sell / dispose (IAS 41).
- `developer_profit`: Required developer's profit/risk allowance (IVS 410).
- `development_costs`: All known/anticipated costs to complete the development.
- `discount_rate`: Discount rate as a decimal (0.10 = 10%); pre-tax when method=viu_pre_tax.
- `enterprise_value`: Enterprise value distributed across claims.
- `expected_price`: Expected market price per biological-asset unit (IAS 41).
- `fair_value_less_costs_to_dispose`: FVLCD in reporting currency.
- `fair_value_less_costs_to_sell`: FV less costs to sell in reporting currency.
- `fair_value_net_identifiable_assets`: Fair value of net identifiable assets.
- `fulfilment_costs`: Costs required to fulfil the performance obligation per period (IVS 220 Bottom-Up).
- `gross_development_value`: Anticipated value of the completed development (IVS 410 residual method).
- `growth_rate`: Periodic growth rate as a decimal (0.03 = 3%).
- `holding_discount`: Holding-company discount as a decimal.
- `identified_intangibles_fv`: Fair value of separately identified intangibles.
- `mark_up`: Reasonable mark-up on fulfilment costs (decimal, IVS 220 Bottom-Up).
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `net_debt`: Total debt minus cash and equivalents.
- `net_income`: Net income in reporting currency.
- `net_realisable_value`: Estimated NRV in reporting currency.
- `noi`: Net operating income of the property (IAS 40).
- `periods`: Number of periods n (>=1).
- `profit_allowance`: Estimated profit allowance on the completion/disposal effort.
- `purchase_price`: Consideration transferred in reporting currency.
- `quantity`: Number of units (biological assets).
- `redemption_price`: SPAC redemption price per share.
- `replacement_cost`: Depreciated-replacement-cost gross value of PP&E (IAS 16).
- `revenue`: Base-year revenue in reporting currency.
- `roe`: Return on equity (decimal).
- `royalty_rate`: Royalty rate as a decimal (0.05 = 5% of revenue).
- `segments`: Segments [{name, value}] for a sum-of-the-parts.
- `selling_price`: Estimated selling price of the finished inventory (IVS 230 top-down).
- `shares_outstanding`: Shares outstanding.
- `tangible_assets_fv`: Fair value of tangible assets.
- `trust_cash`: SPAC trust cash available for redemption.
- `value_in_use`: Value in use in reporting currency.
- `with_cash_flows`: After-tax cash flows with the asset in use (IVS 210 with-and-without).
- `without_cash_flows`: After-tax cash flows absent the asset (IVS 210 with-and-without), aligned with with_cash_flows.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_sector_metrics` (~730 tokens)

Sector-specific operating metrics

Sector-metric engine. Compute the metrics that anchor valuation in specific industries: SaaS (ARR, NRR, magic number, Rule of 40), marketplaces (take rate, GMV multiple), lending (LTV/CAC), and crypto (NVT, Metcalfe). It returns operating metrics, not a valuation; use them as inputs to calculate_market_multiple or calculate_dcf. Methods: ltv: arpu, gross_margin, churn_rate; cac: sales_marketing_expense, new_customers; arr: subscription_values; nrr: starting_revenue, ending_revenue, expansion_revenue; magic_number: net_new_arr, sales_marketing_expense_prior; rule_of_40: growth_rate, profit_margin; take_rate: revenue, gmv; gmv_multiple: gmv, ev_gmv_multiple; retention: retained_customers, starting_customers; trl: market_size, market_share, margin, exit_multiple, trl_discount; break_even: fixed_costs, asp, variable_cost; gross_margin: asp, variable_cost; token: transaction_volume, price_per_tx, velocity, supply; nvt: market_cap, transaction_volume; metcalfe: n, coefficient. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `arpu`: Average revenue per user per period.
- `asp`: Average selling price per unit.
- `churn_rate`: Periodic churn rate as a decimal.
- `coefficient`: Scaling coefficient (Metcalfe).
- `ending_revenue`: Revenue from the cohort at period end.
- `ev_gmv_multiple`: EV/GMV multiple.
- `exit_multiple`: Exit multiple on the final flow, e.g. 8.0 for 8x.
- `expansion_revenue`: Expansion revenue from the cohort.
- `fixed_costs`: Period fixed costs.
- `gmv`: Gross merchandise value in reporting currency.
- `gross_margin`: Gross margin as a decimal (0.80 = 80%).
- `growth_rate`: Periodic growth rate as a decimal (0.03 = 3%).
- `margin`: Operating margin as a decimal.
- `market_cap`: Market capitalisation.
- `market_share`: Achievable market share as a decimal.
- `market_size`: Total addressable market in reporting currency.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `n`: Node/participant count n (>=0).
- `net_new_arr`: Net new ARR in the period.
- `new_customers`: Customers acquired in the period.
- `price_per_tx`: Value per transaction.
- `profit_margin`: Profit margin as a decimal.
- `retained_customers`: Customers retained at period end.
- `revenue`: Base-year revenue in reporting currency.
- `sales_marketing_expense`: Sales and marketing spend for the period.
- `sales_marketing_expense_prior`: Prior-period sales and marketing spend.
- `starting_customers`: Customers at period start.
- `starting_revenue`: Revenue from the cohort at period start.
- `subscription_values`: Subscription revenue per customer.
- `supply`: Token supply.
- `transaction_volume`: Transaction volume for the period.
- `trl_discount`: Technology-readiness risk discount as a decimal.
- `variable_cost`: Variable cost per unit.
- `velocity`: Token velocity.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

### `calculate_structured_product` (~754 tokens)

Structured product and derivative pricing

Structured-product engine. Value HKEX-listed and OTC structures: CBBCs, derivative and inline warrants, equity-linked notes and investments, autocallables, accumulators and decumulators, credit-linked notes, TRS, and CFDs. Use this for equity-linked and credit-linked payoff structures; for a plain option or warrant use calculate_option, for a convertible or exchangeable bond use calculate_convertible_bond, and for a vanilla bond or term structure use calculate_fixed_income. Methods: cbbc: notional, spot, strike, barrier, barrier_type, maturity, risk_free, volatility, option_type; cbbc_residual: notional, spot, call_price, entitlement, barrier, barrier_type, maturity, risk_free, volatility, option_type; derivative_warrant: notional, spot, strike, maturity, risk_free, volatility, average_type, option_type; inline_warrant: notional, spot, lower_strike, upper_strike, maturity, risk_free, volatility, payout; inline_warrant_avg: notional, spot, lower_strike, upper_strike, maturity, risk_free, volatility, payout, fixing_days; eli/eln: notional, spot, strike, maturity, risk_free, volatility, coupon_rate; autocallable: notional, spot, knock_out_level, observation_dates, coupon_rate_structured, maturity, risk_free, volatility; credit_linked_note: notional, credit_spread, recovery, maturity, risk_free, coupon_rate_structured; accumulator/decumulator: notional, spot, strike, knock_out_level, observation_dates, risk_free, volatility; trs: notional, spot, maturity, risk_free, dividend_yield; cfd: notional, spot, strike, maturity, risk_free. Supply exactly one method with its declared inputs (no defaults). An unknown method, a missing input, or an extra field returns an error envelope (code INVALID_ARGUMENT) instead of raising.

Input parameters:

- `average_type`: Averaging convention.
- `barrier`: Knock level for barrier_first_passage.
- `barrier_type`: Barrier direction.
- `call_price`: CBBC call price (mandatory-call trigger level).
- `coupon_rate`: Annual coupon rate (decimal).
- `coupon_rate_structured`: Conditional coupon rate (decimal).
- `credit_spread`: Credit spread over the risk-free rate (decimal).
- `dividend_yield`: Continuous dividend yield (decimal).
- `entitlement`: CBBC entitlement: units of underlying per contract.
- `fixing_days`: Number of closing fixings averaged for settlement (>=1).
- `knock_out_level`: Knock-out level for autocallables and accumulators.
- `lower_strike`: Lower strike of the range.
- `maturity`: Time to expiry in years (0.5 = six months); > 0.
- `method` (string, required): Formula to apply; the tool description lists the exact inputs each value requires.
- `notional`: Contract notional/face amount in reporting currency.
- `observation_dates`: Observation dates in years for path-dependent products.
- `option_type`: Option right.
- `payout`: Fixed payout when the range condition is met.
- `recovery`: Recovery rate in [0,1].
- `risk_free`: Continuously-compounded risk-free rate (decimal).
- `spot`: Spot price of the underlying (or FX rate for garman_kohlhagen).
- `strike`: Strike or exercise price in the same currency as spot.
- `upper_strike`: Upper strike of the range.
- `volatility`: Annualized volatility (decimal, 0.30 = 30%); > 0.

Output parameters:

- `assumptions` (object|null): Inputs and assumptions used, echoed for traceability.
- `data_timestamp` (string|null): ISO-8601 UTC timestamp of the underlying data, when fetched.
- `error` (object|null): Error detail, present only when status='error'.
- `formula_ref` (string|null): Formula or standards reference for the method.
- `method` (string|null): Method or tool name that produced the result.
- `status` (string): 'ok' on success, 'error' on failure.
- `steps` (array|null): Ordered computation steps, when the method reports them.
- `ticker` (string|null): Ticker the result pertains to, when applicable.
- `value`: Primary result: a number for scalar methods, an object for valuation methods.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/simonmak-ascent-fair-value/fair-value-3#diagnostics

## Score history

- 2026-10-06: 73
- 2026-10-05: 72
- 2026-10-04: 66

## Common questions

### What is the Fair Value MCP Server server?

Fair Value MCP Server is listed in the public MCP registry as io.github.simonmak-ascent/fair-value. Valuation MCP: DCF/NAV/CCA, WACC, derivatives, credit risk, fixed income, structured products. This page covers its hosted endpoint (https://fair-value.ascent-partners.com/mcp).

### Is the Fair Value MCP Server server safe to use?

Fair Value MCP Server scores 73 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Fair Value MCP Server server expose?

Fair Value MCP Server exposes 14 tools: calculate_actuarial_pv, calculate_convertible_bond, calculate_credit_loss, calculate_dcf, calculate_discount_rate, and 9 more. Their descriptions and schemas cost roughly 8,700 tokens of context every time the server is loaded.

### Does the Fair Value MCP Server server require authentication?

No. We connected to Fair Value MCP Server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Fair Value MCP Server server still maintained?

Fair Value MCP Server is still listed as active in the MCP registry. We last reached this channel on 6 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://fair-value.ascent-partners.com/mcp
- Repository: https://github.com/simonmak-ascent/fair-value
- Changelog RSS feed: https://verifymcp.io/servers/simonmak-ascent-fair-value/fair-value-3.xml
- Changelog JSON feed: https://verifymcp.io/servers/simonmak-ascent-fair-value/fair-value-3.json
- HTML version of this page: https://verifymcp.io/servers/simonmak-ascent-fair-value/fair-value-3
