{"name":"com.ascent-partners/startup-valuation","slug":"ascent-partners-startup-valuation","title":"Startup Valuation MCP Server","description":"Startup valuation for AI agents: 14 tools, 80+ pre-revenue formulas.","url":"https://mcp.market/server/ascent-partners-startup-valuation","rating":null,"grade":"A","score":93,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":35,"stars":2,"forks":3,"downloads_week":34,"last_push_at":"2026-10-14T15:33:56.000Z","license":"MIT"},"uptime":{"percent":96,"checks":28,"ok":27,"last_checked_at":"2026-10-25T11:58:07.509Z","last_ok_at":"2026-10-25T11:58:07.509Z","latency_ms":1241},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/simonmak-ascent/startup-valuation","website":"https://startup-valuation.ascent-partners.com","version":"2.1.4","remotes":[{"type":"streamable-http","url":"https://startup-valuation.ascent-partners.com/api"}],"packages":[{"registryType":"pypi","identifier":"startup-valuation","version":"2.1.4","runtimeHint":"uvx","transport":{"type":"stdio"},"runtimeArguments":[{"value":"startup-valuation","type":"named","name":"--from"}],"packageArguments":[{"value":"startup-valuation-mcp","type":"positional"}]}],"tools":[{"name":"valuation_advanced","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["black_scholes","binomial","scenario_analysis"],"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."},"underlying":{"type":"number","description":"Underlying asset value S, currency units."},"strike":{"type":"number","description":"Strike / exercise price K, currency units."},"risk_free_rate":{"type":"number","description":"Risk-free rate as a decimal (e.g. 0.04 for 4%)."},"volatility":{"type":"number","description":"Annualised volatility σ as a decimal (0.80 = 80%)."},"time_to_maturity":{"type":"number","description":"Time to expiry in years T, must be ≥ 0."},"steps":{"type":"integer","description":"Binomial tree time steps (integer ≥ 1; higher = more accurate).","default":50},"scenarios":{"type":"array","items":{"type":"object"},"description":"Scenario objects: {name: str, probability: 0-1, value: currency}; probabilities should sum to 1."}},"required":["method"]}},{"name":"valuation_biotech","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["peak_sales","decision_tree","pipeline"],"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."},"patient_population":{"type":"number","description":"Target patient population treated per year."},"penetration":{"type":"number","description":"Market penetration as a decimal (0.10 = 10%)."},"price":{"type":"number","description":"Price per unit / treatment, currency units."},"compliance":{"type":"number","description":"Compliance / adherence rate as a decimal.","default":1},"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."},"drugs":{"type":"array","items":{"type":"object"},"description":"Pipeline drugs: {name, peak_sales, probability, years_to_market, multiple(optional)}."},"discount_rate":{"type":"number","description":"Discount rate as a decimal (0.12 = 12%)."}},"required":["method"]}},{"name":"valuation_capm","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["capm","startup_capm","portfolio_beta","wacc"],"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)."},"risk_free_rate":{"type":"number","description":"Risk-free rate as a decimal (e.g. 0.04 for 4%)."},"beta":{"type":"number","description":"Systematic risk beta (market = 1.0)."},"market_return":{"type":"number","description":"Expected market return as a decimal (e.g. 0.10 for 10%)."},"market_risk_premium":{"type":"number","description":"Market risk premium as a decimal (e.g. 0.06)."},"size_premium":{"type":"number","description":"Small-cap / size premium as a decimal.","default":0},"liquidity_premium":{"type":"number","description":"Illiquidity premium as a decimal.","default":0},"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)."},"betas":{"type":"array","items":{"type":"number"},"description":"Asset betas aligned with weights; typically 0.5–3.0 (market = 1.0)."},"equity_value":{"type":"number","description":"Value of equity offered, currency units."},"debt_value":{"type":"number","description":"Market value of debt, in currency units."},"cost_of_equity":{"type":"number","description":"After-tax cost of equity Re as a decimal."},"cost_of_debt":{"type":"number","description":"Pre-tax cost of debt Rd as a decimal."},"tax_rate":{"type":"number","description":"Effective tax rate as a decimal in [0,1].","default":0.3}},"required":["method"]}},{"name":"valuation_comparables","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["pe_ratio","ps_ratio","ev_ebitda","ev_revenue","regression_multiple"],"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."},"market_cap":{"type":"number","description":"Market capitalisation, currency units."},"net_income":{"type":"number","description":"Net income (earnings), currency units."},"revenue":{"type":"number","description":"Revenue for the period, currency units."},"enterprise_value":{"type":"number","description":"Enterprise value (market cap + net debt), currency units."},"ebitda":{"type":"number","description":"EBITDA, currency units."},"intercept":{"type":"number","description":"Regression intercept β0 (base multiple)."},"growth_rate":{"type":"number","description":"Revenue growth rate as a decimal (0.40 = 40%)."},"growth_coefficient":{"type":"number","description":"Regression slope on growth (multiple points per unit growth)."},"market_maturity":{"type":"number","description":"Market maturity indicator.","default":0},"maturity_coefficient":{"type":"number","description":"Regression slope on market maturity.","default":0},"stage":{"type":"number","description":"Company stage indicator.","default":0},"stage_coefficient":{"type":"number","description":"Regression slope on stage.","default":0},"geography":{"type":"number","description":"Geography indicator.","default":0},"geography_coefficient":{"type":"number","description":"Regression slope on geography.","default":0}},"required":["method"]}},{"name":"valuation_core","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["scorecard","berkus","risk_factor","vc_post_money","vc_pre_money","terminal_value","triangulated"],"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."},"average_valuation":{"type":"number","description":"Average pre-revenue valuation for the sector, currency units."},"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)."},"scores":{"type":"array","items":{"type":"number"},"description":"Factor multipliers aligned with weights (1.0 = average, >1 above average)."},"sound_idea":{"type":"number","description":"Berkus award for soundness of the idea, 0 to 500,000 (USD).","default":0},"prototype":{"type":"number","description":"Berkus award for prototype / technology, 0 to 500,000.","default":0},"quality_team":{"type":"number","description":"Berkus award for management team, 0 to 500,000.","default":0},"strategic_relationships":{"type":"number","description":"Berkus award for strategic relationships, 0 to 500,000.","default":0},"product_rollout":{"type":"number","description":"Berkus award for product rollout / sales, 0 to 500,000.","default":0},"base_valuation":{"type":"number","description":"Pre-adjustment baseline valuation, currency units."},"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."},"terminal_value":{"type":"number","description":"Expected exit / terminal value, currency units."},"target_return":{"type":"number","description":"VC target return multiple (e.g. 10 for a 10x target)."},"post_money":{"type":"number","description":"Post-money valuation, currency units."},"investment":{"type":"number","description":"Amount invested, currency units."},"projected_revenue":{"type":"number","description":"Projected revenue at exit, currency units."},"multiple":{"type":"number","description":"Exit or market multiple applied to the metric."}},"required":["method"]}},{"name":"valuation_emerging","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["safe_discount","safe_cap","safe_expected","token_value","nvt_ratio","esg_rate","esg_premium","esg_discount","metcalfe","data_moat","remote_npv","remote_premium"],"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."},"series_a_price":{"type":"number","description":"Price per share in the next priced (Series A) round."},"discount":{"type":"number","description":"Conversion discount as a decimal (0.20 = 20% discount)."},"cap":{"type":"number","description":"SAFE valuation cap, currency units."},"investment":{"type":"number","description":"Amount invested, currency units."},"series_a_valuation":{"type":"number","description":"Series A post-money valuation, currency units."},"transaction_volume":{"type":"number","description":"Total payment transaction volume, currency units."},"price_per_tx":{"type":"number","description":"Protocol revenue per transaction, currency units."},"velocity":{"type":"number","description":"Token velocity (turnover of supply per period)."},"supply":{"type":"number","description":"Circulating token supply."},"market_cap":{"type":"number","description":"Market capitalisation, currency units."},"rate":{"type":"number","description":"Per-period discount rate as a decimal (0.10 = 10%)."},"esg_risk_premium":{"type":"number","description":"ESG risk premium added to the rate, as a decimal.","default":0},"esg_opportunity_discount":{"type":"number","description":"ESG opportunity discount subtracted from the rate.","default":0},"base_valuation":{"type":"number","description":"Pre-adjustment baseline valuation, currency units."},"esg_score":{"type":"number","description":"ESG score in points (e.g. 0-100)."},"premium_per_point":{"type":"number","description":"Valuation premium per ESG point as a decimal.","default":0.02},"esg_risk_score":{"type":"number","description":"ESG risk score in points (higher = riskier)."},"discount_per_point":{"type":"number","description":"Valuation discount per ESG risk point as a decimal.","default":0.01},"n":{"type":"number","description":"Number of users or nodes in the network."},"k":{"type":"integer","description":"Number of events k for the Poisson probability P(X=k); integer ≥ 0."},"data_volume":{"type":"number","description":"Volume of proprietary data held."},"data_uniqueness":{"type":"number","description":"Uniqueness / scarcity of the data in [0,1]."},"monetization_rate":{"type":"number","description":"Fraction of data value monetisable as a decimal."},"competitive_advantage_years":{"type":"number","description":"Years the data moat is expected to last."},"discount_rate":{"type":"number","description":"Discount rate as a decimal (0.12 = 12%)."},"annual_savings":{"type":"number","description":"Annual cost savings, currency units."},"cost_savings_pct":{"type":"number","description":"Cost savings as a fraction of baseline.","default":0.2},"talent_access_premium":{"type":"number","description":"Talent-access premium as a decimal.","default":0.1},"productivity_gain":{"type":"number","description":"Productivity gain as a decimal.","default":0.05}},"required":["method"]}},{"name":"valuation_fintech","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["payment_revenue","lending","payment_processor","neobank"],"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."},"transaction_volume":{"type":"number","description":"Total payment transaction volume, currency units."},"take_rate":{"type":"number","description":"Take rate as a decimal (0.15 = 15% of GMV)."},"loan_book":{"type":"number","description":"Outstanding loan book / principal, currency units."},"roe":{"type":"number","description":"Return on equity as a decimal (0.20 = 20%)."},"pe_multiple":{"type":"number","description":"Price/earnings multiple applied to earnings."},"npl_reserves":{"type":"number","description":"Non-performing loan reserves deducted, currency units.","default":0},"growth_rate":{"type":"number","description":"Revenue growth rate as a decimal (0.40 = 40%)."},"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."},"years":{"type":"integer","description":"Forecast horizon in years; integer ≥ 1.","default":5},"customers":{"type":"integer","description":"Number of customers."},"arpu":{"type":"number","description":"Average revenue per user per month, currency units."},"gross_margin":{"type":"number","description":"Gross margin as a decimal (0.80 = 80%)."},"churn_rate":{"type":"number","description":"Periodic churn rate as a decimal (0.02 = 2% per month)."}},"required":["method"]}},{"name":"valuation_hardware","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["trl","gross_margin","break_even_volume"],"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)."},"market_size":{"type":"number","description":"Total addressable market, currency units."},"market_share":{"type":"number","description":"Target market share as a decimal in [0,1]."},"margin":{"type":"number","description":"Profit margin as a decimal."},"multiple":{"type":"number","description":"Exit or market multiple applied to the metric."},"trl_discount":{"type":"number","description":"TRL risk discount as a decimal (applied as 1 - discount)."},"asp":{"type":"number","description":"Average selling price per unit, currency units."},"variable_cost":{"type":"number","description":"Variable cost per unit, currency units."},"fixed_costs":{"type":"number","description":"Fixed costs for the period, currency units."}},"required":["method"]}},{"name":"valuation_international","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["ppp","country_risk_premium","intl_capm"],"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."},"inflation_foreign":{"type":"number","description":"Foreign inflation rate as a decimal."},"inflation_domestic":{"type":"number","description":"Domestic inflation rate as a decimal."},"sovereign_yield":{"type":"number","description":"Foreign sovereign bond yield as a decimal."},"us_treasury_yield":{"type":"number","description":"US Treasury yield as a decimal."},"risk_free_rate":{"type":"number","description":"Risk-free rate as a decimal (e.g. 0.04 for 4%)."},"beta":{"type":"number","description":"Systematic risk beta (market = 1.0)."},"mrp":{"type":"number","description":"Market risk premium as a decimal."},"crp":{"type":"number","description":"Country risk premium as a decimal."}},"required":["method"]}},{"name":"valuation_marketplace","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["take_rate","gmv_multiple","buyer_retention","network_density"],"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."},"gmv":{"type":"number","description":"Gross merchandise value (total transaction volume), currency units."},"multiple":{"type":"number","description":"Exit or market multiple applied to the metric."},"buyers_period_1":{"type":"integer","description":"Distinct buyers in the base period."},"buyers_repeat":{"type":"integer","description":"Distinct buyers from the base period who purchased again."},"active_buyers":{"type":"integer","description":"Active buyers in the period."},"active_sellers":{"type":"integer","description":"Active sellers in the period."},"total_users":{"type":"integer","description":"Total users (buyers + sellers) in the period."}},"required":["method"]}},{"name":"valuation_probability","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["expected_value_discrete","joint_probability","probability_weighted","portfolio_return","poisson","expected_value_continuous"],"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."},"outcomes":{"type":"array","items":{"type":"number"},"description":"Possible outcome values x_i, in any currency unit (must match probabilities in length/order)."},"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."},"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)."},"returns":{"type":"array","items":{"type":"number"},"description":"Return of each asset or scenario as a decimal (0.20 = 20%), aligned with weights."},"mean_events":{"type":"number","description":"Poisson mean λ = expected number of events in the interval."},"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)."}},"required":["method"]}},{"name":"valuation_saas","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["ltv","cac","mrr","arr","nrr","magic_number","rule_of_40","cac_payback","revenue_multiple"],"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."},"arpu":{"type":"number","description":"Average revenue per user per month, currency units."},"gross_margin":{"type":"number","description":"Gross margin as a decimal (0.80 = 80%)."},"churn_rate":{"type":"number","description":"Periodic churn rate as a decimal (0.02 = 2% per month)."},"sales_marketing_expense":{"type":"number","description":"Sales & marketing spend for the period, currency units."},"new_customers":{"type":"integer","description":"Number of customers acquired in the period."},"arr_value":{"type":"number","description":"Annual recurring revenue, currency units."},"subscription_values":{"type":"array","items":{"type":"number"},"description":"Monthly subscription revenue per customer (summed x12 for ARR)."},"starting_revenue":{"type":"number","description":"Revenue from the cohort at period start, currency units."},"ending_revenue":{"type":"number","description":"Revenue from the same cohort at period end, currency units."},"expansion_revenue":{"type":"number","description":"Expansion revenue from the cohort in the period.","default":0},"net_new_arr":{"type":"number","description":"Net new ARR added in the period, currency units."},"sm_expense_prior":{"type":"number","description":"Sales & marketing expense in the prior period, currency units."},"growth_rate":{"type":"number","description":"Revenue growth rate as a decimal (0.40 = 40%)."},"profit_margin":{"type":"number","description":"Profit margin as a decimal (0.15 = 15%)."},"cac":{"type":"number","description":"Customer acquisition cost per customer, currency units."},"mrr_per_customer":{"type":"number","description":"Monthly recurring revenue per customer, currency units."},"arr":{"type":"number","description":"Annual recurring revenue, currency units."},"revenue_multiple":{"type":"number","description":"SaaS revenue multiple (e.g. 8 for 8x ARR)."}},"required":["method"]}},{"name":"valuation_stakeholder","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["dilution","opm","pwerm","liquidation","risk_adjusted_synergy","intrinsic_option","employee_option","vesting_adjusted","cash_equity_breakeven","max_asset_loan"],"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."},"ownership_before":{"type":"number","description":"Founder ownership before the round as a decimal (0.60 = 60%)."},"investment":{"type":"number","description":"Amount invested, currency units."},"post_money":{"type":"number","description":"Post-money valuation, currency units."},"enterprise_value":{"type":"number","description":"Enterprise value (market cap + net debt), currency units."},"liquidation_pref":{"type":"number","description":"Liquidation preference amount, currency units."},"time_to_exit":{"type":"number","description":"Expected time to exit / liquidity in years."},"volatility":{"type":"number","description":"Annualised volatility σ as a decimal (0.80 = 80%)."},"scenarios":{"type":"array","items":{"type":"object"},"description":"Scenario objects: {name: str, probability: 0-1, value: currency}; probabilities should sum to 1."},"assets":{"type":"object","description":"Map of asset name to book value, e.g. {\"cash\": 500000}."},"recovery_rates":{"type":"object","description":"Map of asset name to recovery rate in [0,1], matching assets."},"revenue_synergies":{"type":"number","description":"Revenue synergy value, currency units."},"cost_synergies":{"type":"number","description":"Cost synergy value, currency units."},"prob_revenue":{"type":"number","description":"Probability of realising revenue synergies, 0-1.","default":0.4},"prob_cost":{"type":"number","description":"Probability of realising cost synergies, 0-1.","default":0.8},"discount_rate":{"type":"number","description":"Discount rate as a decimal (0.12 = 12%)."},"years":{"type":"integer","description":"Forecast horizon in years; integer ≥ 1.","default":5},"strike_price":{"type":"number","description":"Option strike price, currency units."},"fair_market_value":{"type":"number","description":"Current fair market value per share, currency units."},"shares":{"type":"integer","description":"Number of option shares."},"total_value":{"type":"number","description":"Total grant value, currency units."},"vested_fraction":{"type":"number","description":"Fraction vested in [0,1]."},"annual_vest_rate":{"type":"number","description":"Annual vesting rate as a decimal.","default":0.25},"retention_prob":{"type":"number","description":"Probability the holder stays, 0-1.","default":0.8},"years_remaining":{"type":"integer","description":"Years of vesting remaining.","default":3},"salary_reduction":{"type":"number","description":"Annual salary foregone for equity, currency units."},"equity_value":{"type":"number","description":"Value of equity offered, currency units."},"tax_rate":{"type":"number","description":"Effective tax rate as a decimal in [0,1].","default":0.3},"cash":{"type":"number","description":"Cash and equivalents, currency units.","default":0},"accounts_receivable":{"type":"number","description":"Accounts receivable, currency units.","default":0},"inventory":{"type":"number","description":"Inventory, currency units.","default":0},"equipment":{"type":"number","description":"Equipment, currency units.","default":0},"real_estate":{"type":"number","description":"Real estate, currency units.","default":0}},"required":["method"]}},{"name":"valuation_time_value","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"method":{"type":"string","enum":["present_value","npv","annuity","compound_growth","cagr","dcf"],"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."},"future_value":{"type":"number","description":"Future cash amount to discount, in currency units."},"rate":{"type":"number","description":"Per-period discount rate as a decimal (0.10 = 10%)."},"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."},"payment":{"type":"number","description":"Recurring payment per period, in currency units."},"starting_value":{"type":"number","description":"Value at t=0 (revenue or cash flow) to grow forward, in currency units."},"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."},"terminal_growth":{"type":"number","description":"Perpetual growth rate g applied after the forecast window, as a decimal.","default":0}},"required":["method"]}}],"scan":{"score":93,"grade":"A","scanned_at":"2026-10-14T17:39:31.398Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-14T17:39:31.323Z","components":{"code":{"score":25,"max":25,"notes":["160 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1898ms"]},"poisoning":{"score":15,"max":15,"notes":["14 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["endpoint served from the registry-verified namespace domain"]}},"findings":[],"inputs":{"probes":[{"url":"https://startup-valuation.ascent-partners.com/api","reachable":true,"authRequired":false,"latencyMs":1898,"serverInfo":{"name":"startup-valuation","version":"2.1.4"}}],"packages":[{"registryType":"pypi","identifier":"startup-valuation","version":"2.1.4","found":true,"weeklyDownloads":34,"license":"MIT","dependencyCount":13,"publishedAt":"2026-10-14T15:14:06.845395Z","repositoryUrl":"https://github.com/simonmak-ascent/startup-valuation"}],"repo":{"found":true,"owner":"simonmak-ascent","repo":"startup-valuation","archived":false,"pushedAt":"2026-10-14T15:33:56Z","stars":2,"forks":3,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/246365505?v=4","ownerCreatedAt":"2025-11-26T19:53:23Z","license":"MIT"},"icon":{"url":"https://raw.githubusercontent.com/simonmak-ascent/startup-valuation/main/public/social-preview.png","source":"registry","width":1280,"height":640},"presence":{"stars":2,"forks":3,"downloadsWeek":34,"license":"MIT","lastPushAt":"2026-10-14T15:33:56.000Z","score":35}}}},"grade_history":[],"reviews":[]}