Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,533Letters: 13Defects: 1,322counted just now
teppi

Server definition

Hash
sha256:89f733abdf815030c2f0e8597e6ba99937e4aba02bcc974358b781f917652f00
What it is
What a remote MCP server returned when asked what it offers: 14 tools

The blob, as servednamed by its sha256

{ "instructions": "Startup valuation calculators: 14 tools covering probability, time value, CAPM, core pre-revenue methods, options, comparables, SaaS, marketplaces, fintech, biotech, hardware, international, stakeholder equity, and emerging methods. Select a formula with the `method` argument. Read the resource startup-valuation://methods for every method's required parameters, or use a prompt (value_pre_revenue_startup, value_saas_startup, model_funding_round) for a guided multi-method workflow.", "tools": [ { "description": "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.", "inputSchema": { "properties": { "method": { "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.", "enum": [ "black_scholes", "binomial", "scenario_analysis" ], "type": "string" }, "risk_free_rate": { "description": "Risk-free rate as a decimal (e.g. 0.04 for 4%).", "type": "number" }, "scenarios": { "description": "Scenario objects: {name: str, probability: 0-1, value: currency}; probabilities should sum to 1.", "items": { "type": "object" }, "type": "array" }, "steps": { "default": 50, "description": "Binomial tree time steps (integer ≥ 1; higher = more accurate).", "type": "integer" }, "strike": { "description": "Strike / exercise price K, currency units.", "type": "number" }, "time_to_maturity": { "description": "Time to expiry in years T, must be ≥ 0.", "type": "number" }, "underlying": { "description": "Underlying asset value S, currency units.", "type": "number" }, "volatility": { "description": "Annualised volatility σ as a decimal (0.80 = 80%).", "type": "number" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_advanced", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "compliance": { "default": 1, "description": "Compliance / adherence rate as a decimal.", "type": "number" }, "discount_rate": { "description": "Discount rate as a decimal (0.12 = 12%).", "type": "number" }, "drugs": { "description": "Pipeline drugs: {name, peak_sales, probability, years_to_market, multiple(optional)}.", "items": { "type": "object" }, "type": "array" }, "method": { "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.", "enum": [ "peak_sales", "decision_tree", "pipeline" ], "type": "string" }, "patient_population": { "description": "Target patient population treated per year.", "type": "number" }, "penetration": { "description": "Market penetration as a decimal (0.10 = 10%).", "type": "number" }, "price": { "description": "Price per unit / treatment, currency units.", "type": "number" }, "probabilities": { "description": "Probability of each outcome or stage, each in [0,1]; the list must sum to 1 where it is exhaustive.", "items": { "type": "number" }, "type": "array" }, "terminal_value": { "description": "Expected exit / terminal value, currency units.", "type": "number" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_biotech", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "beta": { "description": "Systematic risk beta (market = 1.0).", "type": "number" }, "betas": { "description": "Asset betas aligned with weights; typically 0.5–3.0 (market = 1.0).", "items": { "type": "number" }, "type": "array" }, "cost_of_debt": { "description": "Pre-tax cost of debt Rd as a decimal.", "type": "number" }, "cost_of_equity": { "description": "After-tax cost of equity Re as a decimal.", "type": "number" }, "debt_value": { "description": "Market value of debt, in currency units.", "type": "number" }, "equity_value": { "description": "Value of equity offered, currency units.", "type": "number" }, "liquidity_premium": { "default": 0, "description": "Illiquidity premium as a decimal.", "type": "number" }, "market_return": { "description": "Expected market return as a decimal (e.g. 0.10 for 10%).", "type": "number" }, "market_risk_premium": { "description": "Market risk premium as a decimal (e.g. 0.06).", "type": "number" }, "method": { "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).", "enum": [ "capm", "startup_capm", "portfolio_beta", "wacc" ], "type": "string" }, "risk_free_rate": { "description": "Risk-free rate as a decimal (e.g. 0.04 for 4%).", "type": "number" }, "size_premium": { "default": 0, "description": "Small-cap / size premium as a decimal.", "type": "number" }, "tax_rate": { "default": 0.3, "description": "Effective tax rate as a decimal in [0,1].", "type": "number" }, "weights": { "description": "Portfolio or factor weights, each in [0,1] and summing to 1 (same order as the paired value list).", "items": { "type": "number" }, "type": "array" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_capm", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "ebitda": { "description": "EBITDA, currency units.", "type": "number" }, "enterprise_value": { "description": "Enterprise value (market cap + net debt), currency units.", "type": "number" }, "geography": { "default": 0, "description": "Geography indicator.", "type": "number" }, "geography_coefficient": { "default": 0, "description": "Regression slope on geography.", "type": "number" }, "growth_coefficient": { "description": "Regression slope on growth (multiple points per unit growth).", "type": "number" }, "growth_rate": { "description": "Revenue growth rate as a decimal (0.40 = 40%).", "type": "number" }, "intercept": { "description": "Regression intercept β0 (base multiple).", "type": "number" }, "market_cap": { "description": "Market capitalisation, currency units.", "type": "number" }, "market_maturity": { "default": 0, "description": "Market maturity indicator.", "type": "number" }, "maturity_coefficient": { "default": 0, "description": "Regression slope on market maturity.", "type": "number" }, "method": { "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.", "enum": [ "pe_ratio", "ps_ratio", "ev_ebitda", "ev_revenue", "regression_multiple" ], "type": "string" }, "net_income": { "description": "Net income (earnings), currency units.", "type": "number" }, "revenue": { "description": "Revenue for the period, currency units.", "type": "number" }, "stage": { "default": 0, "description": "Company stage indicator.", "type": "number" }, "stage_coefficient": { "default": 0, "description": "Regression slope on stage.", "type": "number" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_comparables", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "average_valuation": { "description": "Average pre-revenue valuation for the sector, currency units.", "type": "number" }, "base_valuation": { "description": "Pre-adjustment baseline valuation, currency units.", "type": "number" }, "investment": { "description": "Amount invested, currency units.", "type": "number" }, "method": { "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.", "enum": [ "scorecard", "berkus", "risk_factor", "vc_post_money", "vc_pre_money", "terminal_value", "triangulated" ], "type": "string" }, "multiple": { "description": "Exit or market multiple applied to the metric.", "type": "number" }, "post_money": { "description": "Post-money valuation, currency units.", "type": "number" }, "product_rollout": { "default": 0, "description": "Berkus award for product rollout / sales, 0 to 500,000.", "type": "number" }, "projected_revenue": { "description": "Projected revenue at exit, currency units.", "type": "number" }, "prototype": { "default": 0, "description": "Berkus award for prototype / technology, 0 to 500,000.", "type": "number" }, "quality_team": { "default": 0, "description": "Berkus award for management team, 0 to 500,000.", "type": "number" }, "risk_ratings": { "description": "12 risk factor ratings in [-2,2] (very low to very high); each unit shifts value ±250,000.", "items": { "type": "number" }, "type": "array" }, "scores": { "description": "Factor multipliers aligned with weights (1.0 = average, >1 above average).", "items": { "type": "number" }, "type": "array" }, "sound_idea": { "default": 0, "description": "Berkus award for soundness of the idea, 0 to 500,000 (USD).", "type": "number" }, "strategic_relationships": { "default": 0, "description": "Berkus award for strategic relationships, 0 to 500,000.", "type": "number" }, "target_return": { "description": "VC target return multiple (e.g. 10 for a 10x target).", "type": "number" }, "terminal_value": { "description": "Expected exit / terminal value, currency units.", "type": "number" }, "weights": { "description": "Portfolio or factor weights, each in [0,1] and summing to 1 (same order as the paired value list).", "items": { "type": "number" }, "type": "array" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_core", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "annual_savings": { "description": "Annual cost savings, currency units.", "type": "number" }, "base_valuation": { "description": "Pre-adjustment baseline valuation, currency units.", "type": "number" }, "cap": { "description": "SAFE valuation cap, currency units.", "type": "number" }, "competitive_advantage_years": { "description": "Years the data moat is expected to last.", "type": "number" }, "cost_savings_pct": { "default": 0.2, "description": "Cost savings as a fraction of baseline.", "type": "number" }, "data_uniqueness": { "description": "Uniqueness / scarcity of the data in [0,1].", "type": "number" }, "data_volume": { "description": "Volume of proprietary data held.", "type": "number" }, "discount": { "description": "Conversion discount as a decimal (0.20 = 20% discount).", "type": "number" }, "discount_per_point": { "default": 0.01, "description": "Valuation discount per ESG risk point as a decimal.", "type": "number" }, "discount_rate": { "description": "Discount rate as a decimal (0.12 = 12%).", "type": "number" }, "esg_opportunity_discount": { "default": 0, "description": "ESG opportunity discount subtracted from the rate.", "type": "number" }, "esg_risk_premium": { "default": 0, "description": "ESG risk premium added to the rate, as a decimal.", "type": "number" }, "esg_risk_score": { "description": "ESG risk score in points (higher = riskier).", "type": "number" }, "esg_score": { "description": "ESG score in points (e.g. 0-100).", "type": "number" }, "investment": { "description": "Amount invested, currency units.", "type": "number" }, "k": { "description": "Number of events k for the Poisson probability P(X=k); integer ≥ 0.", "type": "integer" }, "market_cap": { "description": "Market capitalisation, currency units.", "type": "number" }, "method": { "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.", "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" }, "monetization_rate": { "description": "Fraction of data value monetisable as a decimal.", "type": "number" }, "n": { "description": "Number of users or nodes in the network.", "type": "number" }, "premium_per_point": { "default": 0.02, "description": "Valuation premium per ESG point as a decimal.", "type": "number" }, "price_per_tx": { "description": "Protocol revenue per transaction, currency units.", "type": "number" }, "productivity_gain": { "default": 0.05, "description": "Productivity gain as a decimal.", "type": "number" }, "rate": { "description": "Per-period discount rate as a decimal (0.10 = 10%).", "type": "number" }, "series_a_price": { "description": "Price per share in the next priced (Series A) round.", "type": "number" }, "series_a_valuation": { "description": "Series A post-money valuation, currency units.", "type": "number" }, "supply": { "description": "Circulating token supply.", "type": "number" }, "talent_access_premium": { "default": 0.1, "description": "Talent-access premium as a decimal.", "type": "number" }, "transaction_volume": { "description": "Total payment transaction volume, currency units.", "type": "number" }, "velocity": { "description": "Token velocity (turnover of supply per period).", "type": "number" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_emerging", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "arpu": { "description": "Average revenue per user per month, currency units.", "type": "number" }, "churn_rate": { "description": "Periodic churn rate as a decimal (0.02 = 2% per month).", "type": "number" }, "customers": { "description": "Number of customers.", "type": "integer" }, "discount_rate": { "description": "Discount rate as a decimal (0.12 = 12%).", "type": "number" }, "gross_margin": { "description": "Gross margin as a decimal (0.80 = 80%).", "type": "number" }, "growth_rate": { "description": "Revenue growth rate as a decimal (0.40 = 40%).", "type": "number" }, "loan_book": { "description": "Outstanding loan book / principal, currency units.", "type": "number" }, "method": { "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.", "enum": [ "payment_revenue", "lending", "payment_processor", "neobank" ], "type": "string" }, "npl_reserves": { "default": 0, "description": "Non-performing loan reserves deducted, currency units.", "type": "number" }, "pe_multiple": { "description": "Price/earnings multiple applied to earnings.", "type": "number" }, "roe": { "description": "Return on equity as a decimal (0.20 = 20%).", "type": "number" }, "take_rate": { "description": "Take rate as a decimal (0.15 = 15% of GMV).", "type": "number" }, "terminal_multiple": { "description": "Terminal value multiple applied at the horizon.", "type": "number" }, "transaction_volume": { "description": "Total payment transaction volume, currency units.", "type": "number" }, "years": { "default": 5, "description": "Forecast horizon in years; integer ≥ 1.", "type": "integer" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_fintech", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "asp": { "description": "Average selling price per unit, currency units.", "type": "number" }, "fixed_costs": { "description": "Fixed costs for the period, currency units.", "type": "number" }, "margin": { "description": "Profit margin as a decimal.", "type": "number" }, "market_share": { "description": "Target market share as a decimal in [0,1].", "type": "number" }, "market_size": { "description": "Total addressable market, currency units.", "type": "number" }, "method": { "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).", "enum": [ "trl", "gross_margin", "break_even_volume" ], "type": "string" }, "multiple": { "description": "Exit or market multiple applied to the metric.", "type": "number" }, "trl_discount": { "description": "TRL risk discount as a decimal (applied as 1 - discount).", "type": "number" }, "variable_cost": { "description": "Variable cost per unit, currency units.", "type": "number" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_hardware", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "beta": { "description": "Systematic risk beta (market = 1.0).", "type": "number" }, "crp": { "description": "Country risk premium as a decimal.", "type": "number" }, "inflation_domestic": { "description": "Domestic inflation rate as a decimal.", "type": "number" }, "inflation_foreign": { "description": "Foreign inflation rate as a decimal.", "type": "number" }, "method": { "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.", "enum": [ "ppp", "country_risk_premium", "intl_capm" ], "type": "string" }, "mrp": { "description": "Market risk premium as a decimal.", "type": "number" }, "risk_free_rate": { "description": "Risk-free rate as a decimal (e.g. 0.04 for 4%).", "type": "number" }, "sovereign_yield": { "description": "Foreign sovereign bond yield as a decimal.", "type": "number" }, "spot_rate": { "description": "Spot FX rate (domestic per foreign), e.g. 7.2 CNY/USD.", "type": "number" }, "us_treasury_yield": { "description": "US Treasury yield as a decimal.", "type": "number" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_international", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "active_buyers": { "description": "Active buyers in the period.", "type": "integer" }, "active_sellers": { "description": "Active sellers in the period.", "type": "integer" }, "buyers_period_1": { "description": "Distinct buyers in the base period.", "type": "integer" }, "buyers_repeat": { "description": "Distinct buyers from the base period who purchased again.", "type": "integer" }, "gmv": { "description": "Gross merchandise value (total transaction volume), currency units.", "type": "number" }, "method": { "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.", "enum": [ "take_rate", "gmv_multiple", "buyer_retention", "network_density" ], "type": "string" }, "multiple": { "description": "Exit or market multiple applied to the metric.", "type": "number" }, "revenue": { "description": "Revenue for the period, currency units.", "type": "number" }, "total_users": { "description": "Total users (buyers + sellers) in the period.", "type": "integer" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_marketplace", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "k": { "description": "Number of events k for the Poisson probability P(X=k); integer ≥ 0.", "type": "integer" }, "lower": { "description": "Lower integration bound (standard-normal domain, e.g. -1.0).", "type": "number" }, "mean_events": { "description": "Poisson mean λ = expected number of events in the interval.", "type": "number" }, "method": { "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.", "enum": [ "expected_value_discrete", "joint_probability", "probability_weighted", "portfolio_return", "poisson", "expected_value_continuous" ], "type": "string" }, "outcomes": { "description": "Possible outcome values x_i, in any currency unit (must match probabilities in length/order).", "items": { "type": "number" }, "type": "array" }, "probabilities": { "description": "Probability of each outcome or stage, each in [0,1]; the list must sum to 1 where it is exhaustive.", "items": { "type": "number" }, "type": "array" }, "returns": { "description": "Return of each asset or scenario as a decimal (0.20 = 20%), aligned with weights.", "items": { "type": "number" }, "type": "array" }, "upper": { "description": "Upper integration bound (standard-normal domain, e.g. 1.0).", "type": "number" }, "weights": { "description": "Portfolio or factor weights, each in [0,1] and summing to 1 (same order as the paired value list).", "items": { "type": "number" }, "type": "array" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_probability", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "arpu": { "description": "Average revenue per user per month, currency units.", "type": "number" }, "arr": { "description": "Annual recurring revenue, currency units.", "type": "number" }, "arr_value": { "description": "Annual recurring revenue, currency units.", "type": "number" }, "cac": { "description": "Customer acquisition cost per customer, currency units.", "type": "number" }, "churn_rate": { "description": "Periodic churn rate as a decimal (0.02 = 2% per month).", "type": "number" }, "ending_revenue": { "description": "Revenue from the same cohort at period end, currency units.", "type": "number" }, "expansion_revenue": { "default": 0, "description": "Expansion revenue from the cohort in the period.", "type": "number" }, "gross_margin": { "description": "Gross margin as a decimal (0.80 = 80%).", "type": "number" }, "growth_rate": { "description": "Revenue growth rate as a decimal (0.40 = 40%).", "type": "number" }, "method": { "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.", "enum": [ "ltv", "cac", "mrr", "arr", "nrr", "magic_number", "rule_of_40", "cac_payback", "revenue_multiple" ], "type": "string" }, "mrr_per_customer": { "description": "Monthly recurring revenue per customer, currency units.", "type": "number" }, "net_new_arr": { "description": "Net new ARR added in the period, currency units.", "type": "number" }, "new_customers": { "description": "Number of customers acquired in the period.", "type": "integer" }, "profit_margin": { "description": "Profit margin as a decimal (0.15 = 15%).", "type": "number" }, "revenue_multiple": { "description": "SaaS revenue multiple (e.g. 8 for 8x ARR).", "type": "number" }, "sales_marketing_expense": { "description": "Sales & marketing spend for the period, currency units.", "type": "number" }, "sm_expense_prior": { "description": "Sales & marketing expense in the prior period, currency units.", "type": "number" }, "starting_revenue": { "description": "Revenue from the cohort at period start, currency units.", "type": "number" }, "subscription_values": { "description": "Monthly subscription revenue per customer (summed x12 for ARR).", "items": { "type": "number" }, "type": "array" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_saas", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "accounts_receivable": { "default": 0, "description": "Accounts receivable, currency units.", "type": "number" }, "annual_vest_rate": { "default": 0.25, "description": "Annual vesting rate as a decimal.", "type": "number" }, "assets": { "description": "Map of asset name to book value, e.g. {\"cash\": 500000}.", "type": "object" }, "cash": { "default": 0, "description": "Cash and equivalents, currency units.", "type": "number" }, "cost_synergies": { "description": "Cost synergy value, currency units.", "type": "number" }, "discount_rate": { "description": "Discount rate as a decimal (0.12 = 12%).", "type": "number" }, "enterprise_value": { "description": "Enterprise value (market cap + net debt), currency units.", "type": "number" }, "equipment": { "default": 0, "description": "Equipment, currency units.", "type": "number" }, "equity_value": { "description": "Value of equity offered, currency units.", "type": "number" }, "fair_market_value": { "description": "Current fair market value per share, currency units.", "type": "number" }, "inventory": { "default": 0, "description": "Inventory, currency units.", "type": "number" }, "investment": { "description": "Amount invested, currency units.", "type": "number" }, "liquidation_pref": { "description": "Liquidation preference amount, currency units.", "type": "number" }, "method": { "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.", "enum": [ "dilution", "opm", "pwerm", "liquidation", "risk_adjusted_synergy", "intrinsic_option", "employee_option", "vesting_adjusted", "cash_equity_breakeven", "max_asset_loan" ], "type": "string" }, "ownership_before": { "description": "Founder ownership before the round as a decimal (0.60 = 60%).", "type": "number" }, "post_money": { "description": "Post-money valuation, currency units.", "type": "number" }, "prob_cost": { "default": 0.8, "description": "Probability of realising cost synergies, 0-1.", "type": "number" }, "prob_revenue": { "default": 0.4, "description": "Probability of realising revenue synergies, 0-1.", "type": "number" }, "real_estate": { "default": 0, "description": "Real estate, currency units.", "type": "number" }, "recovery_rates": { "description": "Map of asset name to recovery rate in [0,1], matching assets.", "type": "object" }, "retention_prob": { "default": 0.8, "description": "Probability the holder stays, 0-1.", "type": "number" }, "revenue_synergies": { "description": "Revenue synergy value, currency units.", "type": "number" }, "salary_reduction": { "description": "Annual salary foregone for equity, currency units.", "type": "number" }, "scenarios": { "description": "Scenario objects: {name: str, probability: 0-1, value: currency}; probabilities should sum to 1.", "items": { "type": "object" }, "type": "array" }, "shares": { "description": "Number of option shares.", "type": "integer" }, "strike_price": { "description": "Option strike price, currency units.", "type": "number" }, "tax_rate": { "default": 0.3, "description": "Effective tax rate as a decimal in [0,1].", "type": "number" }, "time_to_exit": { "description": "Expected time to exit / liquidity in years.", "type": "number" }, "total_value": { "description": "Total grant value, currency units.", "type": "number" }, "vested_fraction": { "description": "Fraction vested in [0,1].", "type": "number" }, "volatility": { "description": "Annualised volatility σ as a decimal (0.80 = 80%).", "type": "number" }, "years": { "default": 5, "description": "Forecast horizon in years; integer ≥ 1.", "type": "integer" }, "years_remaining": { "default": 3, "description": "Years of vesting remaining.", "type": "integer" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_stakeholder", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "cash_flows": { "description": "Cash flows by period, first element at t=1; negatives allowed for outflows.", "items": { "type": "number" }, "type": "array" }, "ending_value": { "description": "Value at t=n to compare against the starting value, in currency units.", "type": "number" }, "future_value": { "description": "Future cash amount to discount, in currency units.", "type": "number" }, "growth_rate": { "description": "Revenue growth rate as a decimal (0.40 = 40%).", "type": "number" }, "method": { "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.", "enum": [ "present_value", "npv", "annuity", "compound_growth", "cagr", "dcf" ], "type": "string" }, "payment": { "description": "Recurring payment per period, in currency units.", "type": "number" }, "periods": { "description": "Number of compounding periods, must be ≥ 1 (may be fractional).", "type": "number" }, "rate": { "description": "Per-period discount rate as a decimal (0.10 = 10%).", "type": "number" }, "starting_value": { "description": "Value at t=0 (revenue or cash flow) to grow forward, in currency units.", "type": "number" }, "terminal_growth": { "default": 0, "description": "Perpetual growth rate g applied after the forecast window, as a decimal.", "type": "number" } }, "required": [ "method" ], "type": "object" }, "name": "valuation_time_value", "outputSchema": { "properties": { "assumptions": { "description": "Modelling assumptions applied.", "items": { "type": "string" }, "type": "array" }, "chapter": { "description": "Source textbook chapter.", "type": "string" }, "defaults_applied": { "description": "Optional parameters that were not supplied, so their documented defaults were used.", "items": { "type": "string" }, "type": "array" }, "error": { "description": "Error message when the call fails.", "type": "string" }, "formula_number": { "description": "Source textbook formula number (e.g. '3.1').", "type": "string" }, "inputs": { "description": "Echo of the normalised inputs used.", "type": "object" }, "method": { "description": "Formula / method name that produced the result.", "type": "string" }, "steps": { "description": "Intermediate steps for traceability.", "items": { "type": "object" }, "type": "array" }, "value": { "description": "Computed valuation or metric.", "type": "number" } }, "required": [ "value" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:89f733abdf815030c2f0e8597e6ba99937e4aba02bcc974358b781f917652f00 | sha256sum