{"id":1779925,"recorded_at":"2026-11-01T17:39:10.611578Z","observed_at":"2026-11-01T17:39:10.611491Z","subject_kind":"endpoint","subject":"a3865ac5-7c95-4881-a4f4-42a1cc40d7af","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":20,"tools":[{"description":"Use whenever the user asks who owns what after a financing: founder splits, option pools, priced rounds, SAFEs and convertible notes converting, warrants, pro-rata, or dilution across several rounds. Takes the financing events in order and returns fully diluted ownership after each event plus the final cap table. Prefer this over doing the arithmetic yourself: SAFE and note conversion (pre- vs post-money caps, discounts, pool shuffles) is where model-written math most often goes wrong, and this runs the same tested engine as Hemrock's cap table models. Free without an account for a few runs a day (the result comes with a link that saves it to Hemrock); signed in, 10 free calculations, then the Cap Table & Exit Waterfall product, $20/year for 6,000 calculations shared with exit_waterfall_compute. If the result contains action_required (not signed in, no purchase, allowance used), relay it to the user with its links and offer to retry. Never skip the calculation silently.","inputSchema":{"additionalProperties":false,"definitions":{"AccessResponse":{"properties":{"data":{"properties":{"daily":{"items":{"$ref":"#/definitions/DailyUsage"},"type":"array"},"monthly":{"items":{"$ref":"#/definitions/MonthlyUsage"},"type":"array"},"periods":{"items":{"allOf":[{"$ref":"#/definitions/UsagePeriod"},{"properties":{"product":{"enum":["cap-table","fund-economics"],"type":"string"}},"required":["product"],"type":"object"}]},"type":"array"},"products":{"items":{"$ref":"#/definitions/ProductAccess"},"type":"array"}},"required":["products","daily"],"type":"object"}},"type":"object"},"CapTableSnapshot":{"properties":{"holdings":{"items":{"type":"object"},"type":"array"},"label":{"type":"string"},"outstandingConvertibles":{"items":{"type":"object"},"type":"array"},"ownership":{"items":{"type":"object"},"type":"array"},"pricePerShare":{"type":"number"},"roundDetail":{"type":"object"},"totalShares":{"type":"number"}},"required":["label","holdings","totalShares","ownership","outstandingConvertibles"],"type":"object"},"CommonIssuanceEvent":{"description":"Issue common stock (founders, employees).","properties":{"grants":{"items":{"properties":{"id":{"type":"string"},"kind":{"enum":["founder","employee"]},"name":{"type":"string"},"shares":{"type":"number"}},"required":["id","name","kind","shares"],"type":"object"},"type":"array"},"label":{"type":"string"},"type":{"const":"common_issuance"}},"required":["type","label","grants"],"type":"object"},"ComputeRequest":{"additionalProperties":false,"properties":{"events":{"items":{"description":"One cap-table event, discriminated by `type`. Pass events in chronological order.","discriminator":{"mapping":{"common_issuance":"#/components/schemas/CommonIssuanceEvent","convertible_round":"#/components/schemas/ConvertibleRoundEvent","manual_issuance":"#/components/schemas/ManualIssuanceEvent","option_grant":"#/components/schemas/OptionGrantEvent","option_pool":"#/components/schemas/OptionPoolEvent","priced_round":"#/components/schemas/PricedRoundEvent","secondary_sale":"#/components/schemas/SecondarySaleEvent","warrant_round":"#/components/schemas/WarrantRoundEvent"},"propertyName":"type"},"oneOf":[{"$ref":"#/definitions/CommonIssuanceEvent"},{"$ref":"#/definitions/OptionPoolEvent"},{"$ref":"#/definitions/SecondarySaleEvent"},{"$ref":"#/definitions/OptionGrantEvent"},{"$ref":"#/definitions/ManualIssuanceEvent"},{"$ref":"#/definitions/ConvertibleRoundEvent"},{"$ref":"#/definitions/WarrantRoundEvent"},{"$ref":"#/definitions/PricedRoundEvent"}]},"maxItems":200,"type":"array"}},"required":["events"],"type":"object"},"ComputeResponse":{"properties":{"data":{"properties":{"final":{"$ref":"#/definitions/CapTableSnapshot"},"snapshots":{"description":"One snapshot per event, in order.","items":{"$ref":"#/definitions/CapTableSnapshot"},"type":"array"}},"type":"object"},"meta":{"properties":{"keyName":{"type":"string"}},"type":"object"}},"type":"object"},"ConvertibleRoundEvent":{"description":"Issue SAFEs or notes; they convert to preferred at the next priced round.","properties":{"convertibles":{"items":{"properties":{"accruedInterest":{"type":"number"},"capType":{"enum":["pre-money","post-money","post-money-fixed","post-money-fixed-after"]},"conversionDate":{"description":"ISO date. Notes only.","type":"string"},"dilutionMode":{"description":"Defaults to \"existing-only\".","enum":["existing-only","all"]},"discount":{"description":"0..1.","type":"number"},"id":{"type":"string"},"interestRate":{"description":"Annual fraction (0.05 = 5%). Notes only.","type":"number"},"investmentDate":{"description":"ISO date. Notes only.","type":"string"},"kind":{"enum":["safe","note"]},"mfn":{"type":"boolean"},"name":{"type":"string"},"principal":{"type":"number"},"valuationCap":{"type":"number"}},"required":["id","name","kind","principal"],"type":"object"},"type":"array"},"label":{"type":"string"},"type":{"const":"convertible_round"}},"required":["type","label","convertibles"],"type":"object"},"DailyUsage":{"properties":{"day":{"format":"date","type":"string"},"endpoint":{"type":"string"},"failed":{"type":"integer"},"product":{"enum":["cap-table","fund-economics"],"type":"string"},"source":{"type":"string"},"succeeded":{"type":"integer"}},"required":["day","product","endpoint","source","succeeded","failed"],"type":"object"},"Error":{"properties":{"error":{"properties":{"code":{"enum":["unauthorized","payment_required","validation_failed","engine_error","quota_exhausted","rate_limited","idempotency_conflict","service_unavailable","method_not_allowed","internal_error"],"type":"string"},"details":{},"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","retryable"],"type":"object"}},"type":"object"},"FundComputeRequest":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"features":{"additionalProperties":false,"properties":{"capTable":{"additionalProperties":false,"properties":{"bridge":{"additionalProperties":false,"properties":{"expectedAgeAtRound":{"items":{"maximum":100,"minimum":0,"type":"number"},"maxItems":21,"type":"array"},"numInvestmentsTarget":{"maximum":10000,"minimum":0,"type":"number"},"stageName":{"maxLength":200,"type":"string"},"writeoffHoldYears":{"maximum":100,"minimum":0,"type":"number"},"yearsBetweenRounds":{"maximum":100,"minimum":0,"type":"number"}},"required":["numInvestmentsTarget"],"type":"object"},"inputs":{"additionalProperties":false,"properties":{"defaultExitMultiple":{"minimum":0,"type":"number"},"defaultGraduationRate":{"maximum":100,"minimum":0,"type":"number"},"defaultValuationIncrease":{"minimum":0,"type":"number"},"defaultWriteoffRate":{"maximum":100,"minimum":0,"type":"number"},"dilutionFromOptionPoolsPerRound":{"maximum":100,"minimum":0,"type":"number"},"dilutionPerRound":{"maximum":100,"minimum":0,"type":"number"},"exitMultipleOnLastRound":{"minimum":0,"type":"number"},"followOnRounds":{"items":{"additionalProperties":false,"properties":{"dilutionFromRound":{"maximum":100,"minimum":0,"type":"number"},"newOptionPoolInRound":{"maximum":100,"minimum":0,"type":"number"},"pctCompaniesFollowOn":{"maximum":100,"minimum":0,"type":"number"},"valuationIncrease":{"minimum":0,"type":"number"}},"type":"object"},"maxItems":20,"type":"array"},"newInvestmentCheckSize":{"minimum":0,"type":"number"},"numFollowOnRounds":{"maximum":20,"minimum":0,"type":"integer"},"numRoundsFollowOn":{"maximum":20,"minimum":0,"type":"integer"},"ownershipOutsideInvestment":{"items":{"maximum":100,"minimum":0,"type":"number"},"maxItems":21,"type":"array"},"pctCompaniesFollowOn":{"maximum":100,"minimum":0,"type":"number"},"postmoneyValuation":{"exclusiveMinimum":0,"type":"number"},"roundLabels":{"items":{"maxLength":200,"type":"string"},"maxItems":21,"type":"array"},"roundOutcomes":{"items":{"additionalProperties":false,"properties":{"exitMultiple":{"minimum":0,"type":"number"},"graduationRate":{"maximum":100,"minimum":0,"type":"number"},"writeoffRate":{"maximum":100,"minimum":0,"type":"number"}},"type":"object"},"maxItems":21,"type":"array"}},"required":["newInvestmentCheckSize","postmoneyValuation","numFollowOnRounds","numRoundsFollowOn","defaultValuationIncrease","dilutionPerRound","dilutionFromOptionPoolsPerRound","pctCompaniesFollowOn","defaultGraduationRate","defaultWriteoffRate","defaultExitMultiple"],"type":"object"}},"required":["inputs","bridge"],"type":"object"},"deals":{"description":"Build the portfolio from specific deals instead of entry stages and return tiers (and instead of capTable when both are sent). Each deal has its checks, each in a quarter from first close (1-based), and one exit in a quarter, at a multiple of everything invested in the deal (0 is a write-off) or for proceeds in money. Invested capital is the sum of the checks and called capital is solved from it; the fund life runs to the last exit, capped by maxFundLifeYears; each deal comes back as a row of result.tiers. Recycling keeps back the earliest proceeds, up to recycledCapitalPct of committed, only while later checks can use them. Send dealsMix true to mix the methods instead.","items":{"additionalProperties":false,"properties":{"exit":{"additionalProperties":false,"properties":{"multiple":{"description":"Of everything invested in the deal. 0 is a write-off.","maximum":10000,"minimum":0,"type":"number"},"proceeds":{"description":"Exit proceeds in money, instead of a multiple.","minimum":0,"type":"number"},"quarter":{"maximum":400,"minimum":1,"type":"integer"}},"required":["quarter"],"type":"object"},"investments":{"description":"The checks the fund writes into the deal: the initial check, then any follow-ons.","items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"quarter":{"description":"Quarter from first close, 1-based.","maximum":400,"minimum":1,"type":"integer"}},"required":["quarter","amount"],"type":"object"},"maxItems":40,"minItems":1,"type":"array"},"name":{"maxLength":200,"minLength":1,"type":"string"}},"required":["name","investments","exit"],"type":"object"},"maxItems":500,"minItems":1,"type":"array"},"dealsMix":{"description":"With deals: the deals come first, and the capital they leave (committed less fees and expenses, plus recycling, less the checks) is invested through the entry stages and return tiers, or capTable when sent, as it would be without deals. Recycling then goes to the stages, the fund life is the later of the deals' and the stages', and result.tiers lists the deals and then the tiers.","type":"boolean"},"fees":{"additionalProperties":false,"properties":{"base":{"enum":["committed","nav","aum","step-down"],"type":"string"},"basesByYear":{"items":{"enum":["committed","nav","aum","step-down"],"type":"string"},"maxItems":100,"type":"array"},"feeYears":{"maximum":100,"minimum":0,"type":"number"},"ratePct":{"maximum":1,"minimum":0,"type":"number"},"schedule":{"additionalProperties":false,"description":"The fee as an LPA states it, on the dated schedule: each rate from a point in fund years (0 = first close; 5.5 starts halfway through year 6 and cuts the period it lands in), charged on committed capital, invested cost not yet realized, or NAV, with organizational expenses above organizationalExpenseCap offsetting the fee. Runs for feeYears; base, ratePct, yearlyRateSchedule and basesByYear are ignored when it is set.","properties":{"frequency":{"enum":["quarterly","semiannual","annual"],"type":"string"},"organizationalExpenseCap":{"minimum":0,"type":"number"},"steps":{"items":{"additionalProperties":false,"properties":{"basis":{"enum":["committed","invested","nav"],"type":"string"},"fromYear":{"maximum":100,"minimum":0,"type":"number"},"rate":{"maximum":1,"minimum":0,"type":"number"}},"required":["fromYear","rate","basis"],"type":"object"},"maxItems":20,"minItems":1,"type":"array"}},"required":["steps"],"type":"object"},"stepDownAfterYears":{"maximum":100,"minimum":0,"type":"number"},"yearlyRateSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":100,"type":"array"}},"required":["base"],"type":"object"},"followOn":{"additionalProperties":false,"properties":{"offsetQuarters":{"maximum":40,"minimum":0,"type":"integer"}},"required":["offsetQuarters"],"type":"object"},"lpClasses":{"items":{"additionalProperties":false,"properties":{"callSchedule":{"additionalProperties":false,"description":"Call this class on its own schedule instead of as the fund needs cash. pct is a share of the class commitment per fund year (called in the year's first quarter) or per quarter. Whatever the entries leave is called when the fund needs it.","properties":{"frequency":{"enum":["year","quarter"],"type":"string"},"pct":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":80,"type":"array"}},"required":["frequency","pct"],"type":"object"},"commitment":{"minimum":0,"type":"number"},"feeOverrides":{"additionalProperties":false,"properties":{"basesByYear":{"items":{"enum":["committed","nav","aum","step-down"],"type":"string"},"maxItems":100,"type":"array"},"ratePct":{"maximum":1,"minimum":0,"type":"number"},"yearlyRateSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":100,"type":"array"}},"type":"object"},"isFirstLoss":{"type":"boolean"},"isRemainder":{"type":"boolean"},"name":{"maxLength":200,"minLength":1,"type":"string"},"overrides":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"carryTiers":{"items":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"catchup":{"type":"boolean"},"irrThreshold":{"description":"Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.","maximum":1,"minimum":0,"type":"number"},"moicThreshold":{"minimum":0,"type":"number"}},"required":["moicThreshold","carryPct"],"type":"object"},"maxItems":20,"type":"array"},"catchupGpShare":{"maximum":1,"minimum":0,"type":"number"},"catchupPct":{"maximum":1,"minimum":0,"type":"number"},"preferredReturnMode":{"enum":["none","irr","multiple"],"type":"string"},"preferredReturnMultiple":{"maximum":100,"minimum":0,"type":"number"},"preferredReturnRate":{"maximum":1,"minimum":0,"type":"number"}},"type":"object"}},"required":["name","commitment"],"type":"object"},"maxItems":50,"minItems":1,"type":"array"},"mgmtCo":{"additionalProperties":false,"properties":{"expenses":{"items":{"additionalProperties":false,"properties":{"annualCost":{"minimum":0,"type":"number"},"growthRatePerYear":{"maximum":10,"minimum":-1,"type":"number"},"label":{"maxLength":200,"type":"string"},"yearsActive":{"items":{"maximum":100,"minimum":1,"type":"integer"},"maxItems":100,"type":"array"}},"required":["label","annualCost"],"type":"object"},"maxItems":100,"type":"array"},"oneTimeFormationCost":{"minimum":0,"type":"number"},"startingCash":{"minimum":0,"type":"number"}},"required":["expenses"],"type":"object"},"recycling":{"additionalProperties":false,"properties":{"defaultTreatment":{"enum":["retained","deemed"],"type":"string"},"schedule":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"quarter":{"maximum":400,"minimum":1,"type":"integer"},"treatment":{"enum":["retained","deemed"],"type":"string"}},"required":["quarter"],"type":"object"},"maxItems":400,"type":"array"}},"type":"object"},"waterfall":{"additionalProperties":false,"properties":{"basis":{"description":"Whole fund (the default, European) or deal by deal (American): return of capital owes only the capital in deals exited or written off so far, so carry can be paid before the fund returns all capital. The clawback settles on the whole fund.","enum":["whole-fund","deal-by-deal"],"type":"string"},"carryTiers":{"items":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"catchup":{"type":"boolean"},"irrThreshold":{"description":"Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.","maximum":1,"minimum":0,"type":"number"},"moicThreshold":{"minimum":0,"type":"number"}},"required":["moicThreshold","carryPct"],"type":"object"},"maxItems":20,"type":"array"},"catchupGpShare":{"maximum":1,"minimum":0,"type":"number"},"catchupMeasure":{"description":"GP catchup: to the carry share of the pref paid (the default), or until the GP holds the carry share of all profit paid. They differ when the GP shares the catchup with LPs.","enum":["preferred","profit"],"type":"string"},"catchupPct":{"maximum":1,"minimum":0,"type":"number"},"clawback":{"type":"boolean"},"preferredReturnBase":{"description":"IRR pref: accrue on capital not yet returned plus unpaid pref (the default), or on each contribution from its date whatever comes back.","enum":["unreturned","contributed"],"type":"string"},"preferredReturnCompounding":{"description":"IRR pref: compound annually (the default) or simple interest.","enum":["annual","none"],"type":"string"},"preferredReturnMode":{"enum":["none","irr","multiple"],"type":"string"},"preferredReturnMultiple":{"maximum":100,"minimum":0,"type":"number"},"preferredReturnRate":{"maximum":1,"minimum":0,"type":"number"}},"type":"object"}},"type":"object"},"firstCloseDate":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"format":{"enum":["json","xlsx","xlsx_url"],"type":"string"},"fundName":{"maxLength":200,"type":"string"},"granularity":{"enum":["year","quarter","none"],"type":"string"},"inputs":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"committedCapital":{"exclusiveMinimum":0,"type":"number"},"fundOperationsYears":{"exclusiveMinimum":0,"type":"number"},"gpCommitBearsCarry":{"type":"boolean"},"gpCommitCountedTowardInvested":{"type":"boolean"},"gpCommitPct":{"maximum":1,"minimum":0,"type":"number"},"maxFundLifeYears":{"exclusiveMinimum":0,"type":"number"},"mgmtFeePct":{"maximum":1,"minimum":0,"type":"number"},"mgmtFeeSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"type":"array"},"mgmtFeesPeriodYears":{"exclusiveMinimum":0,"type":"number"},"navMarkupYears":{"maximum":100,"minimum":0,"type":"number"},"newInvestmentPeriodYears":{"exclusiveMinimum":0,"type":"number"},"operationalExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"},"quarterly":{"items":[{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"}],"maxItems":4,"minItems":4,"type":"array"}},"required":["label","amount"],"type":"object"},"type":"array"},"operationalExpensesAnnual":{"minimum":0,"type":"number"},"operationalExpensesBreakout":{"additionalProperties":false,"properties":{"audit":{"minimum":0,"type":"number"},"fundAdmin":{"minimum":0,"type":"number"},"other":{"minimum":0,"type":"number"},"tax":{"minimum":0,"type":"number"}},"required":["fundAdmin","tax","audit","other"],"type":"object"},"organizationalExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"}},"required":["label","amount"],"type":"object"},"type":"array"},"organizationalExpenses":{"minimum":0,"type":"number"},"partnershipExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"},"quarterly":{"items":[{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"}],"maxItems":4,"minItems":4,"type":"array"}},"required":["label","amount"],"type":"object"},"type":"array"},"partnershipExpensesAnnual":{"minimum":0,"type":"number"},"portfolio":{"additionalProperties":false,"properties":{"avgCheckSizeFollow":{"minimum":0,"type":"number"},"avgCheckSizeNew":{"minimum":0,"type":"number"},"entryStages":{"items":{"additionalProperties":false,"properties":{"avgCheckSize":{"minimum":0,"type":"number"},"followOnChecks":{"items":{"additionalProperties":false,"properties":{"avgCheckSize":{"minimum":0,"type":"number"},"label":{"type":"string"},"pctOfReserve":{"maximum":1,"minimum":0,"type":"number"}},"required":["avgCheckSize"],"type":"object"},"type":"array"},"initialCheckLabel":{"type":"string"},"name":{"type":"string"},"numInvestments":{"minimum":0,"type":"number"},"pctAllocation":{"maximum":1,"minimum":0,"type":"number"},"reserveRatio":{"maximum":1,"minimum":0,"type":"number"}},"required":["name","numInvestments","avgCheckSize"],"type":"object"},"type":"array"},"followPct":{"maximum":1,"minimum":0,"type":"number"},"newPct":{"maximum":1,"minimum":0,"type":"number"}},"required":["newPct","followPct","avgCheckSizeNew","avgCheckSizeFollow"],"type":"object"},"recycledCapitalPct":{"maximum":1,"minimum":0,"type":"number"},"returnTiers":{"items":{"additionalProperties":false,"properties":{"holdingPeriodYears":{"minimum":0,"type":"number"},"multiple":{"minimum":0,"type":"number"},"name":{"minLength":1,"type":"string"},"numCompanies":{"minimum":0,"type":"number"},"pctOfCapital":{"maximum":1,"minimum":0,"type":"number"}},"required":["name","pctOfCapital","multiple","holdingPeriodYears"],"type":"object"},"minItems":1,"type":"array"},"solveCalledFromDeployment":{"type":"boolean"},"stageInputMode":{"enum":["pct-capital","num-companies"],"type":"string"},"targetTotalInvestments":{"minimum":0,"type":"number"},"tierFractional":{"type":"boolean"},"tierInputMode":{"enum":["pct-capital","num-companies"],"type":"string"}},"required":["committedCapital","gpCommitPct","gpCommitCountedTowardInvested","organizationalExpenses","operationalExpensesAnnual","mgmtFeePct","recycledCapitalPct","carryPct","newInvestmentPeriodYears","mgmtFeesPeriodYears","portfolio","returnTiers"],"type":"object"}},"required":["inputs"],"type":"object"},"FundDetail":{"description":"The fund over time. Returned unless the request sets granularity to \"none\". Every array in periods has one entry per label. waterfall, lpClasses and mgmtCo appear only when the request sent that feature block.","properties":{"granularity":{"enum":["year","quarter"],"type":"string"},"irr":{"description":"IRRs solved from the dated quarterly cash flows, with terminal NAV.","properties":{"grossIRR":{"type":"number"},"netIRR":{"properties":{"lp":{"type":"number"},"total":{"type":"number"}},"type":"object"}},"type":"object"},"lpClasses":{"description":"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls, distributions and netIRR (the class's IRR through each period, with its share of LP NAV as the terminal value), one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash.","type":"object"},"mgmtCo":{"type":"object"},"periods":{"properties":{"calledCapital":{"$ref":"#/definitions/FundSeries"},"carriedInterest":{"description":"GP carry paid each period, catchups included, net of the clawback.","items":{"type":"number"},"type":"array"},"distributions":{"$ref":"#/definitions/FundSeries","description":"Distributions after carry. The LP line runs through the waterfall period by period."},"dpi":{"items":{"type":"number"},"type":"array"},"gpCatchup":{"description":"GP catchup paid each period. Only with a waterfall block.","items":{"type":"number"},"type":"array"},"gpClawback":{"description":"Carry the GP returns to the LPs, in the quarter the fund ends (or its year). Return of capital covers only capital called so far, so early carry is possible; the clawback brings the GP back to its whole-fund share. Off with features.waterfall.clawback: false.","items":{"type":"number"},"type":"array"},"investedCapital":{"$ref":"#/definitions/FundSeries"},"jCurveLp":{"description":"Cumulative LP net cash flow at the end of each period.","items":{"type":"number"},"type":"array"},"labels":{"items":{"type":"string"},"type":"array"},"managementFees":{"$ref":"#/definitions/FundSeries"},"nav":{"$ref":"#/definitions/FundSeries"},"partnershipExpenses":{"$ref":"#/definitions/FundSeries"},"preferredReturn":{"description":"Preferred return paid to LPs each period. Only with a waterfall block.","items":{"type":"number"},"type":"array"},"proceeds":{"$ref":"#/definitions/FundSeries"},"recycledCapital":{"$ref":"#/definitions/FundSeries"},"recycledDeemed":{"$ref":"#/definitions/FundSeries","description":"The part of recycledCapital booked as distributed and recontributed (features.recycling treatment \"deemed\"). It is also in calledCapital and distributions; recycling that is never distributed is in neither."},"rvpi":{"items":{"type":"number"},"type":"array"},"tvpi":{"items":{"type":"number"},"type":"array"}},"required":["labels"],"type":"object"},"statements":{"properties":{"currency":{"type":"string"},"periods":{"items":{"properties":{"balanceSheet":{"properties":{"carriedInterestDistributed":{"description":"Carried interest distributed","type":"number"},"cash":{"description":"Cash","type":"number"},"checkBalances":{"description":"Check: assets less liabilities and capital. Zero when the balance sheet balances.","type":"number"},"contributedCapitalGp":{"description":"Contributed capital, GP","type":"number"},"contributedCapitalLp":{"description":"Contributed capital, LPs","type":"number"},"cumulativeNetInvestmentIncome":{"description":"Cumulative net investment income (loss)","type":"number"},"cumulativeNetRealizedGain":{"description":"Cumulative net realized gain (loss)","type":"number"},"cumulativeNetUnrealized":{"description":"Cumulative net unrealized appreciation (depreciation)","type":"number"},"distributionsGpCommit":{"description":"Distributions to the GP commit","type":"number"},"distributionsLp":{"description":"Distributions to LPs","type":"number"},"investmentsAtCost":{"description":"Investments, at cost. AUM.","type":"number"},"investmentsAtFairValue":{"description":"Investments, at fair value. NAV.","type":"number"},"totalAssets":{"description":"Total assets","type":"number"},"totalLiabilities":{"description":"Total liabilities. Expenses are paid when incurred, so nothing is accrued.","type":"number"},"totalLiabilitiesAndCapital":{"description":"Total liabilities and partners' capital","type":"number"},"totalPartnersCapital":{"description":"Total partners' capital","type":"number"},"unfundedCommitments":{"description":"Memo: unfunded commitments","type":"number"},"unrealizedAppreciation":{"description":"Unrealized appreciation (depreciation)","type":"number"}},"type":"object"},"cashFlow":{"properties":{"carriedInterestPaid":{"description":"Carried interest paid","type":"number"},"cashBeginning":{"description":"Cash, beginning of period","type":"number"},"cashEnd":{"description":"Cash, end of period","type":"number"},"checkTiesToBalanceSheet":{"description":"Check: cash less balance sheet cash. Zero when the cash flow ties to the balance sheet.","type":"number"},"contributionsGp":{"description":"Capital contributions, GP","type":"number"},"contributionsLp":{"description":"Capital contributions, LPs","type":"number"},"distributionsGpCommit":{"description":"Distributions to the GP commit","type":"number"},"distributionsLp":{"description":"Distributions to LPs","type":"number"},"lessNetChangeInUnrealized":{"description":"Net change in unrealized (appreciation) depreciation","type":"number"},"lessNetRealizedGain":{"description":"Net realized (gain) loss on investments","type":"number"},"netCashFromFinancing":{"description":"Net cash from financing activities","type":"number"},"netCashFromOperating":{"description":"Net cash from operating activities","type":"number"},"netChangeInCash":{"description":"Net change in cash","type":"number"},"netIncreaseFromOperations":{"description":"Net increase (decrease) in partners' capital from operations","type":"number"},"proceedsFromExits":{"description":"Proceeds from exits","type":"number"},"purchasesOfInvestments":{"description":"Purchases of investments. Includes recycled proceeds.","type":"number"}},"type":"object"},"label":{"type":["string","null"]},"operations":{"properties":{"managementFees":{"description":"Management fees","type":"number"},"netChangeInUnrealized":{"description":"Net change in unrealized appreciation (depreciation). Change in NAV less change in cost held.","type":"number"},"netGainOnInvestments":{"description":"Net gain (loss) on investments","type":"number"},"netIncreaseFromOperations":{"description":"Net increase (decrease) in partners' capital from operations","type":"number"},"netInvestmentIncome":{"description":"Net investment income (loss). No interest or dividend income is modeled.","type":"number"},"netRealizedGain":{"description":"Net realized gain (loss)","type":"number"},"operationalExpenseLines":{"description":"The operational expense lines, when the model itemizes them.","items":{"properties":{"amount":{"type":"number"},"label":{"type":"string"}},"type":"object"},"type":"array"},"operationalExpenses":{"description":"Operational expenses. Run through Q1 of the fund year after the fund life ends.","type":"number"},"organizationalExpenses":{"description":"Organizational expenses","type":"number"},"partnershipExpenseLines":{"description":"The partnership expense lines, when the model itemizes them.","items":{"properties":{"amount":{"type":"number"},"label":{"type":"string"}},"type":"object"},"type":"array"},"partnershipExpenses":{"description":"Partnership expenses","type":"number"},"realizedGainOnExits":{"description":"Realized gain on exits. Proceeds less the cost they release.","type":"number"},"realizedLossOnWriteoffs":{"description":"Realized loss on writeoffs","type":"number"},"totalExpenses":{"description":"Total expenses","type":"number"}},"type":"object"},"periodEnd":{"type":"string"},"periodStart":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"waterfall":{"description":"Lifetime totals of the waterfall as run through the periods: return of capital, preferred return (accrued on the dates capital was called), catchup, carry by tier.","type":"object"}},"required":["granularity","irr","periods","statements"],"type":"object"},"FundResult":{"properties":{"calledCapital":{"$ref":"#/definitions/LineTotals"},"committedCapital":{"$ref":"#/definitions/LineTotals"},"distributions":{"$ref":"#/definitions/LineTotals"},"dpi":{"type":"number"},"grossIRR":{"$ref":"#/definitions/LineTotals"},"grossMultiple":{"$ref":"#/definitions/LineTotals"},"investedCapital":{"$ref":"#/definitions/LineTotals"},"managementFees":{"$ref":"#/definitions/LineTotals"},"netIRR":{"$ref":"#/definitions/LineTotals"},"netMultiple":{"$ref":"#/definitions/LineTotals"},"partnershipExpenses":{"$ref":"#/definitions/LineTotals"},"pic":{"type":"number"},"proceeds":{"$ref":"#/definitions/LineTotals"},"rvpi":{"type":"number"},"tiers":{"items":{"type":"object"},"type":"array"},"tvpi":{"type":"number"},"weightedHoldPeriodYears":{"type":"number"}},"required":["committedCapital","calledCapital","managementFees","partnershipExpenses","investedCapital","proceeds","distributions","grossMultiple","netMultiple","grossIRR","netIRR","pic","dpi","rvpi","tvpi","weightedHoldPeriodYears"],"type":"object"},"FundResultResponse":{"properties":{"data":{"properties":{"detail":{"$ref":"#/definitions/FundDetail"},"result":{"$ref":"#/definitions/FundResult"},"workbook":{"description":"Returned when the request sets format to \"xlsx\" or \"xlsx_url\": the live Excel workbook the web tool exports, with every number a formula back to its Get Started inputs. For \"xlsx\", decode data from base64 and save it as filename. For \"xlsx_url\", download it from url before expiresAt (24 hours).","properties":{"contentType":{"type":"string"},"data":{"type":"string"},"encoding":{"enum":["base64"],"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"filename":{"type":"string"},"url":{"format":"uri","type":"string"}},"required":["filename","contentType"],"type":"object"}},"required":["result"],"type":"object"},"meta":{"properties":{"keyName":{"type":"string"}},"type":"object"}},"type":"object"},"FundSeries":{"properties":{"gp":{"items":{"type":"number"},"type":"array"},"lp":{"items":{"type":"number"},"type":"array"},"total":{"items":{"type":"number"},"type":"array"}},"required":["total","lp","gp"],"type":"object"},"LineTotals":{"properties":{"gp":{"type":"number"},"lp":{"type":"number"},"total":{"type":"number"}},"required":["total","lp","gp"],"type":"object"},"ManualIssuanceEvent":{"description":"Escape hatch: issue exact shares for custom arrangements.","properties":{"issuances":{"items":{"properties":{"class":{"enum":["common","preferred","option-pool","warrant"]},"countMode":{"description":"Defaults to \"shares\".","enum":["shares","percent"]},"id":{"type":"string"},"issuePrice":{"type":"number"},"kind":{"enum":["founder","employee","investor","pool"]},"name":{"type":"string"},"pctBasis":{"description":"Defaults to \"fully-diluted\".","enum":["fully-diluted","issued"]},"shares":{"type":"number"},"targetPct":{"description":"0..1, used when countMode=\"percent\".","type":"number"}},"required":["id","name","kind","class","shares"],"type":"object"},"type":"array"},"label":{"type":"string"},"type":{"const":"manual_issuance"}},"required":["type","label","issuances"],"type":"object"},"MonthlyUsage":{"properties":{"failed":{"type":"integer"},"month":{"pattern":"^[0-9]{4}-[0-9]{2}$","type":"string"},"product":{"enum":["cap-table","fund-economics"],"type":"string"},"succeeded":{"type":"integer"}},"required":["month","product","succeeded","failed"],"type":"object"},"OptionGrantEvent":{"description":"Grant options to people from one pool (fully-diluted-neutral).","properties":{"grants":{"items":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"shares":{"type":"number"}},"required":["id","name","shares"],"type":"object"},"type":"array"},"label":{"type":"string"},"poolId":{"description":"Pool id to grant from; omit to draw the common pool.","type":"string"},"type":{"const":"option_grant"}},"required":["type","label","grants"],"type":"object"},"OptionPoolEvent":{"description":"Create or expand an option pool (shares authorized, not granted).","properties":{"countMode":{"description":"Defaults to \"shares\".","enum":["shares","percent"]},"id":{"description":"Pool id, so an option_grant can name which pool it draws from.","type":"string"},"label":{"type":"string"},"shares":{"type":"number"},"strikePrice":{"type":"number"},"targetPct":{"description":"0..1 of post-event fully diluted, used when countMode=\"percent\".","type":"number"},"type":{"const":"option_pool"}},"required":["type","label","shares"],"type":"object"},"PricedRoundEvent":{"description":"A priced equity round: new money buys newly issued preferred.","properties":{"investments":{"items":{"properties":{"amount":{"type":"number"},"antiDilution":{"enum":["weighted-average","full-ratchet"]},"antiDilutionMethod":{"description":"Defaults to \"conversion-ratio\".","enum":["conversion-ratio","new-shares"]},"id":{"type":"string"},"name":{"type":"string"},"proRata":{"description":"If true, amount is back-solved to hold pre-round ownership; match by id.","type":"boolean"}},"required":["id","name","amount"],"type":"object"},"type":"array"},"label":{"type":"string"},"poolMode":{"description":"Legacy. Prefer pools[].","enum":["pre","post","custom"]},"poolPostPct":{"description":"Legacy. Prefer pools[].","type":"number"},"pools":{"description":"Option pool top-ups for the round (preferred over the legacy targetPoolPct trio).","items":{"properties":{"countMode":{"description":"Defaults to \"percent\".","enum":["shares","percent"]},"label":{"type":"string"},"mode":{"description":"\"pre\" dilutes existing only; \"post\" dilutes new money too.","enum":["pre","post"]},"pct":{"description":"0..1 of post-money fully diluted, when countMode=\"percent\".","type":"number"},"poolId":{"description":"Set to track this pool separately (its own cap-table row).","type":"string"},"shares":{"type":"number"}},"required":["mode"],"type":"object"},"type":"array"},"preMoneyValuation":{"type":"number"},"targetPoolPct":{"description":"Legacy. Prefer pools[].","type":"number"},"type":{"const":"priced_round"}},"required":["type","label","preMoneyValuation","investments"],"type":"object"},"ProductAccess":{"properties":{"active":{"description":"Active paid term; use state/freeRemaining for trial access.","type":"boolean"},"allowance":{"const":6000,"type":"integer"},"freeRemaining":{"minimum":0,"type":"integer"},"name":{"type":"string"},"nextAction":{"type":"string"},"paidExpiration":{"type":["string","null"]},"paidRemaining":{"minimum":0,"type":"integer"},"period":{"anyOf":[{"type":"null"},{"$ref":"#/definitions/UsagePeriod"}]},"priceUsd":{"const":20,"type":"number"},"product":{"enum":["cap-table","fund-economics"],"type":"string"},"remaining":{"description":"Calculations this account can run now: the paid balance while a paid period is active, otherwise the lifetime free balance.","minimum":0,"type":"integer"},"source":{"enum":["free","paid"],"type":"string"},"state":{"enum":["free_available","free_exhausted","paid_active","paid_expired","paid_quota_exhausted"],"type":"string"}},"required":["product","name","priceUsd","allowance","period","remaining","active"],"type":"object"},"ResultResponse":{"properties":{"data":{"properties":{"result":{"oneOf":[{"$ref":"#/definitions/WaterfallResult"},{"$ref":"#/definitions/FundResult"}]}},"type":"object"},"meta":{"properties":{"keyName":{"type":"string"}},"type":"object"}},"type":"object"},"SecondarySaleEvent":{"description":"Transfer existing shares from one holder to another.","properties":{"class":{"description":"Defaults to \"common\".","enum":["common","preferred","option-pool","warrant"]},"fromId":{"type":"string"},"label":{"type":"string"},"round":{"description":"Which series the shares come from (e.g. \"Series A\").","type":"string"},"shares":{"type":"number"},"toId":{"type":"string"},"toName":{"type":"string"},"type":{"const":"secondary_sale"}},"required":["type","label","fromId","toId","toName","shares"],"type":"object"},"UsagePeriod":{"properties":{"allowance":{"type":"integer"},"consumed":{"type":"integer"},"enabled":{"type":"boolean"},"id":{"type":"string"},"period_end":{"format":"date-time","type":"string"},"period_start":{"format":"date-time","type":"string"},"reserved":{"type":"integer"}},"required":["id","period_start","period_end","allowance","consumed","reserved","enabled"],"type":"object"},"WarrantRoundEvent":{"description":"Issue warrants (right to buy shares at a set price); counts toward fully diluted now.","properties":{"label":{"type":"string"},"type":{"const":"warrant_round"},"warrants":{"items":{"properties":{"countMode":{"enum":["shares","value"]},"id":{"type":"string"},"name":{"type":"string"},"parValue":{"type":"number"},"priceDiscount":{"description":"0..1 discount on the source round price.","type":"number"},"priceFromRound":{"description":"Source round label to price off, when variable.","type":"string"},"purchaseClass":{"enum":["common","preferred"]},"purchasePrice":{"type":"number"},"purchaseRound":{"description":"For a preferred warrant, the series it targets.","type":"string"},"shares":{"description":"When countMode=\"shares\".","type":"number"},"totalValue":{"description":"When countMode=\"value\": shares = totalValue / purchasePrice.","type":"number"}},"required":["id","name","purchaseClass","countMode"],"type":"object"},"type":"array"}},"required":["type","label","warrants"],"type":"object"},"WaterfallComputeRequest":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"exitValuation":{"maximum":1000000000000000,"minimum":0,"type":"number"},"model":{"additionalProperties":false,"properties":{"common":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"invested":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares"],"type":"object"},"maxItems":500,"type":"array"},"convertibles":{"items":{"additionalProperties":false,"properties":{"accruedInterest":{"maximum":1000000000000000,"minimum":0,"type":"number"},"cap":{"exclusiveMinimum":0,"maximum":1000000000000000,"minimum":0,"type":"number"},"cashOutAs":{"enum":["debt","equity"],"type":"string"},"cashOutSeniority":{"enum":["senior","pari-passu"],"type":"string"},"discount":{"maximum":1,"minimum":0,"type":"number"},"id":{"maxLength":200,"minLength":1,"type":"string"},"kind":{"enum":["pre-safe","post-safe","note"],"type":"string"},"name":{"maxLength":200,"type":"string"},"premiumMultiple":{"maximum":1000000000000000,"minimum":0,"type":"number"},"principal":{"maximum":1000000000000000,"minimum":0,"type":"number"},"seniority":{"type":"number"}},"required":["id","name","kind","principal"],"type":"object"},"maxItems":100,"type":"array"},"debt":{"maximum":1000000000000000,"minimum":0,"type":"number"},"options":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"strike":{"maximum":1000000000000000,"minimum":0,"type":"number"},"vestedFraction":{"maximum":1,"minimum":0,"type":"number"}},"required":["id","name","shares","strike"],"type":"object"},"maxItems":500,"type":"array"},"preferred":{"items":{"additionalProperties":false,"properties":{"conversionRatio":{"exclusiveMinimum":0,"maximum":1000000000000000,"minimum":0,"type":"number"},"dividendCumulative":{"type":"boolean"},"dividendRate":{"maximum":1,"minimum":0,"type":"number"},"dividendStart":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"holders":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"invested":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares","invested"],"type":"object"},"maxItems":500,"type":"array"},"id":{"maxLength":200,"minLength":1,"type":"string"},"investmentDate":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"multiple":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"participation":{"enum":["none","full","capped"],"type":"string"},"participationCap":{"maximum":1000000000000000,"minimum":0,"type":"number"},"seniority":{"type":"number"}},"required":["id","name","holders","seniority"],"type":"object"},"maxItems":20,"type":"array"},"transactionExpenses":{"maximum":1000000000000000,"minimum":0,"type":"number"},"unissuedPool":{"additionalProperties":false,"properties":{"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"treatment":{"const":"cancel","type":"string"}},"required":["shares"],"type":"object"},"warrants":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"strike":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares","strike"],"type":"object"},"maxItems":500,"type":"array"}},"required":["common","preferred"],"type":"object"}},"required":["exitValuation","model"],"type":"object"},"WaterfallResult":{"properties":{"classes":{"items":{"type":"object"},"type":"array"},"converged":{"type":"boolean"},"convertibles":{"items":{"type":"object"},"type":"array"},"distributable":{"type":"number"},"exitValuation":{"type":"number"},"holders":{"items":{"type":"object"},"type":"array"},"iterations":{"type":"integer"},"perShare":{"items":{"type":"object"},"type":"array"},"series":{"items":{"type":"object"},"type":"array"}},"required":["exitValuation","distributable","classes","series","convertibles","holders","perShare","iterations","converged"],"type":"object"}},"properties":{"events":{"items":{"description":"One cap-table event, discriminated by `type`. Pass events in chronological order.","discriminator":{"mapping":{"common_issuance":"#/components/schemas/CommonIssuanceEvent","convertible_round":"#/components/schemas/ConvertibleRoundEvent","manual_issuance":"#/components/schemas/ManualIssuanceEvent","option_grant":"#/components/schemas/OptionGrantEvent","option_pool":"#/components/schemas/OptionPoolEvent","priced_round":"#/components/schemas/PricedRoundEvent","secondary_sale":"#/components/schemas/SecondarySaleEvent","warrant_round":"#/components/schemas/WarrantRoundEvent"},"propertyName":"type"},"oneOf":[{"$ref":"#/definitions/CommonIssuanceEvent"},{"$ref":"#/definitions/OptionPoolEvent"},{"$ref":"#/definitions/SecondarySaleEvent"},{"$ref":"#/definitions/OptionGrantEvent"},{"$ref":"#/definitions/ManualIssuanceEvent"},{"$ref":"#/definitions/ConvertibleRoundEvent"},{"$ref":"#/definitions/WarrantRoundEvent"},{"$ref":"#/definitions/PricedRoundEvent"}]},"maxItems":200,"type":"array"},"idempotency_key":{"description":"Optional retry key; reuse only with identical input.","type":"string"}},"required":["events"],"type":"object"},"name":"cap_table_compute"},{"description":"Reports what's worth knowing today about the models saved to the user's Hemrock account: for each of the ten most recently edited cap tables, exit waterfalls and fund models, notes where a number has crossed a line worth a look (a thin option pool, unconverted SAFEs, preferences taking most of an exit, a heavy fee load, a fund life past 12 years, a model untouched for 90 days), each with the number in it. Also lists live workshops in the next few weeks and the services that fit what's saved. Call it when the user asks how their models look, or on a scheduled check-in or morning brief. Lead with flagged notes; if nothing is flagged, say little or nothing. Free and read-only. Needs a signed-in connection.","inputSchema":{"properties":{},"type":"object"},"name":"check_in"},{"description":"Saves a new model to the user's account so they can open it in the browser builder and keep working on it. A fund starts from Hemrock's defaults with your inputs merged on; a cap table needs events; a waterfall needs a model and options.exitValuation. Use it when the user wants to keep a model you built in chat, and give them the url. Free: uses no calculations. Needs a signed-in connection.","inputSchema":{"properties":{"cashFlows":{"description":"Fund only: show the Forecast and Statements tabs in the builder.","type":"boolean"},"events":{"description":"Cap table only: the full list of financing events, in order, the same shape cap_table_compute takes. Replaces the saved list, so read the model first and send back the whole list with your change.","items":{"type":"object"},"type":"array"},"features":{"description":"Fund only: features to switch on or off, keyed capTable, fees, waterfall, recycling, lpClasses, mgmtCo or followOn, with the same shapes as fund_economics_compute features. An object switches the feature on with that config; false switches it off and keeps its config. The user switches these on deliberately, so only change one they asked about.","type":"object"},"fundName":{"description":"Fund only: the fund name used in the model and its workbook.","type":"string"},"inputs":{"description":"Fund only: fund inputs to change, the same fields as fund_economics_compute inputs. Merged onto the saved inputs, so send only what changes.","type":"object"},"kind":{"description":"\"cap-table\" (Cap Table builder), \"waterfall\" (Exit Waterfall builder) or \"fund\" (the web Venture Capital Model).","enum":["cap-table","waterfall","fund"],"type":"string"},"model":{"description":"Waterfall only: the cap stack, the same shape as exit_waterfall_compute's model. Replaces the saved one.","type":"object"},"name":{"description":"The model name shown in the builder. Owner only.","type":"string"},"options":{"description":"Cap table: { wholeShares, pricePrecision }. Waterfall: { exitValuation, exitDate, wholeShares, pricePrecision }. Merged onto the saved options.","type":"object"}},"required":["kind"],"type":"object"},"name":"create_saved_model"},{"description":"Use whenever the user asks what each holder gets at an exit, acquisition or liquidation: liquidation preferences, participating vs non-participating preferred, participation caps, seniority, whether a series converts, options and warrants in or out of the money. Takes the cap stack and an exit value and returns proceeds by holder and class, with each series' convert-or-take-preference decision. Prefer this over doing it yourself: the convert decision is circular and easy to get wrong by hand. Free without an account for a few runs a day; signed in, lifetime free credits or paid access, sharing the Cap Table & Exit Waterfall allowance ($20/year, 6,000 calculations). If the result contains action_required (not signed in, no purchase, allowance used), relay it to the user with its links and offer to retry. Never skip the calculation silently.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"definitions":{"AccessResponse":{"properties":{"data":{"properties":{"daily":{"items":{"$ref":"#/definitions/DailyUsage"},"type":"array"},"monthly":{"items":{"$ref":"#/definitions/MonthlyUsage"},"type":"array"},"periods":{"items":{"allOf":[{"$ref":"#/definitions/UsagePeriod"},{"properties":{"product":{"enum":["cap-table","fund-economics"],"type":"string"}},"required":["product"],"type":"object"}]},"type":"array"},"products":{"items":{"$ref":"#/definitions/ProductAccess"},"type":"array"}},"required":["products","daily"],"type":"object"}},"type":"object"},"CapTableSnapshot":{"properties":{"holdings":{"items":{"type":"object"},"type":"array"},"label":{"type":"string"},"outstandingConvertibles":{"items":{"type":"object"},"type":"array"},"ownership":{"items":{"type":"object"},"type":"array"},"pricePerShare":{"type":"number"},"roundDetail":{"type":"object"},"totalShares":{"type":"number"}},"required":["label","holdings","totalShares","ownership","outstandingConvertibles"],"type":"object"},"CommonIssuanceEvent":{"description":"Issue common stock (founders, employees).","properties":{"grants":{"items":{"properties":{"id":{"type":"string"},"kind":{"enum":["founder","employee"]},"name":{"type":"string"},"shares":{"type":"number"}},"required":["id","name","kind","shares"],"type":"object"},"type":"array"},"label":{"type":"string"},"type":{"const":"common_issuance"}},"required":["type","label","grants"],"type":"object"},"ComputeRequest":{"additionalProperties":false,"properties":{"events":{"items":{"description":"One cap-table event, discriminated by `type`. Pass events in chronological order.","discriminator":{"mapping":{"common_issuance":"#/components/schemas/CommonIssuanceEvent","convertible_round":"#/components/schemas/ConvertibleRoundEvent","manual_issuance":"#/components/schemas/ManualIssuanceEvent","option_grant":"#/components/schemas/OptionGrantEvent","option_pool":"#/components/schemas/OptionPoolEvent","priced_round":"#/components/schemas/PricedRoundEvent","secondary_sale":"#/components/schemas/SecondarySaleEvent","warrant_round":"#/components/schemas/WarrantRoundEvent"},"propertyName":"type"},"oneOf":[{"$ref":"#/definitions/CommonIssuanceEvent"},{"$ref":"#/definitions/OptionPoolEvent"},{"$ref":"#/definitions/SecondarySaleEvent"},{"$ref":"#/definitions/OptionGrantEvent"},{"$ref":"#/definitions/ManualIssuanceEvent"},{"$ref":"#/definitions/ConvertibleRoundEvent"},{"$ref":"#/definitions/WarrantRoundEvent"},{"$ref":"#/definitions/PricedRoundEvent"}]},"maxItems":200,"type":"array"}},"required":["events"],"type":"object"},"ComputeResponse":{"properties":{"data":{"properties":{"final":{"$ref":"#/definitions/CapTableSnapshot"},"snapshots":{"description":"One snapshot per event, in order.","items":{"$ref":"#/definitions/CapTableSnapshot"},"type":"array"}},"type":"object"},"meta":{"properties":{"keyName":{"type":"string"}},"type":"object"}},"type":"object"},"ConvertibleRoundEvent":{"description":"Issue SAFEs or notes; they convert to preferred at the next priced round.","properties":{"convertibles":{"items":{"properties":{"accruedInterest":{"type":"number"},"capType":{"enum":["pre-money","post-money","post-money-fixed","post-money-fixed-after"]},"conversionDate":{"description":"ISO date. Notes only.","type":"string"},"dilutionMode":{"description":"Defaults to \"existing-only\".","enum":["existing-only","all"]},"discount":{"description":"0..1.","type":"number"},"id":{"type":"string"},"interestRate":{"description":"Annual fraction (0.05 = 5%). Notes only.","type":"number"},"investmentDate":{"description":"ISO date. Notes only.","type":"string"},"kind":{"enum":["safe","note"]},"mfn":{"type":"boolean"},"name":{"type":"string"},"principal":{"type":"number"},"valuationCap":{"type":"number"}},"required":["id","name","kind","principal"],"type":"object"},"type":"array"},"label":{"type":"string"},"type":{"const":"convertible_round"}},"required":["type","label","convertibles"],"type":"object"},"DailyUsage":{"properties":{"day":{"format":"date","type":"string"},"endpoint":{"type":"string"},"failed":{"type":"integer"},"product":{"enum":["cap-table","fund-economics"],"type":"string"},"source":{"type":"string"},"succeeded":{"type":"integer"}},"required":["day","product","endpoint","source","succeeded","failed"],"type":"object"},"Error":{"properties":{"error":{"properties":{"code":{"enum":["unauthorized","payment_required","validation_failed","engine_error","quota_exhausted","rate_limited","idempotency_conflict","service_unavailable","method_not_allowed","internal_error"],"type":"string"},"details":{},"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","retryable"],"type":"object"}},"type":"object"},"FundComputeRequest":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"features":{"additionalProperties":false,"properties":{"capTable":{"additionalProperties":false,"properties":{"bridge":{"additionalProperties":false,"properties":{"expectedAgeAtRound":{"items":{"maximum":100,"minimum":0,"type":"number"},"maxItems":21,"type":"array"},"numInvestmentsTarget":{"maximum":10000,"minimum":0,"type":"number"},"stageName":{"maxLength":200,"type":"string"},"writeoffHoldYears":{"maximum":100,"minimum":0,"type":"number"},"yearsBetweenRounds":{"maximum":100,"minimum":0,"type":"number"}},"required":["numInvestmentsTarget"],"type":"object"},"inputs":{"additionalProperties":false,"properties":{"defaultExitMultiple":{"minimum":0,"type":"number"},"defaultGraduationRate":{"maximum":100,"minimum":0,"type":"number"},"defaultValuationIncrease":{"minimum":0,"type":"number"},"defaultWriteoffRate":{"maximum":100,"minimum":0,"type":"number"},"dilutionFromOptionPoolsPerRound":{"maximum":100,"minimum":0,"type":"number"},"dilutionPerRound":{"maximum":100,"minimum":0,"type":"number"},"exitMultipleOnLastRound":{"minimum":0,"type":"number"},"followOnRounds":{"items":{"additionalProperties":false,"properties":{"dilutionFromRound":{"maximum":100,"minimum":0,"type":"number"},"newOptionPoolInRound":{"maximum":100,"minimum":0,"type":"number"},"pctCompaniesFollowOn":{"maximum":100,"minimum":0,"type":"number"},"valuationIncrease":{"minimum":0,"type":"number"}},"type":"object"},"maxItems":20,"type":"array"},"newInvestmentCheckSize":{"minimum":0,"type":"number"},"numFollowOnRounds":{"maximum":20,"minimum":0,"type":"integer"},"numRoundsFollowOn":{"maximum":20,"minimum":0,"type":"integer"},"ownershipOutsideInvestment":{"items":{"maximum":100,"minimum":0,"type":"number"},"maxItems":21,"type":"array"},"pctCompaniesFollowOn":{"maximum":100,"minimum":0,"type":"number"},"postmoneyValuation":{"exclusiveMinimum":0,"type":"number"},"roundLabels":{"items":{"maxLength":200,"type":"string"},"maxItems":21,"type":"array"},"roundOutcomes":{"items":{"additionalProperties":false,"properties":{"exitMultiple":{"minimum":0,"type":"number"},"graduationRate":{"maximum":100,"minimum":0,"type":"number"},"writeoffRate":{"maximum":100,"minimum":0,"type":"number"}},"type":"object"},"maxItems":21,"type":"array"}},"required":["newInvestmentCheckSize","postmoneyValuation","numFollowOnRounds","numRoundsFollowOn","defaultValuationIncrease","dilutionPerRound","dilutionFromOptionPoolsPerRound","pctCompaniesFollowOn","defaultGraduationRate","defaultWriteoffRate","defaultExitMultiple"],"type":"object"}},"required":["inputs","bridge"],"type":"object"},"deals":{"description":"Build the portfolio from specific deals instead of entry stages and return tiers (and instead of capTable when both are sent). Each deal has its checks, each in a quarter from first close (1-based), and one exit in a quarter, at a multiple of everything invested in the deal (0 is a write-off) or for proceeds in money. Invested capital is the sum of the checks and called capital is solved from it; the fund life runs to the last exit, capped by maxFundLifeYears; each deal comes back as a row of result.tiers. Recycling keeps back the earliest proceeds, up to recycledCapitalPct of committed, only while later checks can use them. Send dealsMix true to mix the methods instead.","items":{"additionalProperties":false,"properties":{"exit":{"additionalProperties":false,"properties":{"multiple":{"description":"Of everything invested in the deal. 0 is a write-off.","maximum":10000,"minimum":0,"type":"number"},"proceeds":{"description":"Exit proceeds in money, instead of a multiple.","minimum":0,"type":"number"},"quarter":{"maximum":400,"minimum":1,"type":"integer"}},"required":["quarter"],"type":"object"},"investments":{"description":"The checks the fund writes into the deal: the initial check, then any follow-ons.","items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"quarter":{"description":"Quarter from first close, 1-based.","maximum":400,"minimum":1,"type":"integer"}},"required":["quarter","amount"],"type":"object"},"maxItems":40,"minItems":1,"type":"array"},"name":{"maxLength":200,"minLength":1,"type":"string"}},"required":["name","investments","exit"],"type":"object"},"maxItems":500,"minItems":1,"type":"array"},"dealsMix":{"description":"With deals: the deals come first, and the capital they leave (committed less fees and expenses, plus recycling, less the checks) is invested through the entry stages and return tiers, or capTable when sent, as it would be without deals. Recycling then goes to the stages, the fund life is the later of the deals' and the stages', and result.tiers lists the deals and then the tiers.","type":"boolean"},"fees":{"additionalProperties":false,"properties":{"base":{"enum":["committed","nav","aum","step-down"],"type":"string"},"basesByYear":{"items":{"enum":["committed","nav","aum","step-down"],"type":"string"},"maxItems":100,"type":"array"},"feeYears":{"maximum":100,"minimum":0,"type":"number"},"ratePct":{"maximum":1,"minimum":0,"type":"number"},"schedule":{"additionalProperties":false,"description":"The fee as an LPA states it, on the dated schedule: each rate from a point in fund years (0 = first close; 5.5 starts halfway through year 6 and cuts the period it lands in), charged on committed capital, invested cost not yet realized, or NAV, with organizational expenses above organizationalExpenseCap offsetting the fee. Runs for feeYears; base, ratePct, yearlyRateSchedule and basesByYear are ignored when it is set.","properties":{"frequency":{"enum":["quarterly","semiannual","annual"],"type":"string"},"organizationalExpenseCap":{"minimum":0,"type":"number"},"steps":{"items":{"additionalProperties":false,"properties":{"basis":{"enum":["committed","invested","nav"],"type":"string"},"fromYear":{"maximum":100,"minimum":0,"type":"number"},"rate":{"maximum":1,"minimum":0,"type":"number"}},"required":["fromYear","rate","basis"],"type":"object"},"maxItems":20,"minItems":1,"type":"array"}},"required":["steps"],"type":"object"},"stepDownAfterYears":{"maximum":100,"minimum":0,"type":"number"},"yearlyRateSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":100,"type":"array"}},"required":["base"],"type":"object"},"followOn":{"additionalProperties":false,"properties":{"offsetQuarters":{"maximum":40,"minimum":0,"type":"integer"}},"required":["offsetQuarters"],"type":"object"},"lpClasses":{"items":{"additionalProperties":false,"properties":{"callSchedule":{"additionalProperties":false,"description":"Call this class on its own schedule instead of as the fund needs cash. pct is a share of the class commitment per fund year (called in the year's first quarter) or per quarter. Whatever the entries leave is called when the fund needs it.","properties":{"frequency":{"enum":["year","quarter"],"type":"string"},"pct":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":80,"type":"array"}},"required":["frequency","pct"],"type":"object"},"commitment":{"minimum":0,"type":"number"},"feeOverrides":{"additionalProperties":false,"properties":{"basesByYear":{"items":{"enum":["committed","nav","aum","step-down"],"type":"string"},"maxItems":100,"type":"array"},"ratePct":{"maximum":1,"minimum":0,"type":"number"},"yearlyRateSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":100,"type":"array"}},"type":"object"},"isFirstLoss":{"type":"boolean"},"isRemainder":{"type":"boolean"},"name":{"maxLength":200,"minLength":1,"type":"string"},"overrides":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"carryTiers":{"items":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"catchup":{"type":"boolean"},"irrThreshold":{"description":"Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.","maximum":1,"minimum":0,"type":"number"},"moicThreshold":{"minimum":0,"type":"number"}},"required":["moicThreshold","carryPct"],"type":"object"},"maxItems":20,"type":"array"},"catchupGpShare":{"maximum":1,"minimum":0,"type":"number"},"catchupPct":{"maximum":1,"minimum":0,"type":"number"},"preferredReturnMode":{"enum":["none","irr","multiple"],"type":"string"},"preferredReturnMultiple":{"maximum":100,"minimum":0,"type":"number"},"preferredReturnRate":{"maximum":1,"minimum":0,"type":"number"}},"type":"object"}},"required":["name","commitment"],"type":"object"},"maxItems":50,"minItems":1,"type":"array"},"mgmtCo":{"additionalProperties":false,"properties":{"expenses":{"items":{"additionalProperties":false,"properties":{"annualCost":{"minimum":0,"type":"number"},"growthRatePerYear":{"maximum":10,"minimum":-1,"type":"number"},"label":{"maxLength":200,"type":"string"},"yearsActive":{"items":{"maximum":100,"minimum":1,"type":"integer"},"maxItems":100,"type":"array"}},"required":["label","annualCost"],"type":"object"},"maxItems":100,"type":"array"},"oneTimeFormationCost":{"minimum":0,"type":"number"},"startingCash":{"minimum":0,"type":"number"}},"required":["expenses"],"type":"object"},"recycling":{"additionalProperties":false,"properties":{"defaultTreatment":{"enum":["retained","deemed"],"type":"string"},"schedule":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"quarter":{"maximum":400,"minimum":1,"type":"integer"},"treatment":{"enum":["retained","deemed"],"type":"string"}},"required":["quarter"],"type":"object"},"maxItems":400,"type":"array"}},"type":"object"},"waterfall":{"additionalProperties":false,"properties":{"basis":{"description":"Whole fund (the default, European) or deal by deal (American): return of capital owes only the capital in deals exited or written off so far, so carry can be paid before the fund returns all capital. The clawback settles on the whole fund.","enum":["whole-fund","deal-by-deal"],"type":"string"},"carryTiers":{"items":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"catchup":{"type":"boolean"},"irrThreshold":{"description":"Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.","maximum":1,"minimum":0,"type":"number"},"moicThreshold":{"minimum":0,"type":"number"}},"required":["moicThreshold","carryPct"],"type":"object"},"maxItems":20,"type":"array"},"catchupGpShare":{"maximum":1,"minimum":0,"type":"number"},"catchupMeasure":{"description":"GP catchup: to the carry share of the pref paid (the default), or until the GP holds the carry share of all profit paid. They differ when the GP shares the catchup with LPs.","enum":["preferred","profit"],"type":"string"},"catchupPct":{"maximum":1,"minimum":0,"type":"number"},"clawback":{"type":"boolean"},"preferredReturnBase":{"description":"IRR pref: accrue on capital not yet returned plus unpaid pref (the default), or on each contribution from its date whatever comes back.","enum":["unreturned","contributed"],"type":"string"},"preferredReturnCompounding":{"description":"IRR pref: compound annually (the default) or simple interest.","enum":["annual","none"],"type":"string"},"preferredReturnMode":{"enum":["none","irr","multiple"],"type":"string"},"preferredReturnMultiple":{"maximum":100,"minimum":0,"type":"number"},"preferredReturnRate":{"maximum":1,"minimum":0,"type":"number"}},"type":"object"}},"type":"object"},"firstCloseDate":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"format":{"enum":["json","xlsx","xlsx_url"],"type":"string"},"fundName":{"maxLength":200,"type":"string"},"granularity":{"enum":["year","quarter","none"],"type":"string"},"inputs":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"committedCapital":{"exclusiveMinimum":0,"type":"number"},"fundOperationsYears":{"exclusiveMinimum":0,"type":"number"},"gpCommitBearsCarry":{"type":"boolean"},"gpCommitCountedTowardInvested":{"type":"boolean"},"gpCommitPct":{"maximum":1,"minimum":0,"type":"number"},"maxFundLifeYears":{"exclusiveMinimum":0,"type":"number"},"mgmtFeePct":{"maximum":1,"minimum":0,"type":"number"},"mgmtFeeSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"type":"array"},"mgmtFeesPeriodYears":{"exclusiveMinimum":0,"type":"number"},"navMarkupYears":{"maximum":100,"minimum":0,"type":"number"},"newInvestmentPeriodYears":{"exclusiveMinimum":0,"type":"number"},"operationalExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"},"quarterly":{"items":[{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"}],"maxItems":4,"minItems":4,"type":"array"}},"required":["label","amount"],"type":"object"},"type":"array"},"operationalExpensesAnnual":{"minimum":0,"type":"number"},"operationalExpensesBreakout":{"additionalProperties":false,"properties":{"audit":{"minimum":0,"type":"number"},"fundAdmin":{"minimum":0,"type":"number"},"other":{"minimum":0,"type":"number"},"tax":{"minimum":0,"type":"number"}},"required":["fundAdmin","tax","audit","other"],"type":"object"},"organizationalExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"}},"required":["label","amount"],"type":"object"},"type":"array"},"organizationalExpenses":{"minimum":0,"type":"number"},"partnershipExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"},"quarterly":{"items":[{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"}],"maxItems":4,"minItems":4,"type":"array"}},"required":["label","amount"],"type":"object"},"type":"array"},"partnershipExpensesAnnual":{"minimum":0,"type":"number"},"portfolio":{"additionalProperties":false,"properties":{"avgCheckSizeFollow":{"minimum":0,"type":"number"},"avgCheckSizeNew":{"minimum":0,"type":"number"},"entryStages":{"items":{"additionalProperties":false,"properties":{"avgCheckSize":{"minimum":0,"type":"number"},"followOnChecks":{"items":{"additionalProperties":false,"properties":{"avgCheckSize":{"minimum":0,"type":"number"},"label":{"type":"string"},"pctOfReserve":{"maximum":1,"minimum":0,"type":"number"}},"required":["avgCheckSize"],"type":"object"},"type":"array"},"initialCheckLabel":{"type":"string"},"name":{"type":"string"},"numInvestments":{"minimum":0,"type":"number"},"pctAllocation":{"maximum":1,"minimum":0,"type":"number"},"reserveRatio":{"maximum":1,"minimum":0,"type":"number"}},"required":["name","numInvestments","avgCheckSize"],"type":"object"},"type":"array"},"followPct":{"maximum":1,"minimum":0,"type":"number"},"newPct":{"maximum":1,"minimum":0,"type":"number"}},"required":["newPct","followPct","avgCheckSizeNew","avgCheckSizeFollow"],"type":"object"},"recycledCapitalPct":{"maximum":1,"minimum":0,"type":"number"},"returnTiers":{"items":{"additionalProperties":false,"properties":{"holdingPeriodYears":{"minimum":0,"type":"number"},"multiple":{"minimum":0,"type":"number"},"name":{"minLength":1,"type":"string"},"numCompanies":{"minimum":0,"type":"number"},"pctOfCapital":{"maximum":1,"minimum":0,"type":"number"}},"required":["name","pctOfCapital","multiple","holdingPeriodYears"],"type":"object"},"minItems":1,"type":"array"},"solveCalledFromDeployment":{"type":"boolean"},"stageInputMode":{"enum":["pct-capital","num-companies"],"type":"string"},"targetTotalInvestments":{"minimum":0,"type":"number"},"tierFractional":{"type":"boolean"},"tierInputMode":{"enum":["pct-capital","num-companies"],"type":"string"}},"required":["committedCapital","gpCommitPct","gpCommitCountedTowardInvested","organizationalExpenses","operationalExpensesAnnual","mgmtFeePct","recycledCapitalPct","carryPct","newInvestmentPeriodYears","mgmtFeesPeriodYears","portfolio","returnTiers"],"type":"object"}},"required":["inputs"],"type":"object"},"FundDetail":{"description":"The fund over time. Returned unless the request sets granularity to \"none\". Every array in periods has one entry per label. waterfall, lpClasses and mgmtCo appear only when the request sent that feature block.","properties":{"granularity":{"enum":["year","quarter"],"type":"string"},"irr":{"description":"IRRs solved from the dated quarterly cash flows, with terminal NAV.","properties":{"grossIRR":{"type":"number"},"netIRR":{"properties":{"lp":{"type":"number"},"total":{"type":"number"}},"type":"object"}},"type":"object"},"lpClasses":{"description":"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls, distributions and netIRR (the class's IRR through each period, with its share of LP NAV as the terminal value), one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash.","type":"object"},"mgmtCo":{"type":"object"},"periods":{"properties":{"calledCapital":{"$ref":"#/definitions/FundSeries"},"carriedInterest":{"description":"GP carry paid each period, catchups included, net of the clawback.","items":{"type":"number"},"type":"array"},"distributions":{"$ref":"#/definitions/FundSeries","description":"Distributions after carry. The LP line runs through the waterfall period by period."},"dpi":{"items":{"type":"number"},"type":"array"},"gpCatchup":{"description":"GP catchup paid each period. Only with a waterfall block.","items":{"type":"number"},"type":"array"},"gpClawback":{"description":"Carry the GP returns to the LPs, in the quarter the fund ends (or its year). Return of capital covers only capital called so far, so early carry is possible; the clawback brings the GP back to its whole-fund share. Off with features.waterfall.clawback: false.","items":{"type":"number"},"type":"array"},"investedCapital":{"$ref":"#/definitions/FundSeries"},"jCurveLp":{"description":"Cumulative LP net cash flow at the end of each period.","items":{"type":"number"},"type":"array"},"labels":{"items":{"type":"string"},"type":"array"},"managementFees":{"$ref":"#/definitions/FundSeries"},"nav":{"$ref":"#/definitions/FundSeries"},"partnershipExpenses":{"$ref":"#/definitions/FundSeries"},"preferredReturn":{"description":"Preferred return paid to LPs each period. Only with a waterfall block.","items":{"type":"number"},"type":"array"},"proceeds":{"$ref":"#/definitions/FundSeries"},"recycledCapital":{"$ref":"#/definitions/FundSeries"},"recycledDeemed":{"$ref":"#/definitions/FundSeries","description":"The part of recycledCapital booked as distributed and recontributed (features.recycling treatment \"deemed\"). It is also in calledCapital and distributions; recycling that is never distributed is in neither."},"rvpi":{"items":{"type":"number"},"type":"array"},"tvpi":{"items":{"type":"number"},"type":"array"}},"required":["labels"],"type":"object"},"statements":{"properties":{"currency":{"type":"string"},"periods":{"items":{"properties":{"balanceSheet":{"properties":{"carriedInterestDistributed":{"description":"Carried interest distributed","type":"number"},"cash":{"description":"Cash","type":"number"},"checkBalances":{"description":"Check: assets less liabilities and capital. Zero when the balance sheet balances.","type":"number"},"contributedCapitalGp":{"description":"Contributed capital, GP","type":"number"},"contributedCapitalLp":{"description":"Contributed capital, LPs","type":"number"},"cumulativeNetInvestmentIncome":{"description":"Cumulative net investment income (loss)","type":"number"},"cumulativeNetRealizedGain":{"description":"Cumulative net realized gain (loss)","type":"number"},"cumulativeNetUnrealized":{"description":"Cumulative net unrealized appreciation (depreciation)","type":"number"},"distributionsGpCommit":{"description":"Distributions to the GP commit","type":"number"},"distributionsLp":{"description":"Distributions to LPs","type":"number"},"investmentsAtCost":{"description":"Investments, at cost. AUM.","type":"number"},"investmentsAtFairValue":{"description":"Investments, at fair value. NAV.","type":"number"},"totalAssets":{"description":"Total assets","type":"number"},"totalLiabilities":{"description":"Total liabilities. Expenses are paid when incurred, so nothing is accrued.","type":"number"},"totalLiabilitiesAndCapital":{"description":"Total liabilities and partners' capital","type":"number"},"totalPartnersCapital":{"description":"Total partners' capital","type":"number"},"unfundedCommitments":{"description":"Memo: unfunded commitments","type":"number"},"unrealizedAppreciation":{"description":"Unrealized appreciation (depreciation)","type":"number"}},"type":"object"},"cashFlow":{"properties":{"carriedInterestPaid":{"description":"Carried interest paid","type":"number"},"cashBeginning":{"description":"Cash, beginning of period","type":"number"},"cashEnd":{"description":"Cash, end of period","type":"number"},"checkTiesToBalanceSheet":{"description":"Check: cash less balance sheet cash. Zero when the cash flow ties to the balance sheet.","type":"number"},"contributionsGp":{"description":"Capital contributions, GP","type":"number"},"contributionsLp":{"description":"Capital contributions, LPs","type":"number"},"distributionsGpCommit":{"description":"Distributions to the GP commit","type":"number"},"distributionsLp":{"description":"Distributions to LPs","type":"number"},"lessNetChangeInUnrealized":{"description":"Net change in unrealized (appreciation) depreciation","type":"number"},"lessNetRealizedGain":{"description":"Net realized (gain) loss on investments","type":"number"},"netCashFromFinancing":{"description":"Net cash from financing activities","type":"number"},"netCashFromOperating":{"description":"Net cash from operating activities","type":"number"},"netChangeInCash":{"description":"Net change in cash","type":"number"},"netIncreaseFromOperations":{"description":"Net increase (decrease) in partners' capital from operations","type":"number"},"proceedsFromExits":{"description":"Proceeds from exits","type":"number"},"purchasesOfInvestments":{"description":"Purchases of investments. Includes recycled proceeds.","type":"number"}},"type":"object"},"label":{"type":["string","null"]},"operations":{"properties":{"managementFees":{"description":"Management fees","type":"number"},"netChangeInUnrealized":{"description":"Net change in unrealized appreciation (depreciation). Change in NAV less change in cost held.","type":"number"},"netGainOnInvestments":{"description":"Net gain (loss) on investments","type":"number"},"netIncreaseFromOperations":{"description":"Net increase (decrease) in partners' capital from operations","type":"number"},"netInvestmentIncome":{"description":"Net investment income (loss). No interest or dividend income is modeled.","type":"number"},"netRealizedGain":{"description":"Net realized gain (loss)","type":"number"},"operationalExpenseLines":{"description":"The operational expense lines, when the model itemizes them.","items":{"properties":{"amount":{"type":"number"},"label":{"type":"string"}},"type":"object"},"type":"array"},"operationalExpenses":{"description":"Operational expenses. Run through Q1 of the fund year after the fund life ends.","type":"number"},"organizationalExpenses":{"description":"Organizational expenses","type":"number"},"partnershipExpenseLines":{"description":"The partnership expense lines, when the model itemizes them.","items":{"properties":{"amount":{"type":"number"},"label":{"type":"string"}},"type":"object"},"type":"array"},"partnershipExpenses":{"description":"Partnership expenses","type":"number"},"realizedGainOnExits":{"description":"Realized gain on exits. Proceeds less the cost they release.","type":"number"},"realizedLossOnWriteoffs":{"description":"Realized loss on writeoffs","type":"number"},"totalExpenses":{"description":"Total expenses","type":"number"}},"type":"object"},"periodEnd":{"type":"string"},"periodStart":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"waterfall":{"description":"Lifetime totals of the waterfall as run through the periods: return of capital, preferred return (accrued on the dates capital was called), catchup, carry by tier.","type":"object"}},"required":["granularity","irr","periods","statements"],"type":"object"},"FundResult":{"properties":{"calledCapital":{"$ref":"#/definitions/LineTotals"},"committedCapital":{"$ref":"#/definitions/LineTotals"},"distributions":{"$ref":"#/definitions/LineTotals"},"dpi":{"type":"number"},"grossIRR":{"$ref":"#/definitions/LineTotals"},"grossMultiple":{"$ref":"#/definitions/LineTotals"},"investedCapital":{"$ref":"#/definitions/LineTotals"},"managementFees":{"$ref":"#/definitions/LineTotals"},"netIRR":{"$ref":"#/definitions/LineTotals"},"netMultiple":{"$ref":"#/definitions/LineTotals"},"partnershipExpenses":{"$ref":"#/definitions/LineTotals"},"pic":{"type":"number"},"proceeds":{"$ref":"#/definitions/LineTotals"},"rvpi":{"type":"number"},"tiers":{"items":{"type":"object"},"type":"array"},"tvpi":{"type":"number"},"weightedHoldPeriodYears":{"type":"number"}},"required":["committedCapital","calledCapital","managementFees","partnershipExpenses","investedCapital","proceeds","distributions","grossMultiple","netMultiple","grossIRR","netIRR","pic","dpi","rvpi","tvpi","weightedHoldPeriodYears"],"type":"object"},"FundResultResponse":{"properties":{"data":{"properties":{"detail":{"$ref":"#/definitions/FundDetail"},"result":{"$ref":"#/definitions/FundResult"},"workbook":{"description":"Returned when the request sets format to \"xlsx\" or \"xlsx_url\": the live Excel workbook the web tool exports, with every number a formula back to its Get Started inputs. For \"xlsx\", decode data from base64 and save it as filename. For \"xlsx_url\", download it from url before expiresAt (24 hours).","properties":{"contentType":{"type":"string"},"data":{"type":"string"},"encoding":{"enum":["base64"],"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"filename":{"type":"string"},"url":{"format":"uri","type":"string"}},"required":["filename","contentType"],"type":"object"}},"required":["result"],"type":"object"},"meta":{"properties":{"keyName":{"type":"string"}},"type":"object"}},"type":"object"},"FundSeries":{"properties":{"gp":{"items":{"type":"number"},"type":"array"},"lp":{"items":{"type":"number"},"type":"array"},"total":{"items":{"type":"number"},"type":"array"}},"required":["total","lp","gp"],"type":"object"},"LineTotals":{"properties":{"gp":{"type":"number"},"lp":{"type":"number"},"total":{"type":"number"}},"required":["total","lp","gp"],"type":"object"},"ManualIssuanceEvent":{"description":"Escape hatch: issue exact shares for custom arrangements.","properties":{"issuances":{"items":{"properties":{"class":{"enum":["common","preferred","option-pool","warrant"]},"countMode":{"description":"Defaults to \"shares\".","enum":["shares","percent"]},"id":{"type":"string"},"issuePrice":{"type":"number"},"kind":{"enum":["founder","employee","investor","pool"]},"name":{"type":"string"},"pctBasis":{"description":"Defaults to \"fully-diluted\".","enum":["fully-diluted","issued"]},"shares":{"type":"number"},"targetPct":{"description":"0..1, used when countMode=\"percent\".","type":"number"}},"required":["id","name","kind","class","shares"],"type":"object"},"type":"array"},"label":{"type":"string"},"type":{"const":"manual_issuance"}},"required":["type","label","issuances"],"type":"object"},"MonthlyUsage":{"properties":{"failed":{"type":"integer"},"month":{"pattern":"^[0-9]{4}-[0-9]{2}$","type":"string"},"product":{"enum":["cap-table","fund-economics"],"type":"string"},"succeeded":{"type":"integer"}},"required":["month","product","succeeded","failed"],"type":"object"},"OptionGrantEvent":{"description":"Grant options to people from one pool (fully-diluted-neutral).","properties":{"grants":{"items":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"shares":{"type":"number"}},"required":["id","name","shares"],"type":"object"},"type":"array"},"label":{"type":"string"},"poolId":{"description":"Pool id to grant from; omit to draw the common pool.","type":"string"},"type":{"const":"option_grant"}},"required":["type","label","grants"],"type":"object"},"OptionPoolEvent":{"description":"Create or expand an option pool (shares authorized, not granted).","properties":{"countMode":{"description":"Defaults to \"shares\".","enum":["shares","percent"]},"id":{"description":"Pool id, so an option_grant can name which pool it draws from.","type":"string"},"label":{"type":"string"},"shares":{"type":"number"},"strikePrice":{"type":"number"},"targetPct":{"description":"0..1 of post-event fully diluted, used when countMode=\"percent\".","type":"number"},"type":{"const":"option_pool"}},"required":["type","label","shares"],"type":"object"},"PricedRoundEvent":{"description":"A priced equity round: new money buys newly issued preferred.","properties":{"investments":{"items":{"properties":{"amount":{"type":"number"},"antiDilution":{"enum":["weighted-average","full-ratchet"]},"antiDilutionMethod":{"description":"Defaults to \"conversion-ratio\".","enum":["conversion-ratio","new-shares"]},"id":{"type":"string"},"name":{"type":"string"},"proRata":{"description":"If true, amount is back-solved to hold pre-round ownership; match by id.","type":"boolean"}},"required":["id","name","amount"],"type":"object"},"type":"array"},"label":{"type":"string"},"poolMode":{"description":"Legacy. Prefer pools[].","enum":["pre","post","custom"]},"poolPostPct":{"description":"Legacy. Prefer pools[].","type":"number"},"pools":{"description":"Option pool top-ups for the round (preferred over the legacy targetPoolPct trio).","items":{"properties":{"countMode":{"description":"Defaults to \"percent\".","enum":["shares","percent"]},"label":{"type":"string"},"mode":{"description":"\"pre\" dilutes existing only; \"post\" dilutes new money too.","enum":["pre","post"]},"pct":{"description":"0..1 of post-money fully diluted, when countMode=\"percent\".","type":"number"},"poolId":{"description":"Set to track this pool separately (its own cap-table row).","type":"string"},"shares":{"type":"number"}},"required":["mode"],"type":"object"},"type":"array"},"preMoneyValuation":{"type":"number"},"targetPoolPct":{"description":"Legacy. Prefer pools[].","type":"number"},"type":{"const":"priced_round"}},"required":["type","label","preMoneyValuation","investments"],"type":"object"},"ProductAccess":{"properties":{"active":{"description":"Active paid term; use state/freeRemaining for trial access.","type":"boolean"},"allowance":{"const":6000,"type":"integer"},"freeRemaining":{"minimum":0,"type":"integer"},"name":{"type":"string"},"nextAction":{"type":"string"},"paidExpiration":{"type":["string","null"]},"paidRemaining":{"minimum":0,"type":"integer"},"period":{"anyOf":[{"type":"null"},{"$ref":"#/definitions/UsagePeriod"}]},"priceUsd":{"const":20,"type":"number"},"product":{"enum":["cap-table","fund-economics"],"type":"string"},"remaining":{"description":"Calculations this account can run now: the paid balance while a paid period is active, otherwise the lifetime free balance.","minimum":0,"type":"integer"},"source":{"enum":["free","paid"],"type":"string"},"state":{"enum":["free_available","free_exhausted","paid_active","paid_expired","paid_quota_exhausted"],"type":"string"}},"required":["product","name","priceUsd","allowance","period","remaining","active"],"type":"object"},"ResultResponse":{"properties":{"data":{"properties":{"result":{"oneOf":[{"$ref":"#/definitions/WaterfallResult"},{"$ref":"#/definitions/FundResult"}]}},"type":"object"},"meta":{"properties":{"keyName":{"type":"string"}},"type":"object"}},"type":"object"},"SecondarySaleEvent":{"description":"Transfer existing shares from one holder to another.","properties":{"class":{"description":"Defaults to \"common\".","enum":["common","preferred","option-pool","warrant"]},"fromId":{"type":"string"},"label":{"type":"string"},"round":{"description":"Which series the shares come from (e.g. \"Series A\").","type":"string"},"shares":{"type":"number"},"toId":{"type":"string"},"toName":{"type":"string"},"type":{"const":"secondary_sale"}},"required":["type","label","fromId","toId","toName","shares"],"type":"object"},"UsagePeriod":{"properties":{"allowance":{"type":"integer"},"consumed":{"type":"integer"},"enabled":{"type":"boolean"},"id":{"type":"string"},"period_end":{"format":"date-time","type":"string"},"period_start":{"format":"date-time","type":"string"},"reserved":{"type":"integer"}},"required":["id","period_start","period_end","allowance","consumed","reserved","enabled"],"type":"object"},"WarrantRoundEvent":{"description":"Issue warrants (right to buy shares at a set price); counts toward fully diluted now.","properties":{"label":{"type":"string"},"type":{"const":"warrant_round"},"warrants":{"items":{"properties":{"countMode":{"enum":["shares","value"]},"id":{"type":"string"},"name":{"type":"string"},"parValue":{"type":"number"},"priceDiscount":{"description":"0..1 discount on the source round price.","type":"number"},"priceFromRound":{"description":"Source round label to price off, when variable.","type":"string"},"purchaseClass":{"enum":["common","preferred"]},"purchasePrice":{"type":"number"},"purchaseRound":{"description":"For a preferred warrant, the series it targets.","type":"string"},"shares":{"description":"When countMode=\"shares\".","type":"number"},"totalValue":{"description":"When countMode=\"value\": shares = totalValue / purchasePrice.","type":"number"}},"required":["id","name","purchaseClass","countMode"],"type":"object"},"type":"array"}},"required":["type","label","warrants"],"type":"object"},"WaterfallComputeRequest":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"exitValuation":{"maximum":1000000000000000,"minimum":0,"type":"number"},"model":{"additionalProperties":false,"properties":{"common":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"invested":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares"],"type":"object"},"maxItems":500,"type":"array"},"convertibles":{"items":{"additionalProperties":false,"properties":{"accruedInterest":{"maximum":1000000000000000,"minimum":0,"type":"number"},"cap":{"exclusiveMinimum":0,"maximum":1000000000000000,"minimum":0,"type":"number"},"cashOutAs":{"enum":["debt","equity"],"type":"string"},"cashOutSeniority":{"enum":["senior","pari-passu"],"type":"string"},"discount":{"maximum":1,"minimum":0,"type":"number"},"id":{"maxLength":200,"minLength":1,"type":"string"},"kind":{"enum":["pre-safe","post-safe","note"],"type":"string"},"name":{"maxLength":200,"type":"string"},"premiumMultiple":{"maximum":1000000000000000,"minimum":0,"type":"number"},"principal":{"maximum":1000000000000000,"minimum":0,"type":"number"},"seniority":{"type":"number"}},"required":["id","name","kind","principal"],"type":"object"},"maxItems":100,"type":"array"},"debt":{"maximum":1000000000000000,"minimum":0,"type":"number"},"options":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"strike":{"maximum":1000000000000000,"minimum":0,"type":"number"},"vestedFraction":{"maximum":1,"minimum":0,"type":"number"}},"required":["id","name","shares","strike"],"type":"object"},"maxItems":500,"type":"array"},"preferred":{"items":{"additionalProperties":false,"properties":{"conversionRatio":{"exclusiveMinimum":0,"maximum":1000000000000000,"minimum":0,"type":"number"},"dividendCumulative":{"type":"boolean"},"dividendRate":{"maximum":1,"minimum":0,"type":"number"},"dividendStart":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"holders":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"invested":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares","invested"],"type":"object"},"maxItems":500,"type":"array"},"id":{"maxLength":200,"minLength":1,"type":"string"},"investmentDate":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"multiple":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"participation":{"enum":["none","full","capped"],"type":"string"},"participationCap":{"maximum":1000000000000000,"minimum":0,"type":"number"},"seniority":{"type":"number"}},"required":["id","name","holders","seniority"],"type":"object"},"maxItems":20,"type":"array"},"transactionExpenses":{"maximum":1000000000000000,"minimum":0,"type":"number"},"unissuedPool":{"additionalProperties":false,"properties":{"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"treatment":{"const":"cancel","type":"string"}},"required":["shares"],"type":"object"},"warrants":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"strike":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares","strike"],"type":"object"},"maxItems":500,"type":"array"}},"required":["common","preferred"],"type":"object"}},"required":["exitValuation","model"],"type":"object"},"WaterfallResult":{"properties":{"classes":{"items":{"type":"object"},"type":"array"},"converged":{"type":"boolean"},"convertibles":{"items":{"type":"object"},"type":"array"},"distributable":{"type":"number"},"exitValuation":{"type":"number"},"holders":{"items":{"type":"object"},"type":"array"},"iterations":{"type":"integer"},"perShare":{"items":{"type":"object"},"type":"array"},"series":{"items":{"type":"object"},"type":"array"}},"required":["exitValuation","distributable","classes","series","convertibles","holders","perShare","iterations","converged"],"type":"object"}},"properties":{"exitValuation":{"maximum":1000000000000000,"minimum":0,"type":"number"},"idempotency_key":{"description":"Optional retry key; reuse only with identical input.","type":"string"},"model":{"additionalProperties":false,"properties":{"common":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"invested":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares"],"type":"object"},"maxItems":500,"type":"array"},"convertibles":{"items":{"additionalProperties":false,"properties":{"accruedInterest":{"maximum":1000000000000000,"minimum":0,"type":"number"},"cap":{"exclusiveMinimum":0,"maximum":1000000000000000,"minimum":0,"type":"number"},"cashOutAs":{"enum":["debt","equity"],"type":"string"},"cashOutSeniority":{"enum":["senior","pari-passu"],"type":"string"},"discount":{"maximum":1,"minimum":0,"type":"number"},"id":{"maxLength":200,"minLength":1,"type":"string"},"kind":{"enum":["pre-safe","post-safe","note"],"type":"string"},"name":{"maxLength":200,"type":"string"},"premiumMultiple":{"maximum":1000000000000000,"minimum":0,"type":"number"},"principal":{"maximum":1000000000000000,"minimum":0,"type":"number"},"seniority":{"type":"number"}},"required":["id","name","kind","principal"],"type":"object"},"maxItems":100,"type":"array"},"debt":{"maximum":1000000000000000,"minimum":0,"type":"number"},"options":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"strike":{"maximum":1000000000000000,"minimum":0,"type":"number"},"vestedFraction":{"maximum":1,"minimum":0,"type":"number"}},"required":["id","name","shares","strike"],"type":"object"},"maxItems":500,"type":"array"},"preferred":{"items":{"additionalProperties":false,"properties":{"conversionRatio":{"exclusiveMinimum":0,"maximum":1000000000000000,"minimum":0,"type":"number"},"dividendCumulative":{"type":"boolean"},"dividendRate":{"maximum":1,"minimum":0,"type":"number"},"dividendStart":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"holders":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"invested":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares","invested"],"type":"object"},"maxItems":500,"type":"array"},"id":{"maxLength":200,"minLength":1,"type":"string"},"investmentDate":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"multiple":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"participation":{"enum":["none","full","capped"],"type":"string"},"participationCap":{"maximum":1000000000000000,"minimum":0,"type":"number"},"seniority":{"type":"number"}},"required":["id","name","holders","seniority"],"type":"object"},"maxItems":20,"type":"array"},"transactionExpenses":{"maximum":1000000000000000,"minimum":0,"type":"number"},"unissuedPool":{"additionalProperties":false,"properties":{"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"treatment":{"const":"cancel","type":"string"}},"required":["shares"],"type":"object"},"warrants":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"strike":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares","strike"],"type":"object"},"maxItems":500,"type":"array"}},"required":["common","preferred"],"type":"object"}},"required":["exitValuation","model"],"type":"object"},"name":"exit_waterfall_compute"},{"description":"Use whenever the user asks how a venture fund's terms play out: fund size, management fees and step-downs, carry, investment period, recycling, reserves, deployment pace, and resulting net returns to LPs. Takes fund inputs (start from the defaults and change only what the user specifies) and returns lifetime capital, fees, investable capital and gross/net multiples (result), plus the fund over time by default (detail): capital calls, fees, investments, distributions and NAV by year, DPI/RVPI/TVPI by year, the LP J-curve, IRRs solved from those dated cash flows, and financial statements (statement of operations, balance sheet and cash flow, the same lines as the Excel Statements sheet, with check lines that are zero when they tie out). Pass granularity \"quarter\" for quarters or \"none\" for totals only. Optional features apply when their block is sent: preferred return, catch-up and tiered carry (features.waterfall; return of capital covers capital called so far, so carry can be paid on early exits, and a GP clawback, on by default and off with features.waterfall.clawback false, trues the GP back to its share on a fund-end view, reported as gpClawback by period and waterfall.clawback in total; the pref compounds annually or is simple, preferredReturnCompounding \"annual\" or \"none\", on unreturned or contributed capital, preferredReturnBase; catchupMeasure \"preferred\" catches the GP up to its share of the pref paid and \"profit\" to its share of all profit; a carry tier steps up at an LP multiple, moicThreshold, or an LP IRR, irrThreshold, and with catchup true it first brings the GP to the new rate on all profit; basis \"deal-by-deal\" runs American terms, returning only the capital in deals exited or written off before carry, with the clawback still on the whole fund; the Excel workbook carries every one of these terms, deal by deal on a Deals sheet), NAV/AUM/step-down fee bases (features.fees; features.fees.schedule states the fee as an LPA dates it: frequency, steps of {fromYear, rate, basis \"committed\", \"invested\" or \"nav\"}, and an optional organizationalExpenseCap above which org expenses come off the fee), recycling by quarter (features.recycling: defaultTreatment \"retained\", never distributed, or \"deemed\", distributed and recontributed, plus a schedule of {quarter, amount, treatment} to pin, skip with amount 0, or rebook a quarter; deemed recycling is in calledCapital and distributions and reported as recycledDeemed), LP classes (features.lpClasses, each called as the fund needs cash or on its own callSchedule; each class returns its calls, distributions and net IRR by period and a datedNetIRR), portfolio construction from specific deals (features.deals: a list of {name, investments: [{quarter, amount}], exit: {quarter, multiple or proceeds}}, quarters 1-based from first close, a multiple of 0 a write-off; it replaces stages and return tiers, the fund life runs to the last exit, and it wins over capTable; add dealsMix true to mix the methods, so the deals come first and the capital they leave goes through the stages and return tiers or capTable, and result.tiers lists the deals, flagged deal, then the tiers), cap-table portfolio construction, follow-on timing, and a management company budget. result.grossIRR and result.netIRR are geometric annualizations over weighted holding periods; quote detail.irr when the user asks for an IRR from cash flows. When the user wants the Excel model, pass format \"xlsx_url\" (and fundName to name the file): the response adds workbook.url, a download link to the live workbook that lasts 24 hours, with every number a formula back to the inputs. Give the user that link. Free without an account for a few runs a day; signed in, lifetime free credits or paid access. Fund Economics, a separate $20/year product with 6,000 calculations. If the result contains action_required (not signed in, no purchase, allowance used), relay it to the user with its links and offer to retry. Never skip the calculation silently.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"definitions":{"AccessResponse":{"properties":{"data":{"properties":{"daily":{"items":{"$ref":"#/definitions/DailyUsage"},"type":"array"},"monthly":{"items":{"$ref":"#/definitions/MonthlyUsage"},"type":"array"},"periods":{"items":{"allOf":[{"$ref":"#/definitions/UsagePeriod"},{"properties":{"product":{"enum":["cap-table","fund-economics"],"type":"string"}},"required":["product"],"type":"object"}]},"type":"array"},"products":{"items":{"$ref":"#/definitions/ProductAccess"},"type":"array"}},"required":["products","daily"],"type":"object"}},"type":"object"},"CapTableSnapshot":{"properties":{"holdings":{"items":{"type":"object"},"type":"array"},"label":{"type":"string"},"outstandingConvertibles":{"items":{"type":"object"},"type":"array"},"ownership":{"items":{"type":"object"},"type":"array"},"pricePerShare":{"type":"number"},"roundDetail":{"type":"object"},"totalShares":{"type":"number"}},"required":["label","holdings","totalShares","ownership","outstandingConvertibles"],"type":"object"},"CommonIssuanceEvent":{"description":"Issue common stock (founders, employees).","properties":{"grants":{"items":{"properties":{"id":{"type":"string"},"kind":{"enum":["founder","employee"]},"name":{"type":"string"},"shares":{"type":"number"}},"required":["id","name","kind","shares"],"type":"object"},"type":"array"},"label":{"type":"string"},"type":{"const":"common_issuance"}},"required":["type","label","grants"],"type":"object"},"ComputeRequest":{"additionalProperties":false,"properties":{"events":{"items":{"description":"One cap-table event, discriminated by `type`. Pass events in chronological order.","discriminator":{"mapping":{"common_issuance":"#/components/schemas/CommonIssuanceEvent","convertible_round":"#/components/schemas/ConvertibleRoundEvent","manual_issuance":"#/components/schemas/ManualIssuanceEvent","option_grant":"#/components/schemas/OptionGrantEvent","option_pool":"#/components/schemas/OptionPoolEvent","priced_round":"#/components/schemas/PricedRoundEvent","secondary_sale":"#/components/schemas/SecondarySaleEvent","warrant_round":"#/components/schemas/WarrantRoundEvent"},"propertyName":"type"},"oneOf":[{"$ref":"#/definitions/CommonIssuanceEvent"},{"$ref":"#/definitions/OptionPoolEvent"},{"$ref":"#/definitions/SecondarySaleEvent"},{"$ref":"#/definitions/OptionGrantEvent"},{"$ref":"#/definitions/ManualIssuanceEvent"},{"$ref":"#/definitions/ConvertibleRoundEvent"},{"$ref":"#/definitions/WarrantRoundEvent"},{"$ref":"#/definitions/PricedRoundEvent"}]},"maxItems":200,"type":"array"}},"required":["events"],"type":"object"},"ComputeResponse":{"properties":{"data":{"properties":{"final":{"$ref":"#/definitions/CapTableSnapshot"},"snapshots":{"description":"One snapshot per event, in order.","items":{"$ref":"#/definitions/CapTableSnapshot"},"type":"array"}},"type":"object"},"meta":{"properties":{"keyName":{"type":"string"}},"type":"object"}},"type":"object"},"ConvertibleRoundEvent":{"description":"Issue SAFEs or notes; they convert to preferred at the next priced round.","properties":{"convertibles":{"items":{"properties":{"accruedInterest":{"type":"number"},"capType":{"enum":["pre-money","post-money","post-money-fixed","post-money-fixed-after"]},"conversionDate":{"description":"ISO date. Notes only.","type":"string"},"dilutionMode":{"description":"Defaults to \"existing-only\".","enum":["existing-only","all"]},"discount":{"description":"0..1.","type":"number"},"id":{"type":"string"},"interestRate":{"description":"Annual fraction (0.05 = 5%). Notes only.","type":"number"},"investmentDate":{"description":"ISO date. Notes only.","type":"string"},"kind":{"enum":["safe","note"]},"mfn":{"type":"boolean"},"name":{"type":"string"},"principal":{"type":"number"},"valuationCap":{"type":"number"}},"required":["id","name","kind","principal"],"type":"object"},"type":"array"},"label":{"type":"string"},"type":{"const":"convertible_round"}},"required":["type","label","convertibles"],"type":"object"},"DailyUsage":{"properties":{"day":{"format":"date","type":"string"},"endpoint":{"type":"string"},"failed":{"type":"integer"},"product":{"enum":["cap-table","fund-economics"],"type":"string"},"source":{"type":"string"},"succeeded":{"type":"integer"}},"required":["day","product","endpoint","source","succeeded","failed"],"type":"object"},"Error":{"properties":{"error":{"properties":{"code":{"enum":["unauthorized","payment_required","validation_failed","engine_error","quota_exhausted","rate_limited","idempotency_conflict","service_unavailable","method_not_allowed","internal_error"],"type":"string"},"details":{},"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","retryable"],"type":"object"}},"type":"object"},"FundComputeRequest":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"features":{"additionalProperties":false,"properties":{"capTable":{"additionalProperties":false,"properties":{"bridge":{"additionalProperties":false,"properties":{"expectedAgeAtRound":{"items":{"maximum":100,"minimum":0,"type":"number"},"maxItems":21,"type":"array"},"numInvestmentsTarget":{"maximum":10000,"minimum":0,"type":"number"},"stageName":{"maxLength":200,"type":"string"},"writeoffHoldYears":{"maximum":100,"minimum":0,"type":"number"},"yearsBetweenRounds":{"maximum":100,"minimum":0,"type":"number"}},"required":["numInvestmentsTarget"],"type":"object"},"inputs":{"additionalProperties":false,"properties":{"defaultExitMultiple":{"minimum":0,"type":"number"},"defaultGraduationRate":{"maximum":100,"minimum":0,"type":"number"},"defaultValuationIncrease":{"minimum":0,"type":"number"},"defaultWriteoffRate":{"maximum":100,"minimum":0,"type":"number"},"dilutionFromOptionPoolsPerRound":{"maximum":100,"minimum":0,"type":"number"},"dilutionPerRound":{"maximum":100,"minimum":0,"type":"number"},"exitMultipleOnLastRound":{"minimum":0,"type":"number"},"followOnRounds":{"items":{"additionalProperties":false,"properties":{"dilutionFromRound":{"maximum":100,"minimum":0,"type":"number"},"newOptionPoolInRound":{"maximum":100,"minimum":0,"type":"number"},"pctCompaniesFollowOn":{"maximum":100,"minimum":0,"type":"number"},"valuationIncrease":{"minimum":0,"type":"number"}},"type":"object"},"maxItems":20,"type":"array"},"newInvestmentCheckSize":{"minimum":0,"type":"number"},"numFollowOnRounds":{"maximum":20,"minimum":0,"type":"integer"},"numRoundsFollowOn":{"maximum":20,"minimum":0,"type":"integer"},"ownershipOutsideInvestment":{"items":{"maximum":100,"minimum":0,"type":"number"},"maxItems":21,"type":"array"},"pctCompaniesFollowOn":{"maximum":100,"minimum":0,"type":"number"},"postmoneyValuation":{"exclusiveMinimum":0,"type":"number"},"roundLabels":{"items":{"maxLength":200,"type":"string"},"maxItems":21,"type":"array"},"roundOutcomes":{"items":{"additionalProperties":false,"properties":{"exitMultiple":{"minimum":0,"type":"number"},"graduationRate":{"maximum":100,"minimum":0,"type":"number"},"writeoffRate":{"maximum":100,"minimum":0,"type":"number"}},"type":"object"},"maxItems":21,"type":"array"}},"required":["newInvestmentCheckSize","postmoneyValuation","numFollowOnRounds","numRoundsFollowOn","defaultValuationIncrease","dilutionPerRound","dilutionFromOptionPoolsPerRound","pctCompaniesFollowOn","defaultGraduationRate","defaultWriteoffRate","defaultExitMultiple"],"type":"object"}},"required":["inputs","bridge"],"type":"object"},"deals":{"description":"Build the portfolio from specific deals instead of entry stages and return tiers (and instead of capTable when both are sent). Each deal has its checks, each in a quarter from first close (1-based), and one exit in a quarter, at a multiple of everything invested in the deal (0 is a write-off) or for proceeds in money. Invested capital is the sum of the checks and called capital is solved from it; the fund life runs to the last exit, capped by maxFundLifeYears; each deal comes back as a row of result.tiers. Recycling keeps back the earliest proceeds, up to recycledCapitalPct of committed, only while later checks can use them. Send dealsMix true to mix the methods instead.","items":{"additionalProperties":false,"properties":{"exit":{"additionalProperties":false,"properties":{"multiple":{"description":"Of everything invested in the deal. 0 is a write-off.","maximum":10000,"minimum":0,"type":"number"},"proceeds":{"description":"Exit proceeds in money, instead of a multiple.","minimum":0,"type":"number"},"quarter":{"maximum":400,"minimum":1,"type":"integer"}},"required":["quarter"],"type":"object"},"investments":{"description":"The checks the fund writes into the deal: the initial check, then any follow-ons.","items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"quarter":{"description":"Quarter from first close, 1-based.","maximum":400,"minimum":1,"type":"integer"}},"required":["quarter","amount"],"type":"object"},"maxItems":40,"minItems":1,"type":"array"},"name":{"maxLength":200,"minLength":1,"type":"string"}},"required":["name","investments","exit"],"type":"object"},"maxItems":500,"minItems":1,"type":"array"},"dealsMix":{"description":"With deals: the deals come first, and the capital they leave (committed less fees and expenses, plus recycling, less the checks) is invested through the entry stages and return tiers, or capTable when sent, as it would be without deals. Recycling then goes to the stages, the fund life is the later of the deals' and the stages', and result.tiers lists the deals and then the tiers.","type":"boolean"},"fees":{"additionalProperties":false,"properties":{"base":{"enum":["committed","nav","aum","step-down"],"type":"string"},"basesByYear":{"items":{"enum":["committed","nav","aum","step-down"],"type":"string"},"maxItems":100,"type":"array"},"feeYears":{"maximum":100,"minimum":0,"type":"number"},"ratePct":{"maximum":1,"minimum":0,"type":"number"},"schedule":{"additionalProperties":false,"description":"The fee as an LPA states it, on the dated schedule: each rate from a point in fund years (0 = first close; 5.5 starts halfway through year 6 and cuts the period it lands in), charged on committed capital, invested cost not yet realized, or NAV, with organizational expenses above organizationalExpenseCap offsetting the fee. Runs for feeYears; base, ratePct, yearlyRateSchedule and basesByYear are ignored when it is set.","properties":{"frequency":{"enum":["quarterly","semiannual","annual"],"type":"string"},"organizationalExpenseCap":{"minimum":0,"type":"number"},"steps":{"items":{"additionalProperties":false,"properties":{"basis":{"enum":["committed","invested","nav"],"type":"string"},"fromYear":{"maximum":100,"minimum":0,"type":"number"},"rate":{"maximum":1,"minimum":0,"type":"number"}},"required":["fromYear","rate","basis"],"type":"object"},"maxItems":20,"minItems":1,"type":"array"}},"required":["steps"],"type":"object"},"stepDownAfterYears":{"maximum":100,"minimum":0,"type":"number"},"yearlyRateSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":100,"type":"array"}},"required":["base"],"type":"object"},"followOn":{"additionalProperties":false,"properties":{"offsetQuarters":{"maximum":40,"minimum":0,"type":"integer"}},"required":["offsetQuarters"],"type":"object"},"lpClasses":{"items":{"additionalProperties":false,"properties":{"callSchedule":{"additionalProperties":false,"description":"Call this class on its own schedule instead of as the fund needs cash. pct is a share of the class commitment per fund year (called in the year's first quarter) or per quarter. Whatever the entries leave is called when the fund needs it.","properties":{"frequency":{"enum":["year","quarter"],"type":"string"},"pct":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":80,"type":"array"}},"required":["frequency","pct"],"type":"object"},"commitment":{"minimum":0,"type":"number"},"feeOverrides":{"additionalProperties":false,"properties":{"basesByYear":{"items":{"enum":["committed","nav","aum","step-down"],"type":"string"},"maxItems":100,"type":"array"},"ratePct":{"maximum":1,"minimum":0,"type":"number"},"yearlyRateSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":100,"type":"array"}},"type":"object"},"isFirstLoss":{"type":"boolean"},"isRemainder":{"type":"boolean"},"name":{"maxLength":200,"minLength":1,"type":"string"},"overrides":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"carryTiers":{"items":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"catchup":{"type":"boolean"},"irrThreshold":{"description":"Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.","maximum":1,"minimum":0,"type":"number"},"moicThreshold":{"minimum":0,"type":"number"}},"required":["moicThreshold","carryPct"],"type":"object"},"maxItems":20,"type":"array"},"catchupGpShare":{"maximum":1,"minimum":0,"type":"number"},"catchupPct":{"maximum":1,"minimum":0,"type":"number"},"preferredReturnMode":{"enum":["none","irr","multiple"],"type":"string"},"preferredReturnMultiple":{"maximum":100,"minimum":0,"type":"number"},"preferredReturnRate":{"maximum":1,"minimum":0,"type":"number"}},"type":"object"}},"required":["name","commitment"],"type":"object"},"maxItems":50,"minItems":1,"type":"array"},"mgmtCo":{"additionalProperties":false,"properties":{"expenses":{"items":{"additionalProperties":false,"properties":{"annualCost":{"minimum":0,"type":"number"},"growthRatePerYear":{"maximum":10,"minimum":-1,"type":"number"},"label":{"maxLength":200,"type":"string"},"yearsActive":{"items":{"maximum":100,"minimum":1,"type":"integer"},"maxItems":100,"type":"array"}},"required":["label","annualCost"],"type":"object"},"maxItems":100,"type":"array"},"oneTimeFormationCost":{"minimum":0,"type":"number"},"startingCash":{"minimum":0,"type":"number"}},"required":["expenses"],"type":"object"},"recycling":{"additionalProperties":false,"properties":{"defaultTreatment":{"enum":["retained","deemed"],"type":"string"},"schedule":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"quarter":{"maximum":400,"minimum":1,"type":"integer"},"treatment":{"enum":["retained","deemed"],"type":"string"}},"required":["quarter"],"type":"object"},"maxItems":400,"type":"array"}},"type":"object"},"waterfall":{"additionalProperties":false,"properties":{"basis":{"description":"Whole fund (the default, European) or deal by deal (American): return of capital owes only the capital in deals exited or written off so far, so carry can be paid before the fund returns all capital. The clawback settles on the whole fund.","enum":["whole-fund","deal-by-deal"],"type":"string"},"carryTiers":{"items":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"catchup":{"type":"boolean"},"irrThreshold":{"description":"Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.","maximum":1,"minimum":0,"type":"number"},"moicThreshold":{"minimum":0,"type":"number"}},"required":["moicThreshold","carryPct"],"type":"object"},"maxItems":20,"type":"array"},"catchupGpShare":{"maximum":1,"minimum":0,"type":"number"},"catchupMeasure":{"description":"GP catchup: to the carry share of the pref paid (the default), or until the GP holds the carry share of all profit paid. They differ when the GP shares the catchup with LPs.","enum":["preferred","profit"],"type":"string"},"catchupPct":{"maximum":1,"minimum":0,"type":"number"},"clawback":{"type":"boolean"},"preferredReturnBase":{"description":"IRR pref: accrue on capital not yet returned plus unpaid pref (the default), or on each contribution from its date whatever comes back.","enum":["unreturned","contributed"],"type":"string"},"preferredReturnCompounding":{"description":"IRR pref: compound annually (the default) or simple interest.","enum":["annual","none"],"type":"string"},"preferredReturnMode":{"enum":["none","irr","multiple"],"type":"string"},"preferredReturnMultiple":{"maximum":100,"minimum":0,"type":"number"},"preferredReturnRate":{"maximum":1,"minimum":0,"type":"number"}},"type":"object"}},"type":"object"},"firstCloseDate":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"format":{"enum":["json","xlsx","xlsx_url"],"type":"string"},"fundName":{"maxLength":200,"type":"string"},"granularity":{"enum":["year","quarter","none"],"type":"string"},"inputs":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"committedCapital":{"exclusiveMinimum":0,"type":"number"},"fundOperationsYears":{"exclusiveMinimum":0,"type":"number"},"gpCommitBearsCarry":{"type":"boolean"},"gpCommitCountedTowardInvested":{"type":"boolean"},"gpCommitPct":{"maximum":1,"minimum":0,"type":"number"},"maxFundLifeYears":{"exclusiveMinimum":0,"type":"number"},"mgmtFeePct":{"maximum":1,"minimum":0,"type":"number"},"mgmtFeeSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"type":"array"},"mgmtFeesPeriodYears":{"exclusiveMinimum":0,"type":"number"},"navMarkupYears":{"maximum":100,"minimum":0,"type":"number"},"newInvestmentPeriodYears":{"exclusiveMinimum":0,"type":"number"},"operationalExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"},"quarterly":{"items":[{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"}],"maxItems":4,"minItems":4,"type":"array"}},"required":["label","amount"],"type":"object"},"type":"array"},"operationalExpensesAnnual":{"minimum":0,"type":"number"},"operationalExpensesBreakout":{"additionalProperties":false,"properties":{"audit":{"minimum":0,"type":"number"},"fundAdmin":{"minimum":0,"type":"number"},"other":{"minimum":0,"type":"number"},"tax":{"minimum":0,"type":"number"}},"required":["fundAdmin","tax","audit","other"],"type":"object"},"organizationalExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"}},"required":["label","amount"],"type":"object"},"type":"array"},"organizationalExpenses":{"minimum":0,"type":"number"},"partnershipExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"},"quarterly":{"items":[{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"}],"maxItems":4,"minItems":4,"type":"array"}},"required":["label","amount"],"type":"object"},"type":"array"},"partnershipExpensesAnnual":{"minimum":0,"type":"number"},"portfolio":{"additionalProperties":false,"properties":{"avgCheckSizeFollow":{"minimum":0,"type":"number"},"avgCheckSizeNew":{"minimum":0,"type":"number"},"entryStages":{"items":{"additionalProperties":false,"properties":{"avgCheckSize":{"minimum":0,"type":"number"},"followOnChecks":{"items":{"additionalProperties":false,"properties":{"avgCheckSize":{"minimum":0,"type":"number"},"label":{"type":"string"},"pctOfReserve":{"maximum":1,"minimum":0,"type":"number"}},"required":["avgCheckSize"],"type":"object"},"type":"array"},"initialCheckLabel":{"type":"string"},"name":{"type":"string"},"numInvestments":{"minimum":0,"type":"number"},"pctAllocation":{"maximum":1,"minimum":0,"type":"number"},"reserveRatio":{"maximum":1,"minimum":0,"type":"number"}},"required":["name","numInvestments","avgCheckSize"],"type":"object"},"type":"array"},"followPct":{"maximum":1,"minimum":0,"type":"number"},"newPct":{"maximum":1,"minimum":0,"type":"number"}},"required":["newPct","followPct","avgCheckSizeNew","avgCheckSizeFollow"],"type":"object"},"recycledCapitalPct":{"maximum":1,"minimum":0,"type":"number"},"returnTiers":{"items":{"additionalProperties":false,"properties":{"holdingPeriodYears":{"minimum":0,"type":"number"},"multiple":{"minimum":0,"type":"number"},"name":{"minLength":1,"type":"string"},"numCompanies":{"minimum":0,"type":"number"},"pctOfCapital":{"maximum":1,"minimum":0,"type":"number"}},"required":["name","pctOfCapital","multiple","holdingPeriodYears"],"type":"object"},"minItems":1,"type":"array"},"solveCalledFromDeployment":{"type":"boolean"},"stageInputMode":{"enum":["pct-capital","num-companies"],"type":"string"},"targetTotalInvestments":{"minimum":0,"type":"number"},"tierFractional":{"type":"boolean"},"tierInputMode":{"enum":["pct-capital","num-companies"],"type":"string"}},"required":["committedCapital","gpCommitPct","gpCommitCountedTowardInvested","organizationalExpenses","operationalExpensesAnnual","mgmtFeePct","recycledCapitalPct","carryPct","newInvestmentPeriodYears","mgmtFeesPeriodYears","portfolio","returnTiers"],"type":"object"}},"required":["inputs"],"type":"object"},"FundDetail":{"description":"The fund over time. Returned unless the request sets granularity to \"none\". Every array in periods has one entry per label. waterfall, lpClasses and mgmtCo appear only when the request sent that feature block.","properties":{"granularity":{"enum":["year","quarter"],"type":"string"},"irr":{"description":"IRRs solved from the dated quarterly cash flows, with terminal NAV.","properties":{"grossIRR":{"type":"number"},"netIRR":{"properties":{"lp":{"type":"number"},"total":{"type":"number"}},"type":"object"}},"type":"object"},"lpClasses":{"description":"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls, distributions and netIRR (the class's IRR through each period, with its share of LP NAV as the terminal value), one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash.","type":"object"},"mgmtCo":{"type":"object"},"periods":{"properties":{"calledCapital":{"$ref":"#/definitions/FundSeries"},"carriedInterest":{"description":"GP carry paid each period, catchups included, net of the clawback.","items":{"type":"number"},"type":"array"},"distributions":{"$ref":"#/definitions/FundSeries","description":"Distributions after carry. The LP line runs through the waterfall period by period."},"dpi":{"items":{"type":"number"},"type":"array"},"gpCatchup":{"description":"GP catchup paid each period. Only with a waterfall block.","items":{"type":"number"},"type":"array"},"gpClawback":{"description":"Carry the GP returns to the LPs, in the quarter the fund ends (or its year). Return of capital covers only capital called so far, so early carry is possible; the clawback brings the GP back to its whole-fund share. Off with features.waterfall.clawback: false.","items":{"type":"number"},"type":"array"},"investedCapital":{"$ref":"#/definitions/FundSeries"},"jCurveLp":{"description":"Cumulative LP net cash flow at the end of each period.","items":{"type":"number"},"type":"array"},"labels":{"items":{"type":"string"},"type":"array"},"managementFees":{"$ref":"#/definitions/FundSeries"},"nav":{"$ref":"#/definitions/FundSeries"},"partnershipExpenses":{"$ref":"#/definitions/FundSeries"},"preferredReturn":{"description":"Preferred return paid to LPs each period. Only with a waterfall block.","items":{"type":"number"},"type":"array"},"proceeds":{"$ref":"#/definitions/FundSeries"},"recycledCapital":{"$ref":"#/definitions/FundSeries"},"recycledDeemed":{"$ref":"#/definitions/FundSeries","description":"The part of recycledCapital booked as distributed and recontributed (features.recycling treatment \"deemed\"). It is also in calledCapital and distributions; recycling that is never distributed is in neither."},"rvpi":{"items":{"type":"number"},"type":"array"},"tvpi":{"items":{"type":"number"},"type":"array"}},"required":["labels"],"type":"object"},"statements":{"properties":{"currency":{"type":"string"},"periods":{"items":{"properties":{"balanceSheet":{"properties":{"carriedInterestDistributed":{"description":"Carried interest distributed","type":"number"},"cash":{"description":"Cash","type":"number"},"checkBalances":{"description":"Check: assets less liabilities and capital. Zero when the balance sheet balances.","type":"number"},"contributedCapitalGp":{"description":"Contributed capital, GP","type":"number"},"contributedCapitalLp":{"description":"Contributed capital, LPs","type":"number"},"cumulativeNetInvestmentIncome":{"description":"Cumulative net investment income (loss)","type":"number"},"cumulativeNetRealizedGain":{"description":"Cumulative net realized gain (loss)","type":"number"},"cumulativeNetUnrealized":{"description":"Cumulative net unrealized appreciation (depreciation)","type":"number"},"distributionsGpCommit":{"description":"Distributions to the GP commit","type":"number"},"distributionsLp":{"description":"Distributions to LPs","type":"number"},"investmentsAtCost":{"description":"Investments, at cost. AUM.","type":"number"},"investmentsAtFairValue":{"description":"Investments, at fair value. NAV.","type":"number"},"totalAssets":{"description":"Total assets","type":"number"},"totalLiabilities":{"description":"Total liabilities. Expenses are paid when incurred, so nothing is accrued.","type":"number"},"totalLiabilitiesAndCapital":{"description":"Total liabilities and partners' capital","type":"number"},"totalPartnersCapital":{"description":"Total partners' capital","type":"number"},"unfundedCommitments":{"description":"Memo: unfunded commitments","type":"number"},"unrealizedAppreciation":{"description":"Unrealized appreciation (depreciation)","type":"number"}},"type":"object"},"cashFlow":{"properties":{"carriedInterestPaid":{"description":"Carried interest paid","type":"number"},"cashBeginning":{"description":"Cash, beginning of period","type":"number"},"cashEnd":{"description":"Cash, end of period","type":"number"},"checkTiesToBalanceSheet":{"description":"Check: cash less balance sheet cash. Zero when the cash flow ties to the balance sheet.","type":"number"},"contributionsGp":{"description":"Capital contributions, GP","type":"number"},"contributionsLp":{"description":"Capital contributions, LPs","type":"number"},"distributionsGpCommit":{"description":"Distributions to the GP commit","type":"number"},"distributionsLp":{"description":"Distributions to LPs","type":"number"},"lessNetChangeInUnrealized":{"description":"Net change in unrealized (appreciation) depreciation","type":"number"},"lessNetRealizedGain":{"description":"Net realized (gain) loss on investments","type":"number"},"netCashFromFinancing":{"description":"Net cash from financing activities","type":"number"},"netCashFromOperating":{"description":"Net cash from operating activities","type":"number"},"netChangeInCash":{"description":"Net change in cash","type":"number"},"netIncreaseFromOperations":{"description":"Net increase (decrease) in partners' capital from operations","type":"number"},"proceedsFromExits":{"description":"Proceeds from exits","type":"number"},"purchasesOfInvestments":{"description":"Purchases of investments. Includes recycled proceeds.","type":"number"}},"type":"object"},"label":{"type":["string","null"]},"operations":{"properties":{"managementFees":{"description":"Management fees","type":"number"},"netChangeInUnrealized":{"description":"Net change in unrealized appreciation (depreciation). Change in NAV less change in cost held.","type":"number"},"netGainOnInvestments":{"description":"Net gain (loss) on investments","type":"number"},"netIncreaseFromOperations":{"description":"Net increase (decrease) in partners' capital from operations","type":"number"},"netInvestmentIncome":{"description":"Net investment income (loss). No interest or dividend income is modeled.","type":"number"},"netRealizedGain":{"description":"Net realized gain (loss)","type":"number"},"operationalExpenseLines":{"description":"The operational expense lines, when the model itemizes them.","items":{"properties":{"amount":{"type":"number"},"label":{"type":"string"}},"type":"object"},"type":"array"},"operationalExpenses":{"description":"Operational expenses. Run through Q1 of the fund year after the fund life ends.","type":"number"},"organizationalExpenses":{"description":"Organizational expenses","type":"number"},"partnershipExpenseLines":{"description":"The partnership expense lines, when the model itemizes them.","items":{"properties":{"amount":{"type":"number"},"label":{"type":"string"}},"type":"object"},"type":"array"},"partnershipExpenses":{"description":"Partnership expenses","type":"number"},"realizedGainOnExits":{"description":"Realized gain on exits. Proceeds less the cost they release.","type":"number"},"realizedLossOnWriteoffs":{"description":"Realized loss on writeoffs","type":"number"},"totalExpenses":{"description":"Total expenses","type":"number"}},"type":"object"},"periodEnd":{"type":"string"},"periodStart":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"waterfall":{"description":"Lifetime totals of the waterfall as run through the periods: return of capital, preferred return (accrued on the dates capital was called), catchup, carry by tier.","type":"object"}},"required":["granularity","irr","periods","statements"],"type":"object"},"FundResult":{"properties":{"calledCapital":{"$ref":"#/definitions/LineTotals"},"committedCapital":{"$ref":"#/definitions/LineTotals"},"distributions":{"$ref":"#/definitions/LineTotals"},"dpi":{"type":"number"},"grossIRR":{"$ref":"#/definitions/LineTotals"},"grossMultiple":{"$ref":"#/definitions/LineTotals"},"investedCapital":{"$ref":"#/definitions/LineTotals"},"managementFees":{"$ref":"#/definitions/LineTotals"},"netIRR":{"$ref":"#/definitions/LineTotals"},"netMultiple":{"$ref":"#/definitions/LineTotals"},"partnershipExpenses":{"$ref":"#/definitions/LineTotals"},"pic":{"type":"number"},"proceeds":{"$ref":"#/definitions/LineTotals"},"rvpi":{"type":"number"},"tiers":{"items":{"type":"object"},"type":"array"},"tvpi":{"type":"number"},"weightedHoldPeriodYears":{"type":"number"}},"required":["committedCapital","calledCapital","managementFees","partnershipExpenses","investedCapital","proceeds","distributions","grossMultiple","netMultiple","grossIRR","netIRR","pic","dpi","rvpi","tvpi","weightedHoldPeriodYears"],"type":"object"},"FundResultResponse":{"properties":{"data":{"properties":{"detail":{"$ref":"#/definitions/FundDetail"},"result":{"$ref":"#/definitions/FundResult"},"workbook":{"description":"Returned when the request sets format to \"xlsx\" or \"xlsx_url\": the live Excel workbook the web tool exports, with every number a formula back to its Get Started inputs. For \"xlsx\", decode data from base64 and save it as filename. For \"xlsx_url\", download it from url before expiresAt (24 hours).","properties":{"contentType":{"type":"string"},"data":{"type":"string"},"encoding":{"enum":["base64"],"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"filename":{"type":"string"},"url":{"format":"uri","type":"string"}},"required":["filename","contentType"],"type":"object"}},"required":["result"],"type":"object"},"meta":{"properties":{"keyName":{"type":"string"}},"type":"object"}},"type":"object"},"FundSeries":{"properties":{"gp":{"items":{"type":"number"},"type":"array"},"lp":{"items":{"type":"number"},"type":"array"},"total":{"items":{"type":"number"},"type":"array"}},"required":["total","lp","gp"],"type":"object"},"LineTotals":{"properties":{"gp":{"type":"number"},"lp":{"type":"number"},"total":{"type":"number"}},"required":["total","lp","gp"],"type":"object"},"ManualIssuanceEvent":{"description":"Escape hatch: issue exact shares for custom arrangements.","properties":{"issuances":{"items":{"properties":{"class":{"enum":["common","preferred","option-pool","warrant"]},"countMode":{"description":"Defaults to \"shares\".","enum":["shares","percent"]},"id":{"type":"string"},"issuePrice":{"type":"number"},"kind":{"enum":["founder","employee","investor","pool"]},"name":{"type":"string"},"pctBasis":{"description":"Defaults to \"fully-diluted\".","enum":["fully-diluted","issued"]},"shares":{"type":"number"},"targetPct":{"description":"0..1, used when countMode=\"percent\".","type":"number"}},"required":["id","name","kind","class","shares"],"type":"object"},"type":"array"},"label":{"type":"string"},"type":{"const":"manual_issuance"}},"required":["type","label","issuances"],"type":"object"},"MonthlyUsage":{"properties":{"failed":{"type":"integer"},"month":{"pattern":"^[0-9]{4}-[0-9]{2}$","type":"string"},"product":{"enum":["cap-table","fund-economics"],"type":"string"},"succeeded":{"type":"integer"}},"required":["month","product","succeeded","failed"],"type":"object"},"OptionGrantEvent":{"description":"Grant options to people from one pool (fully-diluted-neutral).","properties":{"grants":{"items":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"shares":{"type":"number"}},"required":["id","name","shares"],"type":"object"},"type":"array"},"label":{"type":"string"},"poolId":{"description":"Pool id to grant from; omit to draw the common pool.","type":"string"},"type":{"const":"option_grant"}},"required":["type","label","grants"],"type":"object"},"OptionPoolEvent":{"description":"Create or expand an option pool (shares authorized, not granted).","properties":{"countMode":{"description":"Defaults to \"shares\".","enum":["shares","percent"]},"id":{"description":"Pool id, so an option_grant can name which pool it draws from.","type":"string"},"label":{"type":"string"},"shares":{"type":"number"},"strikePrice":{"type":"number"},"targetPct":{"description":"0..1 of post-event fully diluted, used when countMode=\"percent\".","type":"number"},"type":{"const":"option_pool"}},"required":["type","label","shares"],"type":"object"},"PricedRoundEvent":{"description":"A priced equity round: new money buys newly issued preferred.","properties":{"investments":{"items":{"properties":{"amount":{"type":"number"},"antiDilution":{"enum":["weighted-average","full-ratchet"]},"antiDilutionMethod":{"description":"Defaults to \"conversion-ratio\".","enum":["conversion-ratio","new-shares"]},"id":{"type":"string"},"name":{"type":"string"},"proRata":{"description":"If true, amount is back-solved to hold pre-round ownership; match by id.","type":"boolean"}},"required":["id","name","amount"],"type":"object"},"type":"array"},"label":{"type":"string"},"poolMode":{"description":"Legacy. Prefer pools[].","enum":["pre","post","custom"]},"poolPostPct":{"description":"Legacy. Prefer pools[].","type":"number"},"pools":{"description":"Option pool top-ups for the round (preferred over the legacy targetPoolPct trio).","items":{"properties":{"countMode":{"description":"Defaults to \"percent\".","enum":["shares","percent"]},"label":{"type":"string"},"mode":{"description":"\"pre\" dilutes existing only; \"post\" dilutes new money too.","enum":["pre","post"]},"pct":{"description":"0..1 of post-money fully diluted, when countMode=\"percent\".","type":"number"},"poolId":{"description":"Set to track this pool separately (its own cap-table row).","type":"string"},"shares":{"type":"number"}},"required":["mode"],"type":"object"},"type":"array"},"preMoneyValuation":{"type":"number"},"targetPoolPct":{"description":"Legacy. Prefer pools[].","type":"number"},"type":{"const":"priced_round"}},"required":["type","label","preMoneyValuation","investments"],"type":"object"},"ProductAccess":{"properties":{"active":{"description":"Active paid term; use state/freeRemaining for trial access.","type":"boolean"},"allowance":{"const":6000,"type":"integer"},"freeRemaining":{"minimum":0,"type":"integer"},"name":{"type":"string"},"nextAction":{"type":"string"},"paidExpiration":{"type":["string","null"]},"paidRemaining":{"minimum":0,"type":"integer"},"period":{"anyOf":[{"type":"null"},{"$ref":"#/definitions/UsagePeriod"}]},"priceUsd":{"const":20,"type":"number"},"product":{"enum":["cap-table","fund-economics"],"type":"string"},"remaining":{"description":"Calculations this account can run now: the paid balance while a paid period is active, otherwise the lifetime free balance.","minimum":0,"type":"integer"},"source":{"enum":["free","paid"],"type":"string"},"state":{"enum":["free_available","free_exhausted","paid_active","paid_expired","paid_quota_exhausted"],"type":"string"}},"required":["product","name","priceUsd","allowance","period","remaining","active"],"type":"object"},"ResultResponse":{"properties":{"data":{"properties":{"result":{"oneOf":[{"$ref":"#/definitions/WaterfallResult"},{"$ref":"#/definitions/FundResult"}]}},"type":"object"},"meta":{"properties":{"keyName":{"type":"string"}},"type":"object"}},"type":"object"},"SecondarySaleEvent":{"description":"Transfer existing shares from one holder to another.","properties":{"class":{"description":"Defaults to \"common\".","enum":["common","preferred","option-pool","warrant"]},"fromId":{"type":"string"},"label":{"type":"string"},"round":{"description":"Which series the shares come from (e.g. \"Series A\").","type":"string"},"shares":{"type":"number"},"toId":{"type":"string"},"toName":{"type":"string"},"type":{"const":"secondary_sale"}},"required":["type","label","fromId","toId","toName","shares"],"type":"object"},"UsagePeriod":{"properties":{"allowance":{"type":"integer"},"consumed":{"type":"integer"},"enabled":{"type":"boolean"},"id":{"type":"string"},"period_end":{"format":"date-time","type":"string"},"period_start":{"format":"date-time","type":"string"},"reserved":{"type":"integer"}},"required":["id","period_start","period_end","allowance","consumed","reserved","enabled"],"type":"object"},"WarrantRoundEvent":{"description":"Issue warrants (right to buy shares at a set price); counts toward fully diluted now.","properties":{"label":{"type":"string"},"type":{"const":"warrant_round"},"warrants":{"items":{"properties":{"countMode":{"enum":["shares","value"]},"id":{"type":"string"},"name":{"type":"string"},"parValue":{"type":"number"},"priceDiscount":{"description":"0..1 discount on the source round price.","type":"number"},"priceFromRound":{"description":"Source round label to price off, when variable.","type":"string"},"purchaseClass":{"enum":["common","preferred"]},"purchasePrice":{"type":"number"},"purchaseRound":{"description":"For a preferred warrant, the series it targets.","type":"string"},"shares":{"description":"When countMode=\"shares\".","type":"number"},"totalValue":{"description":"When countMode=\"value\": shares = totalValue / purchasePrice.","type":"number"}},"required":["id","name","purchaseClass","countMode"],"type":"object"},"type":"array"}},"required":["type","label","warrants"],"type":"object"},"WaterfallComputeRequest":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"exitValuation":{"maximum":1000000000000000,"minimum":0,"type":"number"},"model":{"additionalProperties":false,"properties":{"common":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"invested":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares"],"type":"object"},"maxItems":500,"type":"array"},"convertibles":{"items":{"additionalProperties":false,"properties":{"accruedInterest":{"maximum":1000000000000000,"minimum":0,"type":"number"},"cap":{"exclusiveMinimum":0,"maximum":1000000000000000,"minimum":0,"type":"number"},"cashOutAs":{"enum":["debt","equity"],"type":"string"},"cashOutSeniority":{"enum":["senior","pari-passu"],"type":"string"},"discount":{"maximum":1,"minimum":0,"type":"number"},"id":{"maxLength":200,"minLength":1,"type":"string"},"kind":{"enum":["pre-safe","post-safe","note"],"type":"string"},"name":{"maxLength":200,"type":"string"},"premiumMultiple":{"maximum":1000000000000000,"minimum":0,"type":"number"},"principal":{"maximum":1000000000000000,"minimum":0,"type":"number"},"seniority":{"type":"number"}},"required":["id","name","kind","principal"],"type":"object"},"maxItems":100,"type":"array"},"debt":{"maximum":1000000000000000,"minimum":0,"type":"number"},"options":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"strike":{"maximum":1000000000000000,"minimum":0,"type":"number"},"vestedFraction":{"maximum":1,"minimum":0,"type":"number"}},"required":["id","name","shares","strike"],"type":"object"},"maxItems":500,"type":"array"},"preferred":{"items":{"additionalProperties":false,"properties":{"conversionRatio":{"exclusiveMinimum":0,"maximum":1000000000000000,"minimum":0,"type":"number"},"dividendCumulative":{"type":"boolean"},"dividendRate":{"maximum":1,"minimum":0,"type":"number"},"dividendStart":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"holders":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"invested":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares","invested"],"type":"object"},"maxItems":500,"type":"array"},"id":{"maxLength":200,"minLength":1,"type":"string"},"investmentDate":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"multiple":{"maximum":1000000000000000,"minimum":0,"type":"number"},"name":{"maxLength":200,"type":"string"},"participation":{"enum":["none","full","capped"],"type":"string"},"participationCap":{"maximum":1000000000000000,"minimum":0,"type":"number"},"seniority":{"type":"number"}},"required":["id","name","holders","seniority"],"type":"object"},"maxItems":20,"type":"array"},"transactionExpenses":{"maximum":1000000000000000,"minimum":0,"type":"number"},"unissuedPool":{"additionalProperties":false,"properties":{"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"treatment":{"const":"cancel","type":"string"}},"required":["shares"],"type":"object"},"warrants":{"items":{"additionalProperties":false,"properties":{"id":{"maxLength":200,"minLength":1,"type":"string"},"name":{"maxLength":200,"type":"string"},"shares":{"maximum":1000000000000000,"minimum":0,"type":"number"},"strike":{"maximum":1000000000000000,"minimum":0,"type":"number"}},"required":["id","name","shares","strike"],"type":"object"},"maxItems":500,"type":"array"}},"required":["common","preferred"],"type":"object"}},"required":["exitValuation","model"],"type":"object"},"WaterfallResult":{"properties":{"classes":{"items":{"type":"object"},"type":"array"},"converged":{"type":"boolean"},"convertibles":{"items":{"type":"object"},"type":"array"},"distributable":{"type":"number"},"exitValuation":{"type":"number"},"holders":{"items":{"type":"object"},"type":"array"},"iterations":{"type":"integer"},"perShare":{"items":{"type":"object"},"type":"array"},"series":{"items":{"type":"object"},"type":"array"}},"required":["exitValuation","distributable","classes","series","convertibles","holders","perShare","iterations","converged"],"type":"object"}},"properties":{"features":{"additionalProperties":false,"properties":{"capTable":{"additionalProperties":false,"properties":{"bridge":{"additionalProperties":false,"properties":{"expectedAgeAtRound":{"items":{"maximum":100,"minimum":0,"type":"number"},"maxItems":21,"type":"array"},"numInvestmentsTarget":{"maximum":10000,"minimum":0,"type":"number"},"stageName":{"maxLength":200,"type":"string"},"writeoffHoldYears":{"maximum":100,"minimum":0,"type":"number"},"yearsBetweenRounds":{"maximum":100,"minimum":0,"type":"number"}},"required":["numInvestmentsTarget"],"type":"object"},"inputs":{"additionalProperties":false,"properties":{"defaultExitMultiple":{"minimum":0,"type":"number"},"defaultGraduationRate":{"maximum":100,"minimum":0,"type":"number"},"defaultValuationIncrease":{"minimum":0,"type":"number"},"defaultWriteoffRate":{"maximum":100,"minimum":0,"type":"number"},"dilutionFromOptionPoolsPerRound":{"maximum":100,"minimum":0,"type":"number"},"dilutionPerRound":{"maximum":100,"minimum":0,"type":"number"},"exitMultipleOnLastRound":{"minimum":0,"type":"number"},"followOnRounds":{"items":{"additionalProperties":false,"properties":{"dilutionFromRound":{"maximum":100,"minimum":0,"type":"number"},"newOptionPoolInRound":{"maximum":100,"minimum":0,"type":"number"},"pctCompaniesFollowOn":{"maximum":100,"minimum":0,"type":"number"},"valuationIncrease":{"minimum":0,"type":"number"}},"type":"object"},"maxItems":20,"type":"array"},"newInvestmentCheckSize":{"minimum":0,"type":"number"},"numFollowOnRounds":{"maximum":20,"minimum":0,"type":"integer"},"numRoundsFollowOn":{"maximum":20,"minimum":0,"type":"integer"},"ownershipOutsideInvestment":{"items":{"maximum":100,"minimum":0,"type":"number"},"maxItems":21,"type":"array"},"pctCompaniesFollowOn":{"maximum":100,"minimum":0,"type":"number"},"postmoneyValuation":{"exclusiveMinimum":0,"type":"number"},"roundLabels":{"items":{"maxLength":200,"type":"string"},"maxItems":21,"type":"array"},"roundOutcomes":{"items":{"additionalProperties":false,"properties":{"exitMultiple":{"minimum":0,"type":"number"},"graduationRate":{"maximum":100,"minimum":0,"type":"number"},"writeoffRate":{"maximum":100,"minimum":0,"type":"number"}},"type":"object"},"maxItems":21,"type":"array"}},"required":["newInvestmentCheckSize","postmoneyValuation","numFollowOnRounds","numRoundsFollowOn","defaultValuationIncrease","dilutionPerRound","dilutionFromOptionPoolsPerRound","pctCompaniesFollowOn","defaultGraduationRate","defaultWriteoffRate","defaultExitMultiple"],"type":"object"}},"required":["inputs","bridge"],"type":"object"},"deals":{"description":"Build the portfolio from specific deals instead of entry stages and return tiers (and instead of capTable when both are sent). Each deal has its checks, each in a quarter from first close (1-based), and one exit in a quarter, at a multiple of everything invested in the deal (0 is a write-off) or for proceeds in money. Invested capital is the sum of the checks and called capital is solved from it; the fund life runs to the last exit, capped by maxFundLifeYears; each deal comes back as a row of result.tiers. Recycling keeps back the earliest proceeds, up to recycledCapitalPct of committed, only while later checks can use them. Send dealsMix true to mix the methods instead.","items":{"additionalProperties":false,"properties":{"exit":{"additionalProperties":false,"properties":{"multiple":{"description":"Of everything invested in the deal. 0 is a write-off.","maximum":10000,"minimum":0,"type":"number"},"proceeds":{"description":"Exit proceeds in money, instead of a multiple.","minimum":0,"type":"number"},"quarter":{"maximum":400,"minimum":1,"type":"integer"}},"required":["quarter"],"type":"object"},"investments":{"description":"The checks the fund writes into the deal: the initial check, then any follow-ons.","items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"quarter":{"description":"Quarter from first close, 1-based.","maximum":400,"minimum":1,"type":"integer"}},"required":["quarter","amount"],"type":"object"},"maxItems":40,"minItems":1,"type":"array"},"name":{"maxLength":200,"minLength":1,"type":"string"}},"required":["name","investments","exit"],"type":"object"},"maxItems":500,"minItems":1,"type":"array"},"dealsMix":{"description":"With deals: the deals come first, and the capital they leave (committed less fees and expenses, plus recycling, less the checks) is invested through the entry stages and return tiers, or capTable when sent, as it would be without deals. Recycling then goes to the stages, the fund life is the later of the deals' and the stages', and result.tiers lists the deals and then the tiers.","type":"boolean"},"fees":{"additionalProperties":false,"properties":{"base":{"enum":["committed","nav","aum","step-down"],"type":"string"},"basesByYear":{"items":{"enum":["committed","nav","aum","step-down"],"type":"string"},"maxItems":100,"type":"array"},"feeYears":{"maximum":100,"minimum":0,"type":"number"},"ratePct":{"maximum":1,"minimum":0,"type":"number"},"schedule":{"additionalProperties":false,"description":"The fee as an LPA states it, on the dated schedule: each rate from a point in fund years (0 = first close; 5.5 starts halfway through year 6 and cuts the period it lands in), charged on committed capital, invested cost not yet realized, or NAV, with organizational expenses above organizationalExpenseCap offsetting the fee. Runs for feeYears; base, ratePct, yearlyRateSchedule and basesByYear are ignored when it is set.","properties":{"frequency":{"enum":["quarterly","semiannual","annual"],"type":"string"},"organizationalExpenseCap":{"minimum":0,"type":"number"},"steps":{"items":{"additionalProperties":false,"properties":{"basis":{"enum":["committed","invested","nav"],"type":"string"},"fromYear":{"maximum":100,"minimum":0,"type":"number"},"rate":{"maximum":1,"minimum":0,"type":"number"}},"required":["fromYear","rate","basis"],"type":"object"},"maxItems":20,"minItems":1,"type":"array"}},"required":["steps"],"type":"object"},"stepDownAfterYears":{"maximum":100,"minimum":0,"type":"number"},"yearlyRateSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":100,"type":"array"}},"required":["base"],"type":"object"},"followOn":{"additionalProperties":false,"properties":{"offsetQuarters":{"maximum":40,"minimum":0,"type":"integer"}},"required":["offsetQuarters"],"type":"object"},"lpClasses":{"items":{"additionalProperties":false,"properties":{"callSchedule":{"additionalProperties":false,"description":"Call this class on its own schedule instead of as the fund needs cash. pct is a share of the class commitment per fund year (called in the year's first quarter) or per quarter. Whatever the entries leave is called when the fund needs it.","properties":{"frequency":{"enum":["year","quarter"],"type":"string"},"pct":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":80,"type":"array"}},"required":["frequency","pct"],"type":"object"},"commitment":{"minimum":0,"type":"number"},"feeOverrides":{"additionalProperties":false,"properties":{"basesByYear":{"items":{"enum":["committed","nav","aum","step-down"],"type":"string"},"maxItems":100,"type":"array"},"ratePct":{"maximum":1,"minimum":0,"type":"number"},"yearlyRateSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"maxItems":100,"type":"array"}},"type":"object"},"isFirstLoss":{"type":"boolean"},"isRemainder":{"type":"boolean"},"name":{"maxLength":200,"minLength":1,"type":"string"},"overrides":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"carryTiers":{"items":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"catchup":{"type":"boolean"},"irrThreshold":{"description":"Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.","maximum":1,"minimum":0,"type":"number"},"moicThreshold":{"minimum":0,"type":"number"}},"required":["moicThreshold","carryPct"],"type":"object"},"maxItems":20,"type":"array"},"catchupGpShare":{"maximum":1,"minimum":0,"type":"number"},"catchupPct":{"maximum":1,"minimum":0,"type":"number"},"preferredReturnMode":{"enum":["none","irr","multiple"],"type":"string"},"preferredReturnMultiple":{"maximum":100,"minimum":0,"type":"number"},"preferredReturnRate":{"maximum":1,"minimum":0,"type":"number"}},"type":"object"}},"required":["name","commitment"],"type":"object"},"maxItems":50,"minItems":1,"type":"array"},"mgmtCo":{"additionalProperties":false,"properties":{"expenses":{"items":{"additionalProperties":false,"properties":{"annualCost":{"minimum":0,"type":"number"},"growthRatePerYear":{"maximum":10,"minimum":-1,"type":"number"},"label":{"maxLength":200,"type":"string"},"yearsActive":{"items":{"maximum":100,"minimum":1,"type":"integer"},"maxItems":100,"type":"array"}},"required":["label","annualCost"],"type":"object"},"maxItems":100,"type":"array"},"oneTimeFormationCost":{"minimum":0,"type":"number"},"startingCash":{"minimum":0,"type":"number"}},"required":["expenses"],"type":"object"},"recycling":{"additionalProperties":false,"properties":{"defaultTreatment":{"enum":["retained","deemed"],"type":"string"},"schedule":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"quarter":{"maximum":400,"minimum":1,"type":"integer"},"treatment":{"enum":["retained","deemed"],"type":"string"}},"required":["quarter"],"type":"object"},"maxItems":400,"type":"array"}},"type":"object"},"waterfall":{"additionalProperties":false,"properties":{"basis":{"description":"Whole fund (the default, European) or deal by deal (American): return of capital owes only the capital in deals exited or written off so far, so carry can be paid before the fund returns all capital. The clawback settles on the whole fund.","enum":["whole-fund","deal-by-deal"],"type":"string"},"carryTiers":{"items":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"catchup":{"type":"boolean"},"irrThreshold":{"description":"Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.","maximum":1,"minimum":0,"type":"number"},"moicThreshold":{"minimum":0,"type":"number"}},"required":["moicThreshold","carryPct"],"type":"object"},"maxItems":20,"type":"array"},"catchupGpShare":{"maximum":1,"minimum":0,"type":"number"},"catchupMeasure":{"description":"GP catchup: to the carry share of the pref paid (the default), or until the GP holds the carry share of all profit paid. They differ when the GP shares the catchup with LPs.","enum":["preferred","profit"],"type":"string"},"catchupPct":{"maximum":1,"minimum":0,"type":"number"},"clawback":{"type":"boolean"},"preferredReturnBase":{"description":"IRR pref: accrue on capital not yet returned plus unpaid pref (the default), or on each contribution from its date whatever comes back.","enum":["unreturned","contributed"],"type":"string"},"preferredReturnCompounding":{"description":"IRR pref: compound annually (the default) or simple interest.","enum":["annual","none"],"type":"string"},"preferredReturnMode":{"enum":["none","irr","multiple"],"type":"string"},"preferredReturnMultiple":{"maximum":100,"minimum":0,"type":"number"},"preferredReturnRate":{"maximum":1,"minimum":0,"type":"number"}},"type":"object"}},"type":"object"},"firstCloseDate":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"format":{"enum":["json","xlsx","xlsx_url"],"type":"string"},"fundName":{"maxLength":200,"type":"string"},"granularity":{"enum":["year","quarter","none"],"type":"string"},"idempotency_key":{"description":"Optional retry key; reuse only with identical input.","type":"string"},"inputs":{"additionalProperties":false,"properties":{"carryPct":{"maximum":1,"minimum":0,"type":"number"},"committedCapital":{"exclusiveMinimum":0,"type":"number"},"fundOperationsYears":{"exclusiveMinimum":0,"type":"number"},"gpCommitBearsCarry":{"type":"boolean"},"gpCommitCountedTowardInvested":{"type":"boolean"},"gpCommitPct":{"maximum":1,"minimum":0,"type":"number"},"maxFundLifeYears":{"exclusiveMinimum":0,"type":"number"},"mgmtFeePct":{"maximum":1,"minimum":0,"type":"number"},"mgmtFeeSchedule":{"items":{"maximum":1,"minimum":0,"type":"number"},"type":"array"},"mgmtFeesPeriodYears":{"exclusiveMinimum":0,"type":"number"},"navMarkupYears":{"maximum":100,"minimum":0,"type":"number"},"newInvestmentPeriodYears":{"exclusiveMinimum":0,"type":"number"},"operationalExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"},"quarterly":{"items":[{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"}],"maxItems":4,"minItems":4,"type":"array"}},"required":["label","amount"],"type":"object"},"type":"array"},"operationalExpensesAnnual":{"minimum":0,"type":"number"},"operationalExpensesBreakout":{"additionalProperties":false,"properties":{"audit":{"minimum":0,"type":"number"},"fundAdmin":{"minimum":0,"type":"number"},"other":{"minimum":0,"type":"number"},"tax":{"minimum":0,"type":"number"}},"required":["fundAdmin","tax","audit","other"],"type":"object"},"organizationalExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"}},"required":["label","amount"],"type":"object"},"type":"array"},"organizationalExpenses":{"minimum":0,"type":"number"},"partnershipExpenseLines":{"items":{"additionalProperties":false,"properties":{"amount":{"minimum":0,"type":"number"},"label":{"type":"string"},"quarterly":{"items":[{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"},{"minimum":0,"type":"number"}],"maxItems":4,"minItems":4,"type":"array"}},"required":["label","amount"],"type":"object"},"type":"array"},"partnershipExpensesAnnual":{"minimum":0,"type":"number"},"portfolio":{"additionalProperties":false,"properties":{"avgCheckSizeFollow":{"minimum":0,"type":"number"},"avgCheckSizeNew":{"minimum":0,"type":"number"},"entryStages":{"items":{"additionalProperties":false,"properties":{"avgCheckSize":{"minimum":0,"type":"number"},"followOnChecks":{"items":{"additionalProperties":false,"properties":{"avgCheckSize":{"minimum":0,"type":"number"},"label":{"type":"string"},"pctOfReserve":{"maximum":1,"minimum":0,"type":"number"}},"required":["avgCheckSize"],"type":"object"},"type":"array"},"initialCheckLabel":{"type":"string"},"name":{"type":"string"},"numInvestments":{"minimum":0,"type":"number"},"pctAllocation":{"maximum":1,"minimum":0,"type":"number"},"reserveRatio":{"maximum":1,"minimum":0,"type":"number"}},"required":["name","numInvestments","avgCheckSize"],"type":"object"},"type":"array"},"followPct":{"maximum":1,"minimum":0,"type":"number"},"newPct":{"maximum":1,"minimum":0,"type":"number"}},"required":["newPct","followPct","avgCheckSizeNew","avgCheckSizeFollow"],"type":"object"},"recycledCapitalPct":{"maximum":1,"minimum":0,"type":"number"},"returnTiers":{"items":{"additionalProperties":false,"properties":{"holdingPeriodYears":{"minimum":0,"type":"number"},"multiple":{"minimum":0,"type":"number"},"name":{"minLength":1,"type":"string"},"numCompanies":{"minimum":0,"type":"number"},"pctOfCapital":{"maximum":1,"minimum":0,"type":"number"}},"required":["name","pctOfCapital","multiple","holdingPeriodYears"],"type":"object"},"minItems":1,"type":"array"},"solveCalledFromDeployment":{"type":"boolean"},"stageInputMode":{"enum":["pct-capital","num-companies"],"type":"string"},"targetTotalInvestments":{"minimum":0,"type":"number"},"tierFractional":{"type":"boolean"},"tierInputMode":{"enum":["pct-capital","num-companies"],"type":"string"}},"required":["committedCapital","gpCommitPct","gpCommitCountedTowardInvested","organizationalExpenses","operationalExpensesAnnual","mgmtFeePct","recycledCapitalPct","carryPct","newInvestmentPeriodYears","mgmtFeesPeriodYears","portfolio","returnTiers"],"type":"object"}},"required":["inputs"],"type":"object"},"name":"fund_economics_compute"},{"description":"Returns public access terms for an engine: product, annual price, billing period, annual allowance, and a customer checkout URL. This is informational and does not purchase or confirm account-specific access; use get_account_access for the authenticated account.","inputSchema":{"properties":{"model":{"description":"Model key to check access for.","enum":["cap-table","exit-waterfall","fund-economics"],"type":"string"}},"required":["model"],"type":"object"},"name":"get_access"},{"description":"Returns whether this connection is signed in, its annual product access and remaining calculations. Does not consume allowance. Call it before a compute tool if you are unsure the user can run one. If the result contains action_required (not signed in, no purchase, allowance used), relay it to the user with its links and offer to retry. Never skip the calculation silently.","inputSchema":{"properties":{},"type":"object"},"name":"get_account_access"},{"description":"Returns signed-in usage history and endpoint/source breakdown. Does not consume allowance. If the result contains action_required (not signed in, no purchase, allowance used), relay it to the user with its links and offer to retry. Never skip the calculation silently.","inputSchema":{"properties":{"from":{"description":"Optional UTC start date (YYYY-MM-DD).","type":"string"},"to":{"description":"Optional UTC end date (YYYY-MM-DD).","type":"string"}},"type":"object"},"name":"get_account_usage"},{"description":"Returns Hemrock's financial modeling best practices and design principles for a given topic. Useful as background context for AI interactions.","inputSchema":{"properties":{"topic":{"description":"Optional topic filter. Returns all best practices if omitted.","enum":["formatting","structure","inputs","assumptions","review","sharing","all"],"type":"string"}},"type":"object"},"name":"get_best_practices"},{"description":"Returns Layer 3 sanity-check and validation prompts — the 'where AI gets financial modeling wrong' guidance. Use these to audit AI-generated work or catch common modeling errors.","inputSchema":{"properties":{"template_name":{"description":"The template to get checks for. Use \"all\" for universal checks only.","enum":["standard","cap_table","venture_fund","venture_fund_quarterly","runway","saas","ecommerce","unit_economics","fund_economics","fund_economics_tool_web","venture_valuation","all"],"type":"string"}},"required":["template_name"],"type":"object"},"name":"get_checks"},{"description":"Returns the full text of a single Hemrock concept doc by slug. Use this to learn how a financial-modeling calculation actually works before building or auditing it. Get valid slugs from list_concepts.","inputSchema":{"properties":{"slug":{"description":"The concept slug, from list_concepts (e.g. \"waterfall\", \"anti-dilution\").","type":"string"}},"required":["slug"],"type":"object"},"name":"get_concept"},{"description":"Returns the universal context-setting primer for Hemrock models, plus an optional template-specific addendum. Always run this first before any other prompts.","inputSchema":{"properties":{"template_name":{"description":"Optional. If provided, appends a template-specific primer to the universal context.","enum":["standard","cap_table","venture_fund","venture_fund_quarterly","runway","saas","ecommerce","unit_economics","fund_economics","fund_economics_tool_web","venture_valuation"],"type":"string"}},"type":"object"},"name":"get_context"},{"description":"Returns task-specific Layer 2 prompts for a given template and task type. These are ready-to-use prompts for common modeling tasks.","inputSchema":{"properties":{"task_type":{"description":"Optional task type filter.","type":"string"},"template_name":{"description":"The Hemrock template being used.","enum":["standard","cap_table","venture_fund","venture_fund_quarterly","runway","saas","ecommerce","unit_economics","fund_economics","fund_economics_tool_web","venture_valuation"],"type":"string"}},"required":["template_name"],"type":"object"},"name":"get_prompts"},{"description":"Returns a saved model's contents in the shape the compute tools take: a cap table's events and options, a waterfall's model and saved exit, or a fund's inputs, the features switched on, and featuresSavedButOff (configured but switched off). Free: uses no calculations. Needs a signed-in connection.","inputSchema":{"properties":{"id":{"description":"The model id from list_saved_models.","type":"string"},"kind":{"description":"\"cap-table\" (Cap Table builder), \"waterfall\" (Exit Waterfall builder) or \"fund\" (the web Venture Capital Model).","enum":["cap-table","waterfall","fund"],"type":"string"}},"required":["kind","id"],"type":"object"},"name":"get_saved_model"},{"description":"Lists Hemrock financial-modeling concept docs — the methodology behind the math (exit waterfalls, anti-dilution, convertibles, cohorts, circular references, unit economics, and more). Returns a compact index of slugs, titles, and descriptions. Optionally filter by template_name or tag. Call get_concept to read the full text of any entry.","inputSchema":{"properties":{"tag":{"description":"Optional. Filter to concepts whose tags contain this string (e.g. \"cap tables\").","type":"string"},"template_name":{"description":"Optional. Filter to concepts relevant to a specific Hemrock template.","enum":["standard","cap_table","venture_fund","venture_fund_quarterly","runway","saas","ecommerce","unit_economics","fund_economics","fund_economics_tool_web","venture_valuation"],"type":"string"}},"type":"object"},"name":"list_concepts"},{"description":"Lists the hosted Hemrock calculation engines (cap table, exit waterfall, fund economics), what each computes, and its price and checkout link. Free and needs no sign-in, so call it when the user asks what Hemrock can calculate or what it costs.","inputSchema":{"properties":{},"type":"object"},"name":"list_models"},{"description":"Lists the cap tables, exit waterfalls and fund models saved to the user's Hemrock account, plus fund models others have shared with them, newest first. Each has its kind, id, name, the user's role (owner, editor, viewer) and a url that opens it in the browser builder. Call this when the user mentions \"my cap table\", \"my fund model\" or a model by name, before building one from scratch. Free: uses no calculations. Needs a signed-in connection.","inputSchema":{"properties":{"kind":{"description":"\"cap-table\" (Cap Table builder), \"waterfall\" (Exit Waterfall builder) or \"fund\" (the web Venture Capital Model).","enum":["cap-table","waterfall","fund"],"type":"string"}},"type":"object"},"name":"list_saved_models"},{"description":"Returns how to get a person on the user's model: a one-hour working session with the person who built Hemrock's models (also the way to get a model or workflow built with AI reviewed), custom model work, or fractional CFO for venture funds. Each comes with its live price and booking link. Use it when the user asks for a human review, is stuck after a check fails, or a check_in note needs judgement. Offer it; don't push it. Pass the saved model's url so the user can bring it to the session. Free and needs no sign-in. It books nothing: the user books and pays on hemrock.com.","inputSchema":{"properties":{"model_url":{"description":"Optional. The saved model's url from list_saved_models, for the user to bring along.","type":"string"},"need":{"description":"\"review\" for an hour on an existing model (the default), \"custom\" for a model built to order, \"cfo\" for ongoing fund finance.","enum":["review","custom","cfo"],"type":"string"}},"type":"object"},"name":"request_review"},{"description":"Calculates a saved model as it stands, with the same engine as the browser builder: ownership after every event for a cap table, proceeds by holder for a waterfall (at the saved exit, or up to 10 exitValuations you pass), or a fund's lifetime totals plus the fund by year (granularity \"quarter\" or \"none\" to change that). For a fund, workbook true adds a 24-hour link to the live Excel workbook; that needs the Venture Capital Model, the same as the browser's Excel export. Free: uses no calculations. Needs a signed-in connection.","inputSchema":{"properties":{"exitValuations":{"description":"Waterfall only: sale prices to run, up to 10.","items":{"type":"number"},"type":"array"},"granularity":{"description":"Fund only.","enum":["year","quarter","none"],"type":"string"},"id":{"description":"The model id from list_saved_models.","type":"string"},"kind":{"description":"\"cap-table\" (Cap Table builder), \"waterfall\" (Exit Waterfall builder) or \"fund\" (the web Venture Capital Model).","enum":["cap-table","waterfall","fund"],"type":"string"},"workbook":{"description":"Fund only: add a link to the live Excel workbook.","type":"boolean"}},"required":["kind","id"],"type":"object"},"name":"run_saved_model"},{"description":"Saves a change to a model in the user's account; the browser builder shows it the next time it opens. Send only the fields that change. Owners can change anything; invited editors of a fund model can change its inputs while the owner has access; viewers can't change anything. Tell the user what you changed, run the model to show the effect, and give them the url. Free: uses no calculations. Needs a signed-in connection.","inputSchema":{"properties":{"cashFlows":{"description":"Fund only: show the Forecast and Statements tabs in the builder.","type":"boolean"},"events":{"description":"Cap table only: the full list of financing events, in order, the same shape cap_table_compute takes. Replaces the saved list, so read the model first and send back the whole list with your change.","items":{"type":"object"},"type":"array"},"features":{"description":"Fund only: features to switch on or off, keyed capTable, fees, waterfall, recycling, lpClasses, mgmtCo or followOn, with the same shapes as fund_economics_compute features. An object switches the feature on with that config; false switches it off and keeps its config. The user switches these on deliberately, so only change one they asked about.","type":"object"},"fundName":{"description":"Fund only: the fund name used in the model and its workbook.","type":"string"},"id":{"description":"The model id from list_saved_models.","type":"string"},"inputs":{"description":"Fund only: fund inputs to change, the same fields as fund_economics_compute inputs. Merged onto the saved inputs, so send only what changes.","type":"object"},"kind":{"description":"\"cap-table\" (Cap Table builder), \"waterfall\" (Exit Waterfall builder) or \"fund\" (the web Venture Capital Model).","enum":["cap-table","waterfall","fund"],"type":"string"},"model":{"description":"Waterfall only: the cap stack, the same shape as exit_waterfall_compute's model. Replaces the saved one.","type":"object"},"name":{"description":"The model name shown in the builder. Owner only.","type":"string"},"options":{"description":"Cap table: { wholeShares, pricePrecision }. Waterfall: { exitValuation, exitDate, wholeShares, pricePrecision }. Merged onto the saved options.","type":"object"}},"required":["kind","id"],"type":"object"},"name":"update_saved_model"}]},"body_sha256":"fc7357f4d5ea4f0997e485939f3627f8e8c094ffa4a4cecd76e755dfa2b845f9","prev_id":778260,"leaf":"0x313704695f94545439ec6be1b1d33a3e977bfe6112255a5fdc7b7045d1db1c3a","leaf_text":"{\"body\":\"fc7357f4d5ea4f0997e485939f3627f8e8c094ffa4a4cecd76e755dfa2b845f9\",\"id\":1779925,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793554750611491,\"prev\":778260,\"subject\":\"a3865ac5-7c95-4881-a4f4-42a1cc40d7af\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-11-01","leaves":302406,"root":"0x7fa2cba1cf3d6b35630896f5fe1a650adb307ea2c376e80a5f2d9276b7cb5ab3","chained":"0x577ff89ba012beeff3197bcff7fa86752074bdf54205a24359cc437be2a952a4","anchor_chain":"eip155:5042002","anchor_tx":"0x435bc1b9331471d72e1998f2e420983b5189d4da65ffbd6f27ef40daf5e1ea90","anchor_block":70262758},"proof":["0x31374c1a67623e072703f09f4fde5dc17ff11b90e9befb57e77656fe02b0f8e4","0xd9b9b1dfafbe7aa035aab6c14ef2859d2af93329349b5ca1368e6570e9252eea","0xf2020e4b13d0c703c16c85be26ea3ca76e274fa9dced244daea77698f94c886e","0x7ff1a9700ed1915a5834bf112fcd09efaffe35f3f4ac0626aed25bc0613c2016","0x3cc1fda8d7461b575495420a4a7bed7f8d0d7a6e9bce5e0e957cf7f0a0d19350","0xfb71b4b023a0da2c45efade39fa7684040daa1e46237e2ab7f8fe7e5aff39da9","0x8ba76102cc3e426b75ac51f97df9443636ed041a36ff0495df06b42645d22685","0x3a6a2cb6a855ef40f242b1f87646b1c0b9db073400b898c9109218179b339ff8","0x88a1e032a98b353ec0d06a8c840e1635648cff4c2195e3176b78f72a97852997","0xc1e042003bb896af8b0b7a16de822d67902b63a0dbdf183aeef148c458f5b9f8","0x18b56b162c67c641fb2861dd34e81cf94df62cd9356c19850e2706480628ab69","0x099087dc7fd6ec5a9024ef0581bebaa3e7a2663361b34456018c7e26cacdc019","0xc392c192bf0854a262ff9bab5c87785855c8eadc29dc2a6a018670b7fb0b5d3b","0x770f20a6b76206ceacb50b86f521e555bd27a1f27e7156c64591601c5b119595","0x80b1e578d986f759ca01ea02c7a922e757a26a65318f9844ac72c5c1d4fe339e","0xa856ad79e6f29a2b5516257f0d4817172cca11251fe2e7e8f3911b105fe2b622","0x02b3554752e71a19b12d7a76dbff436e85387226ceec89fdebdcdaf0122c2932","0x1973893697931b7512ae5dc1a3c92ef92f633ae3574dce9029a35b5e94d2d364","0x3315fd2757fdd435852cc277377234a3f3909a6d2a089d0e36f6d59aacfda910"]}