Serveur MCP

Startup Valuation MCP Server

io.github.simonplmak-cloud/startup-valuation

Ce que fait ce MCP

Provides startup valuation models covering pre-revenue companies, SaaS, marketplaces, fintech, biotech, hardware, funding instruments, and equity allocation.

valuation_advanced
Options & Scenario Analysis
Advanced techniques: Black-Scholes call value, binomial-tree option value, and scenario analysis. Method selects the technique. For a quick expected value over arbitrary outcome lists, prefer valuation_probability with method 'probability_weighted'; scenario_analysis here is for explicit named bull/base/bear scenario tables. Parameters apply per method: black_scholes and binomial need underlying + strike + risk_free_rate + volatility + time_to_maturity (binomial adds steps); scenario_analysis needs scenarios. Not for plain discounted cash flow — for that use valuation_time_value. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'steps': {'type': 'integer', 'default': 50, 'description': 'Binomial tree time steps (integer ≥ 1; higher = more accurate).'}, 'method': {'enum': ['black_scholes', 'binomial', 'scenario_analysis'], 'type': 'string', 'description': 'Formula to apply. Options: black_scholes = C = N(d₁)S - N(d₂)Ke^(-rT).; binomial = Cox-Ross-Rubinstein binomial option value.; scenario_analysis = E[V] = Σ pᵢ·Vᵢ over named scenarios.'}, 'strike': {'type': 'number', 'description': 'Strike / exercise price K, currency units.'}, 'scenarios': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Scenario objects: {name: str, probability: 0-1, value: currency}; probabilities should sum to 1.'}, 'underlying': {'type': 'number', 'description': 'Underlying asset value S, currency units.'}, 'volatility': {'type': 'number', 'description': 'Annualised volatility σ as a decimal (0.80 = 80%).'}, 'risk_free_rate': {'type': 'number', 'description': 'Risk-free rate as a decimal (e.g. 0.04 for 4%).'}, 'time_to_maturity': {'type': 'number', 'description': 'Time to expiry in years T, must be ≥ 0.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_biotech
Biotech Pipeline Valuation
Risk-adjusted biotech valuation: peak sales, decision-tree expected value, and full pipeline rNPV across drugs. Method selects the model. Use for pharma/drug pipelines; for hardware or deep tech use valuation_hardware. Parameters apply per method: peak_sales needs patient_population + penetration + price; decision_tree needs probabilities + terminal_value; pipeline needs drugs + discount_rate. Not for hardware or deep tech — for that use valuation_hardware. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'drugs': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Pipeline drugs: {name, peak_sales, probability, years_to_market, multiple(optional)}.'}, 'price': {'type': 'number', 'description': 'Price per unit / treatment, currency units.'}, 'method': {'enum': ['peak_sales', 'decision_tree', 'pipeline'], 'type': 'string', 'description': 'Formula to apply. Options: peak_sales = Peak = population × penetration × price × compliance.; decision_tree = EV = Π pᵢ × terminal value.; pipeline = V = Σ(peak sales × multiple × P_success) / (1+r)^n.'}, 'compliance': {'type': 'number', 'default': 1.0, 'description': 'Compliance / adherence rate as a decimal.'}, 'penetration': {'type': 'number', 'description': 'Market penetration as a decimal (0.10 = 10%).'}, 'discount_rate': {'type': 'number', 'description': 'Discount rate as a decimal (0.12 = 12%).'}, 'probabilities': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Probability of each outcome or stage, each in [0,1]; the list must sum to 1 where it is exhaustive.'}, 'terminal_value': {'type': 'number', 'description': 'Expected exit / terminal value, currency units.'}, 'patient_population': {'type': 'number', 'description': 'Target patient population treated per year.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_capm
CAPM & Cost of Equity
Estimate the cost of capital: standard CAPM, startup-adjusted CAPM with size and illiquidity premiums, portfolio beta from weighted asset betas, and WACC blending after-tax cost of equity and debt. Method selects the formula. Use to derive the discount rate that feeds valuation_time_value and DCF models; for cross-border rates add valuation_international. Parameters apply per method: capm needs risk_free_rate + beta + market_return; startup_capm adds size_premium and liquidity_premium; portfolio_beta needs weights + betas, which must be equal length; wacc needs equity_value + debt_value + cost_of_equity + cost_of_debt + tax_rate. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'beta': {'type': 'number', 'description': 'Systematic risk beta (market = 1.0).'}, 'betas': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Asset betas aligned with weights; typically 0.5–3.0 (market = 1.0).'}, 'method': {'enum': ['capm', 'startup_capm', 'portfolio_beta', 'wacc'], 'type': 'string', 'description': 'Formula to apply. Options: capm = E(R) = Rf + β·(E(Rm) - Rf).; startup_capm = r = Rf + β·MRP + size premium + illiquidity premium.; portfolio_beta = βp = Σ wᵢ·βᵢ.; wacc = WACC = (E/V)·Re + (D/V)·Rd·(1 − T).'}, 'weights': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Portfolio or factor weights, each in [0,1] and summing to 1 (same order as the paired value list).'}, 'tax_rate': {'type': 'number', 'default': 0.3, 'description': 'Effective tax rate as a decimal in [0,1].'}, 'debt_value': {'type': 'number', 'description': 'Market value of debt, in currency units.'}, 'cost_of_debt': {'type': 'number', 'description': 'Pre-tax cost of debt Rd as a decimal.'}, 'equity_value': {'type': 'number', 'description': 'Value of equity offered, currency units.'}, 'size_premium': {'type': 'number', 'default': 0.0, 'description': 'Small-cap / size premium as a decimal.'}, 'market_return': {'type': 'number', 'description': 'Expected market return as a decimal (e.g. 0.10 for 10%).'}, 'cost_of_equity': {'type': 'number', 'description': 'After-tax cost of equity Re as a decimal.'}, 'risk_free_rate': {'type': 'number', 'description': 'Risk-free rate as a decimal (e.g. 0.04 for 4%).'}, 'liquidity_premium': {'type': 'number', 'default': 0.0, 'description': 'Illiquidity premium as a decimal.'}, 'market_risk_premium': {'type': 'number', 'description': 'Market risk premium as a decimal (e.g. 0.06).'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_comparables
Comparable Multiples
Market multiples from comparables: P/E, P/S, EV/EBITDA, EV/Revenue, and a regression-adjusted multiple. Method selects the ratio. Use when public comparables exist; for pre-revenue or private startups use valuation_core. Parameters apply per method: pe_ratio needs market_cap + net_income; ps_ratio needs market_cap + revenue; ev_ebitda needs enterprise_value + ebitda; ev_revenue needs enterprise_value + revenue; regression_multiple needs intercept + growth_rate + growth_coefficient (plus optional maturity/stage/geography terms). Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'stage': {'type': 'number', 'default': 0.0, 'description': 'Company stage indicator.'}, 'ebitda': {'type': 'number', 'description': 'EBITDA, currency units.'}, 'method': {'enum': ['pe_ratio', 'ps_ratio', 'ev_ebitda', 'ev_revenue', 'regression_multiple'], 'type': 'string', 'description': 'Formula to apply. Options: pe_ratio = P/E = market cap / net income.; ps_ratio = P/S = market cap / revenue.; ev_ebitda = EV/EBITDA = enterprise value / EBITDA.; ev_revenue = EV/Revenue = enterprise value / revenue.; regression_multiple = Multiple = β0 + β1·g + β2·M + β3·S + β4·G.'}, 'revenue': {'type': 'number', 'description': 'Revenue for the period, currency units.'}, 'geography': {'type': 'number', 'default': 0.0, 'description': 'Geography indicator.'}, 'intercept': {'type': 'number', 'description': 'Regression intercept β0 (base multiple).'}, 'market_cap': {'type': 'number', 'description': 'Market capitalisation, currency units.'}, 'net_income': {'type': 'number', 'description': 'Net income (earnings), currency units.'}, 'growth_rate': {'type': 'number', 'description': 'Revenue growth rate as a decimal (0.40 = 40%).'}, 'market_maturity': {'type': 'number', 'default': 0.0, 'description': 'Market maturity indicator.'}, 'enterprise_value': {'type': 'number', 'description': 'Enterprise value (market cap + net debt), currency units.'}, 'stage_coefficient': {'type': 'number', 'default': 0.0, 'description': 'Regression slope on stage.'}, 'growth_coefficient': {'type': 'number', 'description': 'Regression slope on growth (multiple points per unit growth).'}, 'maturity_coefficient': {'type': 'number', 'default': 0.0, 'description': 'Regression slope on market maturity.'}, 'geography_coefficient': {'type': 'number', 'default': 0.0, 'description': 'Regression slope on geography.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_core
Pre-Revenue Core Methods
The textbook's pre-revenue methods: Scorecard, Berkus, Risk-Factor Summation, VC Method (post- and pre-money), and exit terminal value. Use these first for early-stage startups. Method selects the formula, and each method names its own parameters: scorecard needs average_valuation + weights + scores; berkus takes five factor awards; risk_factor needs base_valuation + risk_ratings; vc_post_money needs terminal_value + target_return; vc_pre_money needs post_money + investment; terminal_value needs projected_revenue + multiple; triangulated needs the scorecard inputs plus terminal_value/target_return/investment. Routing: for SAFEs, tokens, ESG, network effects, or data-moat methods use valuation_emerging; for options or bull/base/bear scenario tables use valuation_advanced; for public-comparable multiples use valuation_comparables. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'method': {'enum': ['scorecard', 'berkus', 'risk_factor', 'vc_post_money', 'vc_pre_money', 'terminal_value', 'triangulated'], 'type': 'string', 'description': 'Formula to apply. Options: scorecard = V = V_avg · Σ(wᵢ·sᵢ) across 7 factors.; berkus = V = Σ factor awards, each capped at $500K.; risk_factor = V = V_base + Σ(rᵢ·$250K) over 12 risks.; vc_post_money = Post = Terminal / target ROI.; vc_pre_money = Pre = Post - Investment.; terminal_value = Terminal = projected revenue × multiple.; triangulated = Runs Scorecard and the VC Method together and returns their mean.'}, 'scores': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Factor multipliers aligned with weights (1.0 = average, >1 above average).'}, 'weights': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Portfolio or factor weights, each in [0,1] and summing to 1 (same order as the paired value list).'}, 'multiple': {'type': 'number', 'description': 'Exit or market multiple applied to the metric.'}, 'prototype': {'type': 'number', 'default': 0.0, 'description': 'Berkus award for prototype / technology, 0 to 500,000.'}, 'investment': {'type': 'number', 'description': 'Amount invested, currency units.'}, 'post_money': {'type': 'number', 'description': 'Post-money valuation, currency units.'}, 'sound_idea': {'type': 'number', 'default': 0.0, 'description': 'Berkus award for soundness of the idea, 0 to 500,000 (USD).'}, 'quality_team': {'type': 'number', 'default': 0.0, 'description': 'Berkus award for management team, 0 to 500,000.'}, 'risk_ratings': {'type': 'array', 'items': {'type': 'number'}, 'description': '12 risk factor ratings in [-2,2] (very low to very high); each unit shifts value ±250,000.'}, 'target_return': {'type': 'number', 'description': 'VC target return multiple (e.g. 10 for a 10x target).'}, 'base_valuation': {'type': 'number', 'description': 'Pre-adjustment baseline valuation, currency units.'}, 'terminal_value': {'type': 'number', 'description': 'Expected exit / terminal value, currency units.'}, 'product_rollout': {'type': 'number', 'default': 0.0, 'description': 'Berkus award for product rollout / sales, 0 to 500,000.'}, 'average_valuation': {'type': 'number', 'description': 'Average pre-revenue valuation for the sector, currency units.'}, 'projected_revenue': {'type': 'number', 'description': 'Projected revenue at exit, currency units.'}, 'strategic_relationships': {'type': 'number', 'default': 0.0, 'description': 'Berkus award for strategic relationships, 0 to 500,000.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_emerging
Emerging & Alternative Methods
Modern and alternative valuation: SAFE conversion (discount, cap, expected value), token valuation (equation of exchange, NVT), ESG adjustments (rate, premium, discount), Metcalfe network value, data-moat value, and remote-first premium/NPV. Method selects the model. Use for SAFEs, tokens, ESG, network effects, data moats, and remote-first adjustments; for classic pre-revenue methods use valuation_core. Parameters apply per method: safe_discount needs series_a_price + discount; safe_cap needs cap + series_a_price; safe_expected needs investment + cap + discount + series_a_valuation + series_a_price; token_value needs transaction_volume + price_per_tx + velocity + supply; metcalfe needs n; esg_* need base_valuation + a score; data_moat needs data_volume + data_uniqueness + monetization_rate + competitive_advantage_years. Routing: for classic pre-revenue methods (Scorecard, Berkus, Risk-Factor Summation, VC Method) use valuation_core; for options or scenario tables use valuation_advanced; for public-comparable multiples use valuation_comparables. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'k': {'type': 'integer', 'description': 'Number of events k for the Poisson probability P(X=k); integer ≥ 0.'}, 'n': {'type': 'number', 'description': 'Number of users or nodes in the network.'}, 'cap': {'type': 'number', 'description': 'SAFE valuation cap, currency units.'}, 'rate': {'type': 'number', 'description': 'Per-period discount rate as a decimal (0.10 = 10%).'}, 'method': {'enum': ['safe_discount', 'safe_cap', 'safe_expected', 'token_value', 'nvt_ratio', 'esg_rate', 'esg_premium', 'esg_discount', 'metcalfe', 'data_moat', 'remote_npv', 'remote_premium'], 'type': 'string', 'description': 'Formula to apply. Options: safe_discount = Price = Series A price × (1 - discount).; safe_cap = Price = cap / pre-money shares (cap-based).; safe_expected = Expected SAFE value across cap and discount outcomes.; token_value = Value = (volume × price) / (velocity × supply).; nvt_ratio = NVT = market cap / daily transaction volume.; esg_rate = r = base + ESG risk premium - ESG opportunity discount.; esg_premium = Valuation uplift = base × (1 + score × premium per point).; esg_discount = Valuation reduction = base × (1 - risk score × discount per point).; metcalfe = V = k · n².; data_moat = Discounted value of monetised proprietary data.; remote_npv = Perpetuity NPV = annual savings / discount rate.; remote_premium = Valuation premium from cost savings, talent access, and productivity.'}, 'supply': {'type': 'number', 'description': 'Circulating token supply.'}, 'discount': {'type': 'number', 'description': 'Conversion discount as a decimal (0.20 = 20% discount).'}, 'velocity': {'type': 'number', 'description': 'Token velocity (turnover of supply per period).'}, 'esg_score': {'type': 'number', 'description': 'ESG score in points (e.g. 0-100).'}, 'investment': {'type': 'number', 'description': 'Amount invested, currency units.'}, 'market_cap': {'type': 'number', 'description': 'Market capitalisation, currency units.'}, 'data_volume': {'type': 'number', 'description': 'Volume of proprietary data held.'}, 'price_per_tx': {'type': 'number', 'description': 'Protocol revenue per transaction, currency units.'}, 'discount_rate': {'type': 'number', 'description': 'Discount rate as a decimal (0.12 = 12%).'}, 'annual_savings': {'type': 'number', 'description': 'Annual cost savings, currency units.'}, 'base_valuation': {'type': 'number', 'description': 'Pre-adjustment baseline valuation, currency units.'}, 'esg_risk_score': {'type': 'number', 'description': 'ESG risk score in points (higher = riskier).'}, 'series_a_price': {'type': 'number', 'description': 'Price per share in the next priced (Series A) round.'}, 'data_uniqueness': {'type': 'number', 'description': 'Uniqueness / scarcity of the data in [0,1].'}, 'cost_savings_pct': {'type': 'number', 'default': 0.2, 'description': 'Cost savings as a fraction of baseline.'}, 'esg_risk_premium': {'type': 'number', 'default': 0.0, 'description': 'ESG risk premium added to the rate, as a decimal.'}, 'monetization_rate': {'type': 'number', 'description': 'Fraction of data value monetisable as a decimal.'}, 'premium_per_point': {'type': 'number', 'default': 0.02, 'description': 'Valuation premium per ESG point as a decimal.'}, 'productivity_gain': {'type': 'number', 'default': 0.05, 'description': 'Productivity gain as a decimal.'}, 'discount_per_point': {'type': 'number', 'default': 0.01, 'description': 'Valuation discount per ESG risk point as a decimal.'}, 'series_a_valuation': {'type': 'number', 'description': 'Series A post-money valuation, currency units.'}, 'transaction_volume': {'type': 'number', 'description': 'Total payment transaction volume, currency units.'}, 'talent_access_premium': {'type': 'number', 'default': 0.1, 'description': 'Talent-access premium as a decimal.'}, 'esg_opportunity_discount': {'type': 'number', 'default': 0.0, 'description': 'ESG opportunity discount subtracted from the rate.'}, 'competitive_advantage_years': {'type': 'number', 'description': 'Years the data moat is expected to last.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_fintech
Fintech Valuation
Value and size fintech business models: payment revenue, lending valuation, payment-processor DCF, and neobank customer-based valuation. Method selects the model. Use for payments, lending, and neobanks; for SaaS-style unit economics use valuation_saas. Parameters apply per method: payment_revenue needs transaction_volume + take_rate; lending needs loan_book + roe + pe_multiple; payment_processor adds growth_rate + discount_rate + terminal_multiple; neobank needs customers + arpu + gross_margin + churn_rate + pe_multiple. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'roe': {'type': 'number', 'description': 'Return on equity as a decimal (0.20 = 20%).'}, 'arpu': {'type': 'number', 'description': 'Average revenue per user per month, currency units.'}, 'years': {'type': 'integer', 'default': 5, 'description': 'Forecast horizon in years; integer ≥ 1.'}, 'method': {'enum': ['payment_revenue', 'lending', 'payment_processor', 'neobank'], 'type': 'string', 'description': 'Formula to apply. Options: payment_revenue = Revenue = volume × take rate.; lending = V = loan book × ROE × P/E - NPL reserves.; payment_processor = DCF of payment revenue with a terminal multiple.; neobank = Customer LTV × P/E applied to the customer base.'}, 'customers': {'type': 'integer', 'description': 'Number of customers.'}, 'loan_book': {'type': 'number', 'description': 'Outstanding loan book / principal, currency units.'}, 'take_rate': {'type': 'number', 'description': 'Take rate as a decimal (0.15 = 15% of GMV).'}, 'churn_rate': {'type': 'number', 'description': 'Periodic churn rate as a decimal (0.02 = 2% per month).'}, 'growth_rate': {'type': 'number', 'description': 'Revenue growth rate as a decimal (0.40 = 40%).'}, 'pe_multiple': {'type': 'number', 'description': 'Price/earnings multiple applied to earnings.'}, 'gross_margin': {'type': 'number', 'description': 'Gross margin as a decimal (0.80 = 80%).'}, 'npl_reserves': {'type': 'number', 'default': 0.0, 'description': 'Non-performing loan reserves deducted, currency units.'}, 'discount_rate': {'type': 'number', 'description': 'Discount rate as a decimal (0.12 = 12%).'}, 'terminal_multiple': {'type': 'number', 'description': 'Terminal value multiple applied at the horizon.'}, 'transaction_volume': {'type': 'number', 'description': 'Total payment transaction volume, currency units.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_hardware
Hardware & Unit Economics
Hardware and deep-tech valuation: TRL-risk-adjusted valuation, gross margin, and break-even volume. Method selects the metric. Use for hardware and deep tech with technology-readiness risk; for drug pipelines use valuation_biotech. Parameters apply per method: trl needs market_size + market_share + margin + multiple + trl_discount; gross_margin needs asp + variable_cost; break_even_volume needs fixed_costs + asp + variable_cost. Not for drug pipelines — for those use valuation_biotech. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'asp': {'type': 'number', 'description': 'Average selling price per unit, currency units.'}, 'margin': {'type': 'number', 'description': 'Profit margin as a decimal.'}, 'method': {'enum': ['trl', 'gross_margin', 'break_even_volume'], 'type': 'string', 'description': 'Formula to apply. Options: trl = V = market × share × margin × multiple × (1 - TRL discount).; gross_margin = GM = (ASP - COGS) / ASP.; break_even_volume = Units = fixed costs / (ASP - variable cost).'}, 'multiple': {'type': 'number', 'description': 'Exit or market multiple applied to the metric.'}, 'fixed_costs': {'type': 'number', 'description': 'Fixed costs for the period, currency units.'}, 'market_size': {'type': 'number', 'description': 'Total addressable market, currency units.'}, 'market_share': {'type': 'number', 'description': 'Target market share as a decimal in [0,1].'}, 'trl_discount': {'type': 'number', 'description': 'TRL risk discount as a decimal (applied as 1 - discount).'}, 'variable_cost': {'type': 'number', 'description': 'Variable cost per unit, currency units.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_international
International Valuation
Cross-border adjustments: purchasing-power parity, country risk premium, and international CAPM. Method selects the adjustment. Use for cross-border cash flows and country risk; pair with valuation_capm and valuation_time_value. Parameters apply per method: ppp needs spot_rate + inflation_foreign + inflation_domestic; country_risk_premium needs sovereign_yield + us_treasury_yield; intl_capm needs risk_free_rate + beta + mrp + crp. Not for the domestic cost of equity — for that use valuation_capm. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'crp': {'type': 'number', 'description': 'Country risk premium as a decimal.'}, 'mrp': {'type': 'number', 'description': 'Market risk premium as a decimal.'}, 'beta': {'type': 'number', 'description': 'Systematic risk beta (market = 1.0).'}, 'method': {'enum': ['ppp', 'country_risk_premium', 'intl_capm'], 'type': 'string', 'description': 'Formula to apply. Options: ppp = Eₜ = E₀·(1+π_foreign)/(1+π_domestic).; country_risk_premium = CRP = sovereign yield - US Treasury yield.; intl_capm = r = Rf + β·MRP + CRP.'}, 'spot_rate': {'type': 'number', 'description': 'Spot FX rate (domestic per foreign), e.g. 7.2 CNY/USD.'}, 'risk_free_rate': {'type': 'number', 'description': 'Risk-free rate as a decimal (e.g. 0.04 for 4%).'}, 'sovereign_yield': {'type': 'number', 'description': 'Foreign sovereign bond yield as a decimal.'}, 'inflation_foreign': {'type': 'number', 'description': 'Foreign inflation rate as a decimal.'}, 'us_treasury_yield': {'type': 'number', 'description': 'US Treasury yield as a decimal.'}, 'inflation_domestic': {'type': 'number', 'description': 'Domestic inflation rate as a decimal.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_marketplace
Marketplace Metrics
Marketplace health and valuation: take rate, GMV revenue-multiple valuation, buyer retention, and network density. Method selects the metric. Use for two-sided transaction marketplaces; for subscription software use valuation_saas. Parameters apply per method: take_rate needs revenue + gmv; gmv_multiple needs gmv + multiple; buyer_retention needs buyers_period_1 + buyers_repeat; network_density needs active_buyers + active_sellers + total_users. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'gmv': {'type': 'number', 'description': 'Gross merchandise value (total transaction volume), currency units.'}, 'method': {'enum': ['take_rate', 'gmv_multiple', 'buyer_retention', 'network_density'], 'type': 'string', 'description': 'Formula to apply. Options: take_rate = Take rate = revenue / GMV.; gmv_multiple = Valuation = GMV × multiple.; buyer_retention = Retention = repeat buyers / base-period buyers.; network_density = Density = active buyers × active sellers / total users.'}, 'revenue': {'type': 'number', 'description': 'Revenue for the period, currency units.'}, 'multiple': {'type': 'number', 'description': 'Exit or market multiple applied to the metric.'}, 'total_users': {'type': 'integer', 'description': 'Total users (buyers + sellers) in the period.'}, 'active_buyers': {'type': 'integer', 'description': 'Active buyers in the period.'}, 'buyers_repeat': {'type': 'integer', 'description': 'Distinct buyers from the base period who purchased again.'}, 'active_sellers': {'type': 'integer', 'description': 'Active sellers in the period.'}, 'buyers_period_1': {'type': 'integer', 'description': 'Distinct buyers in the base period.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_probability
Probability & Expected Value
Compute expected value and probability-weighted outcomes for startup scenarios: discrete E[X], joint probability of sequential events, probability-weighted value, VC portfolio expected return, Poisson event probability, and continuous E[X] over a range. Method selects the formula. Use for probability-weighted central estimates; for named bull/base/bear tables or option pricing use valuation_advanced, and to discount cash flows use valuation_time_value. Parameters apply per method: expected_value_discrete and probability_weighted need outcomes + probabilities; portfolio_return needs weights + returns; poisson needs mean_events + k; expected_value_continuous needs lower + upper. outcomes and probabilities must be equal length, and the probabilities should sum to 1. Routing: use valuation_advanced method 'scenario_analysis' for named bull/base/bear scenario tables, and its black_scholes/binomial methods for option pricing; use this tool for arbitrary outcome lists and probability-weighted central estimates. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'k': {'type': 'integer', 'description': 'Number of events k for the Poisson probability P(X=k); integer ≥ 0.'}, 'lower': {'type': 'number', 'description': 'Lower integration bound (standard-normal domain, e.g. -1.0).'}, 'upper': {'type': 'number', 'description': 'Upper integration bound (standard-normal domain, e.g. 1.0).'}, 'method': {'enum': ['expected_value_discrete', 'joint_probability', 'probability_weighted', 'portfolio_return', 'poisson', 'expected_value_continuous'], 'type': 'string', 'description': 'Formula to apply. Options: expected_value_discrete = E[X] = Σ xᵢ·P(X=xᵢ) over a discrete outcome list.; joint_probability = P(total) = Π pᵢ for independent sequential events.; probability_weighted = E[V] = Σ pᵢ·Vᵢ.; portfolio_return = E[R] = Σ wᵢ·Rᵢ across a VC portfolio.; poisson = P(X=k) = e^-λ λ^k / k! for rare events.; expected_value_continuous = E[X] = ∫ x·f(x) dx over [lower, upper] on the standard normal.'}, 'returns': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Return of each asset or scenario as a decimal (0.20 = 20%), aligned with weights.'}, 'weights': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Portfolio or factor weights, each in [0,1] and summing to 1 (same order as the paired value list).'}, 'outcomes': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Possible outcome values x_i, in any currency unit (must match probabilities in length/order).'}, 'mean_events': {'type': 'number', 'description': 'Poisson mean λ = expected number of events in the interval.'}, 'probabilities': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Probability of each outcome or stage, each in [0,1]; the list must sum to 1 where it is exhaustive.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_saas
SaaS Metrics & Valuation
SaaS unit economics and valuation: LTV, CAC, MRR, ARR, net revenue retention, magic number, Rule of 40, CAC payback, and ARR revenue-multiple valuation. Method selects the metric. Use for subscription software; for marketplace GMV metrics use valuation_marketplace and for payments/lending use valuation_fintech. Parameters apply per method: ltv needs arpu + gross_margin + churn_rate; cac needs sales_marketing_expense + new_customers; arr needs subscription_values; nrr needs starting_revenue + ending_revenue; revenue_multiple needs arr + revenue_multiple. Not for company-level pre-revenue value — for that use valuation_core. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'arr': {'type': 'number', 'description': 'Annual recurring revenue, currency units.'}, 'cac': {'type': 'number', 'description': 'Customer acquisition cost per customer, currency units.'}, 'arpu': {'type': 'number', 'description': 'Average revenue per user per month, currency units.'}, 'method': {'enum': ['ltv', 'cac', 'mrr', 'arr', 'nrr', 'magic_number', 'rule_of_40', 'cac_payback', 'revenue_multiple'], 'type': 'string', 'description': 'Formula to apply. Options: ltv = LTV = ARPU × gross margin / churn.; cac = CAC = S&M expense / new customers.; mrr = MRR = ARR / 12 (reverse of ARR).; arr = ARR = Σ monthly subscriptions × 12.; nrr = NRR = (start + expansion) / start, net of churn.; magic_number = Magic Number = net new ARR / prior-quarter S&M.; rule_of_40 = Score = growth rate + profit margin.; cac_payback = Months to recover CAC from gross profit.; revenue_multiple = Valuation = ARR × multiple.'}, 'arr_value': {'type': 'number', 'description': 'Annual recurring revenue, currency units.'}, 'churn_rate': {'type': 'number', 'description': 'Periodic churn rate as a decimal (0.02 = 2% per month).'}, 'growth_rate': {'type': 'number', 'description': 'Revenue growth rate as a decimal (0.40 = 40%).'}, 'net_new_arr': {'type': 'number', 'description': 'Net new ARR added in the period, currency units.'}, 'gross_margin': {'type': 'number', 'description': 'Gross margin as a decimal (0.80 = 80%).'}, 'new_customers': {'type': 'integer', 'description': 'Number of customers acquired in the period.'}, 'profit_margin': {'type': 'number', 'description': 'Profit margin as a decimal (0.15 = 15%).'}, 'ending_revenue': {'type': 'number', 'description': 'Revenue from the same cohort at period end, currency units.'}, 'mrr_per_customer': {'type': 'number', 'description': 'Monthly recurring revenue per customer, currency units.'}, 'revenue_multiple': {'type': 'number', 'description': 'SaaS revenue multiple (e.g. 8 for 8x ARR).'}, 'sm_expense_prior': {'type': 'number', 'description': 'Sales & marketing expense in the prior period, currency units.'}, 'starting_revenue': {'type': 'number', 'description': 'Revenue from the cohort at period start, currency units.'}, 'expansion_revenue': {'type': 'number', 'default': 0.0, 'description': 'Expansion revenue from the cohort in the period.'}, 'subscription_values': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Monthly subscription revenue per customer (summed x12 for ARR).'}, 'sales_marketing_expense': {'type': 'number', 'description': 'Sales & marketing spend for the period, currency units.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_stakeholder
Stakeholder & Equity Allocation
Allocate value across stakeholders and equity classes: single-round dilution, OPM common stock, PWERM, liquidation value, M&A synergy, employee-option values, vesting adjustment, cash-vs-equity break-even, and asset-based loan capacity. Method selects the model. Use only after the company-level value is known (from valuation_core, valuation_saas, or valuation_comparables) to split that value across the cap table; for the company value itself do not use this tool. Parameters apply per method: dilution needs ownership_before + investment + post_money; opm needs enterprise_value + liquidation_pref + time_to_exit + volatility; pwerm and employee_option need scenarios; liquidation needs assets + recovery_rates; risk_adjusted_synergy needs revenue_synergies + cost_synergies; vesting_adjusted needs total_value + vested_fraction; max_asset_loan takes collateral values. Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'cash': {'type': 'number', 'default': 0.0, 'description': 'Cash and equivalents, currency units.'}, 'years': {'type': 'integer', 'default': 5, 'description': 'Forecast horizon in years; integer ≥ 1.'}, 'assets': {'type': 'object', 'description': 'Map of asset name to book value, e.g. {"cash": 500000}.'}, 'method': {'enum': ['dilution', 'opm', 'pwerm', 'liquidation', 'risk_adjusted_synergy', 'intrinsic_option', 'employee_option', 'vesting_adjusted', 'cash_equity_breakeven', 'max_asset_loan'], 'type': 'string', 'description': 'Formula to apply. Options: dilution = Ownership = before × (1 - investment / post-money).; opm = Option-pricing allocation of equity value to common shares.; pwerm = Probability-weighted expected return method across exit scenarios.; liquidation = V = Σ(asset × recovery rate).; risk_adjusted_synergy = Probability-weighted, discounted M&A revenue + cost synergies.; intrinsic_option = Intrinsic value = max(0, FMV - strike) × shares.; employee_option = Probability-weighted employee option value across scenarios.; vesting_adjusted = Option value adjusted for vesting schedule and retention probability.; cash_equity_breakeven = Break-even comparing salary reduction against discounted equity.; max_asset_loan = Borrowing capacity from asset collateral values.'}, 'shares': {'type': 'integer', 'description': 'Number of option shares.'}, 'tax_rate': {'type': 'number', 'default': 0.3, 'description': 'Effective tax rate as a decimal in [0,1].'}, 'equipment': {'type': 'number', 'default': 0.0, 'description': 'Equipment, currency units.'}, 'inventory': {'type': 'number', 'default': 0.0, 'description': 'Inventory, currency units.'}, 'prob_cost': {'type': 'number', 'default': 0.8, 'description': 'Probability of realising cost synergies, 0-1.'}, 'scenarios': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Scenario objects: {name: str, probability: 0-1, value: currency}; probabilities should sum to 1.'}, 'investment': {'type': 'number', 'description': 'Amount invested, currency units.'}, 'post_money': {'type': 'number', 'description': 'Post-money valuation, currency units.'}, 'volatility': {'type': 'number', 'description': 'Annualised volatility σ as a decimal (0.80 = 80%).'}, 'real_estate': {'type': 'number', 'default': 0.0, 'description': 'Real estate, currency units.'}, 'total_value': {'type': 'number', 'description': 'Total grant value, currency units.'}, 'equity_value': {'type': 'number', 'description': 'Value of equity offered, currency units.'}, 'prob_revenue': {'type': 'number', 'default': 0.4, 'description': 'Probability of realising revenue synergies, 0-1.'}, 'strike_price': {'type': 'number', 'description': 'Option strike price, currency units.'}, 'time_to_exit': {'type': 'number', 'description': 'Expected time to exit / liquidity in years.'}, 'discount_rate': {'type': 'number', 'description': 'Discount rate as a decimal (0.12 = 12%).'}, 'cost_synergies': {'type': 'number', 'description': 'Cost synergy value, currency units.'}, 'recovery_rates': {'type': 'object', 'description': 'Map of asset name to recovery rate in [0,1], matching assets.'}, 'retention_prob': {'type': 'number', 'default': 0.8, 'description': 'Probability the holder stays, 0-1.'}, 'vested_fraction': {'type': 'number', 'description': 'Fraction vested in [0,1].'}, 'years_remaining': {'type': 'integer', 'default': 3, 'description': 'Years of vesting remaining.'}, 'annual_vest_rate': {'type': 'number', 'default': 0.25, 'description': 'Annual vesting rate as a decimal.'}, 'enterprise_value': {'type': 'number', 'description': 'Enterprise value (market cap + net debt), currency units.'}, 'liquidation_pref': {'type': 'number', 'description': 'Liquidation preference amount, currency units.'}, 'ownership_before': {'type': 'number', 'description': 'Founder ownership before the round as a decimal (0.60 = 60%).'}, 'salary_reduction': {'type': 'number', 'description': 'Annual salary foregone for equity, currency units.'}, 'fair_market_value': {'type': 'number', 'description': 'Current fair market value per share, currency units.'}, 'revenue_synergies': {'type': 'number', 'description': 'Revenue synergy value, currency units.'}, 'accounts_receivable': {'type': 'number', 'default': 0.0, 'description': 'Accounts receivable, currency units.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
valuation_time_value
Time Value of Money
Discount, compound, and forecast value over time: single future value PV, net present value of a cash-flow stream, annuity present value, discounted cash flow with a Gordon terminal value, constant-rate compound growth of revenue or cash flow, and the implied compound annual growth rate (CAGR). Method selects the formula. Use to convert future cash to today's value, to value a full forecast with a terminal value (dcf), to project a revenue or cash-flow series forward, or to derive the growth rate implied by two values; get the discount rate from valuation_capm or valuation_international. Parameters apply per method: present_value needs future_value + rate + periods; npv needs cash_flows + rate; annuity needs payment + rate + periods; dcf needs cash_flows + rate (optional: terminal_growth); compound_growth needs starting_value + growth_rate + periods; cagr needs starting_value + ending_value + periods. growth_rate must be greater than -1, cagr requires starting_value > 0 and periods > 0, and dcf requires rate greater than terminal_growth. Not for option values (use valuation_advanced) or for expected values over outcomes (use valuation_probability). Only method is required; all other parameters are method-dependent, so supply those the selected method names and omit the rest (defaults apply where defined). Rate and decimal inputs are fractions (0.10 = 10%); probability and weight lists are in [0,1] and sum to 1. Returns value, method, inputs, assumptions, chapter, formula_number and calculation steps; pure arithmetic — no I/O and no external calls — rounded to 2 decimals, with no auth or rate limits. An unknown method, or a missing method-required parameter, returns an error instead of a value.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['method'], 'properties': {'rate': {'type': 'number', 'description': 'Per-period discount rate as a decimal (0.10 = 10%).'}, 'method': {'enum': ['present_value', 'npv', 'annuity', 'compound_growth', 'cagr', 'dcf'], 'type': 'string', 'description': 'Formula to apply. Options: present_value = PV = C / (1+r)^t.; npv = NPV = Σ Cₜ / (1+r)^t.; annuity = PV = P·[1-(1+r)^-n]/r.; compound_growth = V_n = V_0 (1+g)^n.; cagr = CAGR = (V_n / V_0)^(1/n) - 1.; dcf = DCF = Σ Cₜ/(1+r)^t + [C_n(1+g)/(r−g)]/(1+r)^n.'}, 'payment': {'type': 'number', 'description': 'Recurring payment per period, in currency units.'}, 'periods': {'type': 'number', 'description': 'Number of compounding periods, must be ≥ 1 (may be fractional).'}, 'cash_flows': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Cash flows by period, first element at t=1; negatives allowed for outflows.'}, 'growth_rate': {'type': 'number', 'description': 'Revenue growth rate as a decimal (0.40 = 40%).'}, 'ending_value': {'type': 'number', 'description': 'Value at t=n to compare against the starting value, in currency units.'}, 'future_value': {'type': 'number', 'description': 'Future cash amount to discount, in currency units.'}, 'starting_value': {'type': 'number', 'description': 'Value at t=0 (revenue or cash flow) to grow forward, in currency units.'}, 'terminal_growth': {'type': 'number', 'default': 0.0, 'description': 'Perpetual growth rate g applied after the forecast window, as a decimal.'}}}
Schéma de sortie
{'type': 'object', 'required': ['value'], 'properties': {'error': {'type': 'string', 'description': 'Error message when the call fails.'}, 'steps': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Intermediate steps for traceability.'}, 'value': {'type': 'number', 'description': 'Computed valuation or metric.'}, 'inputs': {'type': 'object', 'description': 'Echo of the normalised inputs used.'}, 'method': {'type': 'string', 'description': 'Formula / method name that produced the result.'}, 'chapter': {'type': 'string', 'description': 'Source textbook chapter.'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Modelling assumptions applied.'}, 'formula_number': {'type': 'string', 'description': "Source textbook formula number (e.g. '3.1')."}}}
Ajouté
valuation_emerging
2 October 2026 02:40
Ajouté
valuation_stakeholder
2 October 2026 02:40
Ajouté
valuation_international
2 October 2026 02:40
Ajouté
valuation_hardware
2 October 2026 02:40
Ajouté
valuation_biotech
2 October 2026 02:40
Ajouté
valuation_fintech
2 October 2026 02:40
Ajouté
valuation_marketplace
2 October 2026 02:40
Ajouté
valuation_saas
2 October 2026 02:40
Ajouté
valuation_comparables
2 October 2026 02:40
Ajouté
valuation_advanced
2 October 2026 02:40
Ajouté
valuation_core
2 October 2026 02:40
Ajouté
valuation_capm
2 October 2026 02:40
Ajouté
valuation_time_value
2 October 2026 02:40
Ajouté
valuation_probability
2 October 2026 02:40