Hemrock financial modeling prompts: context primers, task prompts, checks, and best practices.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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. Paid: 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.
Optional retry key; reuse only with identical input.
Tool list last changed Oct 23, 2026.
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. Paid: 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.
| Argument | Type | Description |
|---|---|---|
| events* | array | |
| idempotency_key | string | Optional retry key; reuse only with identical input. |
{
"type": "object",
"required": [
"events"
],
"properties": {
"events": {
"type": "array",
"items": {
"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"
}
],
"description": "One cap-table event, discriminated by `type`. Pass events in chronological order.",
"discriminator": {
"mapping": {
"option_pool": "#/components/schemas/OptionPoolEvent",
"option_grant": "#/components/schemas/OptionGrantEvent",
"priced_round": "#/components/schemas/PricedRoundEvent",
"warrant_round": "#/components/schemas/WarrantRoundEvent",
"secondary_sale": "#/components/schemas/SecondarySaleEvent",
"common_issuance": "#/components/schemas/CommonIssuanceEvent",
"manual_issuance": "#/components/schemas/ManualIssuanceEvent",
"convertible_round": "#/components/schemas/ConvertibleRoundEvent"
},
"propertyName": "type"
}
},
"maxItems": 200
},
"idempotency_key": {
"type": "string",
"description": "Optional retry key; reuse only with identical input."
}
},
"definitions": {
"Error": {
"type": "object",
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message",
"retryable"
],
"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"
}
}
}
}
},
"DailyUsage": {
"type": "object",
"required": [
"day",
"product",
"endpoint",
"source",
"succeeded",
"failed"
],
"properties": {
"day": {
"type": "string",
"format": "date"
},
"failed": {
"type": "integer"
},
"source": {
"type": "string"
},
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
},
"endpoint": {
"type": "string"
},
"succeeded": {
"type": "integer"
}
}
},
"FundDetail": {
"type": "object",
"required": [
"granularity",
"irr",
"periods",
"statements"
],
"properties": {
"irr": {
"type": "object",
"properties": {
"netIRR": {
"type": "object",
"properties": {
"lp": {
"type": "number"
},
"total": {
"type": "number"
}
}
},
"grossIRR": {
"type": "number"
}
},
"description": "IRRs solved from the dated quarterly cash flows, with terminal NAV."
},
"mgmtCo": {
"type": "object"
},
"periods": {
"type": "object",
"required": [
"labels"
],
"properties": {
"dpi": {
"type": "array",
"items": {
"type": "number"
}
},
"nav": {
"$ref": "#/definitions/FundSeries"
},
"rvpi": {
"type": "array",
"items": {
"type": "number"
}
},
"tvpi": {
"type": "array",
"items": {
"type": "number"
}
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"jCurveLp": {
"type": "array",
"items": {
"type": "number"
},
"description": "Cumulative LP net cash flow at the end of each period."
},
"proceeds": {
"$ref": "#/definitions/FundSeries"
},
"gpCatchup": {
"type": "array",
"items": {
"type": "number"
},
"description": "GP catchup paid each period. Only with a waterfall block."
},
"calledCapital": {
"$ref": "#/definitions/FundSeries"
},
"distributions": {
"$ref": "#/definitions/FundSeries",
"description": "Distributions after carry. The LP line runs through the waterfall period by period."
},
"managementFees": {
"$ref": "#/definitions/FundSeries"
},
"carriedInterest": {
"type": "array",
"items": {
"type": "number"
},
"description": "GP carry paid each period, catchups included."
},
"investedCapital": {
"$ref": "#/definitions/FundSeries"
},
"preferredReturn": {
"type": "array",
"items": {
"type": "number"
},
"description": "Preferred return paid to LPs each period. Only with a waterfall block."
},
"recycledCapital": {
"$ref": "#/definitions/FundSeries"
},
"partnershipExpenses": {
"$ref": "#/definitions/FundSeries"
}
}
},
"lpClasses": {
"type": "object"
},
"waterfall": {
"type": "object",
"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."
},
"statements": {
"type": "object",
"properties": {
"periods": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": [
"string",
"null"
]
},
"cashFlow": {
"type": "object"
},
"periodEnd": {
"type": "string"
},
"periodStart": {
"type": "string"
},
"balanceSheet": {
"type": "object"
},
"incomeStatement": {
"type": "object"
}
}
}
},
"currency": {
"type": "string"
}
}
},
"granularity": {
"enum": [
"year",
"quarter"
],
"type": "string"
}
},
"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."
},
"FundResult": {
"type": "object",
"required": [
"committedCapital",
"calledCapital",
"managementFees",
"partnershipExpenses",
"investedCapital",
"proceeds",
"distributions",
"grossMultiple",
"netMultiple",
"grossIRR",
"netIRR",
"pic",
"dpi",
"rvpi",
"tvpi",
"weightedHoldPeriodYears"
],
"properties": {
"dpi": {
"type": "number"
},
"pic": {
"type": "number"
},
"rvpi": {
"type": "number"
},
"tvpi": {
"type": "number"
},
"tiers": {
"type": "array",
"items": {
"type": "object"
}
},
"netIRR": {
"$ref": "#/definitions/LineTotals"
},
"grossIRR": {
"$ref": "#/definitions/LineTotals"
},
"proceeds": {
"$ref": "#/definitions/LineTotals"
},
"netMultiple": {
"$ref": "#/definitions/LineTotals"
},
"calledCapital": {
"$ref": "#/definitions/LineTotals"
},
"distributions": {
"$ref": "#/definitions/LineTotals"
},
"grossMultiple": {
"$ref": "#/definitions/LineTotals"
},
"managementFees": {
"$ref": "#/definitions/LineTotals"
},
"investedCapital": {
"$ref": "#/definitions/LineTotals"
},
"committedCapital": {
"$ref": "#/definitions/LineTotals"
},
"partnershipExpenses": {
"$ref": "#/definitions/LineTotals"
},
"weightedHoldPeriodYears": {
"type": "number"
}
}
},
"FundSeries": {
"type": "object",
"required": [
"total",
"lp",
"gp"
],
"properties": {
"gp": {
"type": "array",
"items": {
"type": "number"
}
},
"lp": {
"type": "array",
"items": {
"type": "number"
}
},
"total": {
"type": "array",
"items": {
"type": "number"
}
}
}
},
"LineTotals": {
"type": "object",
"required": [
"total",
"lp",
"gp"
],
"properties": {
"gp": {
"type": "number"
},
"lp": {
"type": "number"
},
"total": {
"type": "number"
}
}
},
"UsagePeriod": {
"type": "object",
"required": [
"id",
"period_start",
"period_end",
"allowance",
"consumed",
"reserved",
"enabled"
],
"properties": {
"id": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"consumed": {
"type": "integer"
},
"reserved": {
"type": "integer"
},
"allowance": {
"type": "integer"
},
"period_end": {
"type": "string",
"format": "date-time"
},
"period_start": {
"type": "string",
"format": "date-time"
}
}
},
"MonthlyUsage": {
"type": "object",
"required": [
"month",
"product",
"succeeded",
"failed"
],
"properties": {
"month": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}$"
},
"failed": {
"type": "integer"
},
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
},
"succeeded": {
"type": "integer"
}
}
},
"ProductAccess": {
"type": "object",
"required": [
"product",
"name",
"priceUsd",
"allowance",
"period",
"remaining",
"active"
],
"properties": {
"name": {
"type": "string"
},
"state": {
"enum": [
"free_available",
"free_exhausted",
"paid_active",
"paid_expired",
"paid_quota_exhausted"
],
"type": "string"
},
"active": {
"type": "boolean",
"description": "Active paid term; use state/freeRemaining for trial access."
},
"period": {
"anyOf": [
{
"type": "null"
},
{
"$ref": "#/definitions/UsagePeriod"
}
]
},
"source": {
"enum": [
"free",
"paid"
],
"type": "string"
},
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
},
"priceUsd": {
"type": "number",
"const": 20
},
"allowance": {
"type": "integer",
"const": 6000
},
"remaining": {
"type": "integer",
"minimum": 0,
"description": "Calculations this account can run now: the paid balance while a paid period is active, otherwise the lifetime free balance."
},
"nextAction": {
"type": "string"
},
"freeRemaining": {
"type": "integer",
"minimum": 0
},
"paidRemaining": {
"type": "integer",
"minimum": 0
},
"paidExpiration": {
"type": [
"string",
"null"
]
}
}
},
"AccessResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"required": [
"products",
"daily"
],
"properties": {
"daily": {
"type": "array",
"items": {
"$ref": "#/definitions/DailyUsage"
}
},
"monthly": {
"type": "array",
"items": {
"$ref": "#/definitions/MonthlyUsage"
}
},
"periods": {
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/UsagePeriod"
},
{
"type": "object",
"required": [
"product"
],
"properties": {
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
}
}
}
]
}
},
"products": {
"type": "array",
"items": {
"$ref": "#/definitions/ProductAccess"
}
}
}
}
}
},
"ComputeRequest": {
"type": "object",
"required": [
"events"
],
"properties": {
"events": {
"type": "array",
"items": {
"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"
}
],
"description": "One cap-table event, discriminated by `type`. Pass events in chronological order.",
"discriminator": {
"mapping": {
"option_pool": "#/components/schemas/OptionPoolEvent",
"option_grant": "#/components/schemas/OptionGrantEvent",
"priced_round": "#/components/schemas/PricedRoundEvent",
"warrant_round": "#/components/schemas/WarrantRoundEvent",
"secondary_sale": "#/components/schemas/SecondarySaleEvent",
"common_issuance": "#/components/schemas/CommonIssuanceEvent",
"manual_issuance": "#/components/schemas/ManualIssuanceEvent",
"convertible_round": "#/components/schemas/ConvertibleRoundEvent"
},
"propertyName": "type"
}
},
"maxItems": 200
}
},
"additionalProperties": false
},
"ResultResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"result": {
"oneOf": [
{
"$ref": "#/definitions/WaterfallResult"
},
{
"$ref": "#/definitions/FundResult"
}
]
}
}
},
"meta": {
"type": "object",
"properties": {
"keyName": {
"type": "string"
}
}
}
}
},
"ComputeResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"final": {
"$ref": "#/definitions/CapTableSnapshot"
},
"snapshots": {
"type": "array",
"items": {
"$ref": "#/definitions/CapTableSnapshot"
},
"description": "One snapshot per event, in order."
}
}
},
"meta": {
"type": "object",
"properties": {
"keyName": {
"type": "string"
}
}
}
}
},
"OptionPoolEvent": {
"type": "object",
"required": [
"type",
"label",
"shares"
],
"properties": {
"id": {
"type": "string",
"description": "Pool id, so an option_grant can name which pool it draws from."
},
"type": {
"const": "option_pool"
},
"label": {
"type": "string"
},
"shares": {
"type": "number"
},
"countMode": {
"enum": [
"shares",
"percent"
],
"description": "Defaults to \"shares\"."
},
"targetPct": {
"type": "number",
"description": "0..1 of post-event fully diluted, used when countMode=\"percent\"."
},
"strikePrice": {
"type": "number"
}
},
"description": "Create or expand an option pool (shares authorized, not granted)."
},
"WaterfallResult": {
"type": "object",
"required": [
"exitValuation",
"distributable",
"classes",
"series",
"convertibles",
"holders",
"perShare",
"iterations",
"converged"
],
"properties": {
"series": {
"type": "array",
"items": {
"type": "object"
}
},
"classes": {
"type": "array",
"items": {
"type": "object"
}
},
"holders": {
"type": "array",
"items": {
"type": "object"
}
},
"perShare": {
"type": "array",
"items": {
"type": "object"
}
},
"converged": {
"type": "boolean"
},
"iterations": {
"type": "integer"
},
"convertibles": {
"type": "array",
"items": {
"type": "object"
}
},
"distributable": {
"type": "number"
},
"exitValuation": {
"type": "number"
}
}
},
"CapTableSnapshot": {
"type": "object",
"required": [
"label",
"holdings",
"totalShares",
"ownership",
"outstandingConvertibles"
],
"properties": {
"label": {
"type": "string"
},
"holdings": {
"type": "array",
"items": {
"type": "object"
}
},
"ownership": {
"type": "array",
"items": {
"type": "object"
}
},
"roundDetail": {
"type": "object"
},
"totalShares": {
"type": "number"
},
"pricePerShare": {
"type": "number"
},
"outstandingConvertibles": {
"type": "array",
"items": {
"type": "object"
}
}
}
},
"OptionGrantEvent": {
"type": "object",
"required": [
"type",
"label",
"grants"
],
"properties": {
"type": {
"const": "option_grant"
},
"label": {
"type": "string"
},
"grants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"shares": {
"type": "number"
}
}
}
},
"poolId": {
"type": "string",
"description": "Pool id to grant from; omit to draw the common pool."
}
},
"description": "Grant options to people from one pool (fully-diluted-neutral)."
},
"PricedRoundEvent": {
"type": "object",
"required": [
"type",
"label",
"preMoneyValuation",
"investments"
],
"properties": {
"type": {
"const": "priced_round"
},
"label": {
"type": "string"
},
"pools": {
"type": "array",
"items": {
"type": "object",
"required": [
"mode"
],
"properties": {
"pct": {
"type": "number",
"description": "0..1 of post-money fully diluted, when countMode=\"percent\"."
},
"mode": {
"enum": [
"pre",
"post"
],
"description": "\"pre\" dilutes existing only; \"post\" dilutes new money too."
},
"label": {
"type": "string"
},
"poolId": {
"type": "string",
"description": "Set to track this pool separately (its own cap-table row)."
},
"shares": {
"type": "number"
},
"countMode": {
"enum": [
"shares",
"percent"
],
"description": "Defaults to \"percent\"."
}
}
},
"description": "Option pool top-ups for the round (preferred over the legacy targetPoolPct trio)."
},
"poolMode": {
"enum": [
"pre",
"post",
"custom"
],
"description": "Legacy. Prefer pools[]."
},
"investments": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"amount"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"amount": {
"type": "number"
},
"proRata": {
"type": "boolean",
"description": "If true, amount is back-solved to hold pre-round ownership; match by id."
},
"antiDilution": {
"enum": [
"weighted-average",
"full-ratchet"
]
},
"antiDilutionMethod": {
"enum": [
"conversion-ratio",
"new-shares"
],
"description": "Defaults to \"conversion-ratio\"."
}
}
}
},
"poolPostPct": {
"type": "number",
"description": "Legacy. Prefer pools[]."
},
"targetPoolPct": {
"type": "number",
"description": "Legacy. Prefer pools[]."
},
"preMoneyValuation": {
"type": "number"
}
},
"description": "A priced equity round: new money buys newly issued preferred."
},
"WarrantRoundEvent": {
"type": "object",
"required": [
"type",
"label",
"warrants"
],
"properties": {
"type": {
"const": "warrant_round"
},
"label": {
"type": "string"
},
"warrants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"purchaseClass",
"countMode"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"shares": {
"type": "number",
"description": "When countMode=\"shares\"."
},
"parValue": {
"type": "number"
},
"countMode": {
"enum": [
"shares",
"value"
]
},
"totalValue": {
"type": "number",
"description": "When countMode=\"value\": shares = totalValue / purchasePrice."
},
"priceDiscount": {
"type": "number",
"description": "0..1 discount on the source round price."
},
"purchaseClass": {
"enum": [
"common",
"preferred"
]
},
"purchasePrice": {
"type": "number"
},
"purchaseRound": {
"type": "string",
"description": "For a preferred warrant, the series it targets."
},
"priceFromRound": {
"type": "string",
"description": "Source round label to price off, when variable."
}
}
}
}
},
"description": "Issue warrants (right to buy shares at a set price); counts toward fully diluted now."
},
"FundComputeRequest": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"inputs"
],
"properties": {
"format": {
"enum": [
"json",
"xlsx",
"xlsx_url"
],
"type": "string"
},
"inputs": {
"type": "object",
"required": [
"committedCapital",
"gpCommitPct",
"gpCommitCountedTowardInvested",
"organizationalExpenses",
"operationalExpensesAnnual",
"mgmtFeePct",
"recycledCapitalPct",
"carryPct",
"newInvestmentPeriodYears",
"mgmtFeesPeriodYears",
"portfolio",
"returnTiers"
],
"properties": {
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"portfolio": {
"type": "object",
"required": [
"newPct",
"followPct",
"avgCheckSizeNew",
"avgCheckSizeFollow"
],
"properties": {
"newPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"followPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"entryStages": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"numInvestments",
"avgCheckSize"
],
"properties": {
"name": {
"type": "string"
},
"avgCheckSize": {
"type": "number",
"minimum": 0
},
"reserveRatio": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"pctAllocation": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"followOnChecks": {
"type": "array",
"items": {
"type": "object",
"required": [
"avgCheckSize"
],
"properties": {
"label": {
"type": "string"
},
"avgCheckSize": {
"type": "number",
"minimum": 0
},
"pctOfReserve": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
}
},
"numInvestments": {
"type": "number",
"minimum": 0
},
"initialCheckLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"avgCheckSizeNew": {
"type": "number",
"minimum": 0
},
"avgCheckSizeFollow": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"mgmtFeePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"gpCommitPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"returnTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"pctOfCapital",
"multiple",
"holdingPeriodYears"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"multiple": {
"type": "number",
"minimum": 0
},
"numCompanies": {
"type": "number",
"minimum": 0
},
"pctOfCapital": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"holdingPeriodYears": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"minItems": 1
},
"tierInputMode": {
"enum": [
"pct-capital",
"num-companies"
],
"type": "string"
},
"stageInputMode": {
"enum": [
"pct-capital",
"num-companies"
],
"type": "string"
},
"tierFractional": {
"type": "boolean"
},
"mgmtFeeSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"committedCapital": {
"type": "number",
"exclusiveMinimum": 0
},
"recycledCapitalPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"fundOperationsYears": {
"type": "number",
"exclusiveMinimum": 0
},
"mgmtFeesPeriodYears": {
"type": "number",
"exclusiveMinimum": 0
},
"organizationalExpenses": {
"type": "number",
"minimum": 0
},
"targetTotalInvestments": {
"type": "number",
"minimum": 0
},
"operationalExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"partnershipExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"newInvestmentPeriodYears": {
"type": "number",
"exclusiveMinimum": 0
},
"operationalExpensesAnnual": {
"type": "number",
"minimum": 0
},
"partnershipExpensesAnnual": {
"type": "number",
"minimum": 0
},
"solveCalledFromDeployment": {
"type": "boolean"
},
"organizationalExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"operationalExpensesBreakout": {
"type": "object",
"required": [
"fundAdmin",
"tax",
"audit",
"other"
],
"properties": {
"tax": {
"type": "number",
"minimum": 0
},
"audit": {
"type": "number",
"minimum": 0
},
"other": {
"type": "number",
"minimum": 0
},
"fundAdmin": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"gpCommitCountedTowardInvested": {
"type": "boolean"
}
},
"additionalProperties": false
},
"features": {
"type": "object",
"properties": {
"fees": {
"type": "object",
"required": [
"base"
],
"properties": {
"base": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"ratePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"feeYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"basesByYear": {
"type": "array",
"items": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"maxItems": 100
},
"stepDownAfterYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"yearlyRateSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"maxItems": 100
}
},
"additionalProperties": false
},
"mgmtCo": {
"type": "object",
"required": [
"expenses"
],
"properties": {
"expenses": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"annualCost"
],
"properties": {
"label": {
"type": "string",
"maxLength": 200
},
"annualCost": {
"type": "number",
"minimum": 0
},
"yearsActive": {
"type": "array",
"items": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"maxItems": 100
},
"growthRatePerYear": {
"type": "number",
"maximum": 10,
"minimum": -1
}
},
"additionalProperties": false
},
"maxItems": 100
},
"startingCash": {
"type": "number",
"minimum": 0
},
"oneTimeFormationCost": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"capTable": {
"type": "object",
"required": [
"inputs",
"bridge"
],
"properties": {
"bridge": {
"type": "object",
"required": [
"numInvestmentsTarget"
],
"properties": {
"stageName": {
"type": "string",
"maxLength": 200
},
"writeoffHoldYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"expectedAgeAtRound": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 21
},
"yearsBetweenRounds": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"numInvestmentsTarget": {
"type": "number",
"maximum": 10000,
"minimum": 0
}
},
"additionalProperties": false
},
"inputs": {
"type": "object",
"required": [
"newInvestmentCheckSize",
"postmoneyValuation",
"numFollowOnRounds",
"numRoundsFollowOn",
"defaultValuationIncrease",
"dilutionPerRound",
"dilutionFromOptionPoolsPerRound",
"pctCompaniesFollowOn",
"defaultGraduationRate",
"defaultWriteoffRate",
"defaultExitMultiple"
],
"properties": {
"roundLabels": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 21
},
"roundOutcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"exitMultiple": {
"type": "number",
"minimum": 0
},
"writeoffRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"graduationRate": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 21
},
"followOnRounds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"dilutionFromRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"valuationIncrease": {
"type": "number",
"minimum": 0
},
"newOptionPoolInRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"pctCompaniesFollowOn": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"dilutionPerRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"numFollowOnRounds": {
"type": "integer",
"maximum": 20,
"minimum": 0
},
"numRoundsFollowOn": {
"type": "integer",
"maximum": 20,
"minimum": 0
},
"postmoneyValuation": {
"type": "number",
"exclusiveMinimum": 0
},
"defaultExitMultiple": {
"type": "number",
"minimum": 0
},
"defaultWriteoffRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"pctCompaniesFollowOn": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"defaultGraduationRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"newInvestmentCheckSize": {
"type": "number",
"minimum": 0
},
"exitMultipleOnLastRound": {
"type": "number",
"minimum": 0
},
"defaultValuationIncrease": {
"type": "number",
"minimum": 0
},
"ownershipOutsideInvestment": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 21
},
"dilutionFromOptionPoolsPerRound": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"followOn": {
"type": "object",
"required": [
"offsetQuarters"
],
"properties": {
"offsetQuarters": {
"type": "integer",
"maximum": 40,
"minimum": 0
}
},
"additionalProperties": false
},
"lpClasses": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"commitment"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"overrides": {
"type": "object",
"properties": {
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"carryTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"moicThreshold",
"carryPct"
],
"properties": {
"catchup": {
"type": "boolean"
},
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"moicThreshold": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"catchupPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"catchupGpShare": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMode": {
"enum": [
"none",
"irr",
"multiple"
],
"type": "string"
},
"preferredReturnRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMultiple": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"commitment": {
"type": "number",
"minimum": 0
},
"isFirstLoss": {
"type": "boolean"
},
"isRemainder": {
"type": "boolean"
},
"feeOverrides": {
"type": "object",
"properties": {
"ratePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"basesByYear": {
"type": "array",
"items": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"maxItems": 100
},
"yearlyRateSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"maxItems": 100
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"waterfall": {
"type": "object",
"properties": {
"carryTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"moicThreshold",
"carryPct"
],
"properties": {
"catchup": {
"type": "boolean"
},
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"moicThreshold": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"catchupPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"catchupGpShare": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMode": {
"enum": [
"none",
"irr",
"multiple"
],
"type": "string"
},
"preferredReturnRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMultiple": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"fundName": {
"type": "string",
"maxLength": 200
},
"granularity": {
"enum": [
"year",
"quarter",
"none"
],
"type": "string"
},
"firstCloseDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"additionalProperties": false
},
"FundResultResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"required": [
"result"
],
"properties": {
"detail": {
"$ref": "#/definitions/FundDetail"
},
"result": {
"$ref": "#/definitions/FundResult"
},
"workbook": {
"type": "object",
"required": [
"filename",
"contentType"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"data": {
"type": "string"
},
"encoding": {
"enum": [
"base64"
],
"type": "string"
},
"filename": {
"type": "string"
},
"expiresAt": {
"type": "string",
"format": "date-time"
},
"contentType": {
"type": "string"
}
},
"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)."
}
}
},
"meta": {
"type": "object",
"properties": {
"keyName": {
"type": "string"
}
}
}
}
},
"SecondarySaleEvent": {
"type": "object",
"required": [
"type",
"label",
"fromId",
"toId",
"toName",
"shares"
],
"properties": {
"toId": {
"type": "string"
},
"type": {
"const": "secondary_sale"
},
"class": {
"enum": [
"common",
"preferred",
"option-pool",
"warrant"
],
"description": "Defaults to \"common\"."
},
"label": {
"type": "string"
},
"round": {
"type": "string",
"description": "Which series the shares come from (e.g. \"Series A\")."
},
"fromId": {
"type": "string"
},
"shares": {
"type": "number"
},
"toName": {
"type": "string"
}
},
"description": "Transfer existing shares from one holder to another."
},
"CommonIssuanceEvent": {
"type": "object",
"required": [
"type",
"label",
"grants"
],
"properties": {
"type": {
"const": "common_issuance"
},
"label": {
"type": "string"
},
"grants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"shares"
],
"properties": {
"id": {
"type": "string"
},
"kind": {
"enum": [
"founder",
"employee"
]
},
"name": {
"type": "string"
},
"shares": {
"type": "number"
}
}
}
}
},
"description": "Issue common stock (founders, employees)."
},
"ManualIssuanceEvent": {
"type": "object",
"required": [
"type",
"label",
"issuances"
],
"properties": {
"type": {
"const": "manual_issuance"
},
"label": {
"type": "string"
},
"issuances": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"class",
"shares"
],
"properties": {
"id": {
"type": "string"
},
"kind": {
"enum": [
"founder",
"employee",
"investor",
"pool"
]
},
"name": {
"type": "string"
},
"class": {
"enum": [
"common",
"preferred",
"option-pool",
"warrant"
]
},
"shares": {
"type": "number"
},
"pctBasis": {
"enum": [
"fully-diluted",
"issued"
],
"description": "Defaults to \"fully-diluted\"."
},
"countMode": {
"enum": [
"shares",
"percent"
],
"description": "Defaults to \"shares\"."
},
"targetPct": {
"type": "number",
"description": "0..1, used when countMode=\"percent\"."
},
"issuePrice": {
"type": "number"
}
}
}
}
},
"description": "Escape hatch: issue exact shares for custom arrangements."
},
"ConvertibleRoundEvent": {
"type": "object",
"required": [
"type",
"label",
"convertibles"
],
"properties": {
"type": {
"const": "convertible_round"
},
"label": {
"type": "string"
},
"convertibles": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"principal"
],
"properties": {
"id": {
"type": "string"
},
"mfn": {
"type": "boolean"
},
"kind": {
"enum": [
"safe",
"note"
]
},
"name": {
"type": "string"
},
"capType": {
"enum": [
"pre-money",
"post-money",
"post-money-fixed",
"post-money-fixed-after"
]
},
"discount": {
"type": "number",
"description": "0..1."
},
"principal": {
"type": "number"
},
"dilutionMode": {
"enum": [
"existing-only",
"all"
],
"description": "Defaults to \"existing-only\"."
},
"interestRate": {
"type": "number",
"description": "Annual fraction (0.05 = 5%). Notes only."
},
"valuationCap": {
"type": "number"
},
"conversionDate": {
"type": "string",
"description": "ISO date. Notes only."
},
"investmentDate": {
"type": "string",
"description": "ISO date. Notes only."
},
"accruedInterest": {
"type": "number"
}
}
}
}
},
"description": "Issue SAFEs or notes; they convert to preferred at the next priced round."
},
"WaterfallComputeRequest": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"exitValuation",
"model"
],
"properties": {
"model": {
"type": "object",
"required": [
"common",
"preferred"
],
"properties": {
"debt": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"common": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"invested": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"strike"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"strike": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"vestedFraction": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"warrants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"strike"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"strike": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"preferred": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"holders",
"seniority"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"holders": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"invested"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"invested": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"multiple": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"seniority": {
"type": "number"
},
"dividendRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"dividendStart": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"participation": {
"enum": [
"none",
"full",
"capped"
],
"type": "string"
},
"investmentDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"conversionRatio": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"exclusiveMinimum": 0
},
"participationCap": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"dividendCumulative": {
"type": "boolean"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"convertibles": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"principal"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"cap": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"exclusiveMinimum": 0
},
"kind": {
"enum": [
"pre-safe",
"post-safe",
"note"
],
"type": "string"
},
"name": {
"type": "string",
"maxLength": 200
},
"discount": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"cashOutAs": {
"enum": [
"debt",
"equity"
],
"type": "string"
},
"principal": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"seniority": {
"type": "number"
},
"accruedInterest": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"premiumMultiple": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"cashOutSeniority": {
"enum": [
"senior",
"pari-passu"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 100
},
"unissuedPool": {
"type": "object",
"required": [
"shares"
],
"properties": {
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"treatment": {
"type": "string",
"const": "cancel"
}
},
"additionalProperties": false
},
"transactionExpenses": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"exitValuation": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}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. Account required: lifetime free credits or paid access; shares 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.
| Argument | Type | Description |
|---|---|---|
| model* | object | |
| exitValuation* | number | |
| idempotency_key | string | Optional retry key; reuse only with identical input. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"exitValuation",
"model"
],
"properties": {
"model": {
"type": "object",
"required": [
"common",
"preferred"
],
"properties": {
"debt": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"common": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"invested": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"strike"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"strike": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"vestedFraction": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"warrants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"strike"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"strike": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"preferred": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"holders",
"seniority"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"holders": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"invested"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"invested": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"multiple": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"seniority": {
"type": "number"
},
"dividendRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"dividendStart": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"participation": {
"enum": [
"none",
"full",
"capped"
],
"type": "string"
},
"investmentDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"conversionRatio": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"exclusiveMinimum": 0
},
"participationCap": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"dividendCumulative": {
"type": "boolean"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"convertibles": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"principal"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"cap": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"exclusiveMinimum": 0
},
"kind": {
"enum": [
"pre-safe",
"post-safe",
"note"
],
"type": "string"
},
"name": {
"type": "string",
"maxLength": 200
},
"discount": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"cashOutAs": {
"enum": [
"debt",
"equity"
],
"type": "string"
},
"principal": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"seniority": {
"type": "number"
},
"accruedInterest": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"premiumMultiple": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"cashOutSeniority": {
"enum": [
"senior",
"pari-passu"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 100
},
"unissuedPool": {
"type": "object",
"required": [
"shares"
],
"properties": {
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"treatment": {
"type": "string",
"const": "cancel"
}
},
"additionalProperties": false
},
"transactionExpenses": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"exitValuation": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"idempotency_key": {
"type": "string",
"description": "Optional retry key; reuse only with identical input."
}
},
"definitions": {
"Error": {
"type": "object",
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message",
"retryable"
],
"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"
}
}
}
}
},
"DailyUsage": {
"type": "object",
"required": [
"day",
"product",
"endpoint",
"source",
"succeeded",
"failed"
],
"properties": {
"day": {
"type": "string",
"format": "date"
},
"failed": {
"type": "integer"
},
"source": {
"type": "string"
},
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
},
"endpoint": {
"type": "string"
},
"succeeded": {
"type": "integer"
}
}
},
"FundDetail": {
"type": "object",
"required": [
"granularity",
"irr",
"periods",
"statements"
],
"properties": {
"irr": {
"type": "object",
"properties": {
"netIRR": {
"type": "object",
"properties": {
"lp": {
"type": "number"
},
"total": {
"type": "number"
}
}
},
"grossIRR": {
"type": "number"
}
},
"description": "IRRs solved from the dated quarterly cash flows, with terminal NAV."
},
"mgmtCo": {
"type": "object"
},
"periods": {
"type": "object",
"required": [
"labels"
],
"properties": {
"dpi": {
"type": "array",
"items": {
"type": "number"
}
},
"nav": {
"$ref": "#/definitions/FundSeries"
},
"rvpi": {
"type": "array",
"items": {
"type": "number"
}
},
"tvpi": {
"type": "array",
"items": {
"type": "number"
}
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"jCurveLp": {
"type": "array",
"items": {
"type": "number"
},
"description": "Cumulative LP net cash flow at the end of each period."
},
"proceeds": {
"$ref": "#/definitions/FundSeries"
},
"gpCatchup": {
"type": "array",
"items": {
"type": "number"
},
"description": "GP catchup paid each period. Only with a waterfall block."
},
"calledCapital": {
"$ref": "#/definitions/FundSeries"
},
"distributions": {
"$ref": "#/definitions/FundSeries",
"description": "Distributions after carry. The LP line runs through the waterfall period by period."
},
"managementFees": {
"$ref": "#/definitions/FundSeries"
},
"carriedInterest": {
"type": "array",
"items": {
"type": "number"
},
"description": "GP carry paid each period, catchups included."
},
"investedCapital": {
"$ref": "#/definitions/FundSeries"
},
"preferredReturn": {
"type": "array",
"items": {
"type": "number"
},
"description": "Preferred return paid to LPs each period. Only with a waterfall block."
},
"recycledCapital": {
"$ref": "#/definitions/FundSeries"
},
"partnershipExpenses": {
"$ref": "#/definitions/FundSeries"
}
}
},
"lpClasses": {
"type": "object"
},
"waterfall": {
"type": "object",
"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."
},
"statements": {
"type": "object",
"properties": {
"periods": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": [
"string",
"null"
]
},
"cashFlow": {
"type": "object"
},
"periodEnd": {
"type": "string"
},
"periodStart": {
"type": "string"
},
"balanceSheet": {
"type": "object"
},
"incomeStatement": {
"type": "object"
}
}
}
},
"currency": {
"type": "string"
}
}
},
"granularity": {
"enum": [
"year",
"quarter"
],
"type": "string"
}
},
"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."
},
"FundResult": {
"type": "object",
"required": [
"committedCapital",
"calledCapital",
"managementFees",
"partnershipExpenses",
"investedCapital",
"proceeds",
"distributions",
"grossMultiple",
"netMultiple",
"grossIRR",
"netIRR",
"pic",
"dpi",
"rvpi",
"tvpi",
"weightedHoldPeriodYears"
],
"properties": {
"dpi": {
"type": "number"
},
"pic": {
"type": "number"
},
"rvpi": {
"type": "number"
},
"tvpi": {
"type": "number"
},
"tiers": {
"type": "array",
"items": {
"type": "object"
}
},
"netIRR": {
"$ref": "#/definitions/LineTotals"
},
"grossIRR": {
"$ref": "#/definitions/LineTotals"
},
"proceeds": {
"$ref": "#/definitions/LineTotals"
},
"netMultiple": {
"$ref": "#/definitions/LineTotals"
},
"calledCapital": {
"$ref": "#/definitions/LineTotals"
},
"distributions": {
"$ref": "#/definitions/LineTotals"
},
"grossMultiple": {
"$ref": "#/definitions/LineTotals"
},
"managementFees": {
"$ref": "#/definitions/LineTotals"
},
"investedCapital": {
"$ref": "#/definitions/LineTotals"
},
"committedCapital": {
"$ref": "#/definitions/LineTotals"
},
"partnershipExpenses": {
"$ref": "#/definitions/LineTotals"
},
"weightedHoldPeriodYears": {
"type": "number"
}
}
},
"FundSeries": {
"type": "object",
"required": [
"total",
"lp",
"gp"
],
"properties": {
"gp": {
"type": "array",
"items": {
"type": "number"
}
},
"lp": {
"type": "array",
"items": {
"type": "number"
}
},
"total": {
"type": "array",
"items": {
"type": "number"
}
}
}
},
"LineTotals": {
"type": "object",
"required": [
"total",
"lp",
"gp"
],
"properties": {
"gp": {
"type": "number"
},
"lp": {
"type": "number"
},
"total": {
"type": "number"
}
}
},
"UsagePeriod": {
"type": "object",
"required": [
"id",
"period_start",
"period_end",
"allowance",
"consumed",
"reserved",
"enabled"
],
"properties": {
"id": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"consumed": {
"type": "integer"
},
"reserved": {
"type": "integer"
},
"allowance": {
"type": "integer"
},
"period_end": {
"type": "string",
"format": "date-time"
},
"period_start": {
"type": "string",
"format": "date-time"
}
}
},
"MonthlyUsage": {
"type": "object",
"required": [
"month",
"product",
"succeeded",
"failed"
],
"properties": {
"month": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}$"
},
"failed": {
"type": "integer"
},
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
},
"succeeded": {
"type": "integer"
}
}
},
"ProductAccess": {
"type": "object",
"required": [
"product",
"name",
"priceUsd",
"allowance",
"period",
"remaining",
"active"
],
"properties": {
"name": {
"type": "string"
},
"state": {
"enum": [
"free_available",
"free_exhausted",
"paid_active",
"paid_expired",
"paid_quota_exhausted"
],
"type": "string"
},
"active": {
"type": "boolean",
"description": "Active paid term; use state/freeRemaining for trial access."
},
"period": {
"anyOf": [
{
"type": "null"
},
{
"$ref": "#/definitions/UsagePeriod"
}
]
},
"source": {
"enum": [
"free",
"paid"
],
"type": "string"
},
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
},
"priceUsd": {
"type": "number",
"const": 20
},
"allowance": {
"type": "integer",
"const": 6000
},
"remaining": {
"type": "integer",
"minimum": 0,
"description": "Calculations this account can run now: the paid balance while a paid period is active, otherwise the lifetime free balance."
},
"nextAction": {
"type": "string"
},
"freeRemaining": {
"type": "integer",
"minimum": 0
},
"paidRemaining": {
"type": "integer",
"minimum": 0
},
"paidExpiration": {
"type": [
"string",
"null"
]
}
}
},
"AccessResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"required": [
"products",
"daily"
],
"properties": {
"daily": {
"type": "array",
"items": {
"$ref": "#/definitions/DailyUsage"
}
},
"monthly": {
"type": "array",
"items": {
"$ref": "#/definitions/MonthlyUsage"
}
},
"periods": {
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/UsagePeriod"
},
{
"type": "object",
"required": [
"product"
],
"properties": {
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
}
}
}
]
}
},
"products": {
"type": "array",
"items": {
"$ref": "#/definitions/ProductAccess"
}
}
}
}
}
},
"ComputeRequest": {
"type": "object",
"required": [
"events"
],
"properties": {
"events": {
"type": "array",
"items": {
"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"
}
],
"description": "One cap-table event, discriminated by `type`. Pass events in chronological order.",
"discriminator": {
"mapping": {
"option_pool": "#/components/schemas/OptionPoolEvent",
"option_grant": "#/components/schemas/OptionGrantEvent",
"priced_round": "#/components/schemas/PricedRoundEvent",
"warrant_round": "#/components/schemas/WarrantRoundEvent",
"secondary_sale": "#/components/schemas/SecondarySaleEvent",
"common_issuance": "#/components/schemas/CommonIssuanceEvent",
"manual_issuance": "#/components/schemas/ManualIssuanceEvent",
"convertible_round": "#/components/schemas/ConvertibleRoundEvent"
},
"propertyName": "type"
}
},
"maxItems": 200
}
},
"additionalProperties": false
},
"ResultResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"result": {
"oneOf": [
{
"$ref": "#/definitions/WaterfallResult"
},
{
"$ref": "#/definitions/FundResult"
}
]
}
}
},
"meta": {
"type": "object",
"properties": {
"keyName": {
"type": "string"
}
}
}
}
},
"ComputeResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"final": {
"$ref": "#/definitions/CapTableSnapshot"
},
"snapshots": {
"type": "array",
"items": {
"$ref": "#/definitions/CapTableSnapshot"
},
"description": "One snapshot per event, in order."
}
}
},
"meta": {
"type": "object",
"properties": {
"keyName": {
"type": "string"
}
}
}
}
},
"OptionPoolEvent": {
"type": "object",
"required": [
"type",
"label",
"shares"
],
"properties": {
"id": {
"type": "string",
"description": "Pool id, so an option_grant can name which pool it draws from."
},
"type": {
"const": "option_pool"
},
"label": {
"type": "string"
},
"shares": {
"type": "number"
},
"countMode": {
"enum": [
"shares",
"percent"
],
"description": "Defaults to \"shares\"."
},
"targetPct": {
"type": "number",
"description": "0..1 of post-event fully diluted, used when countMode=\"percent\"."
},
"strikePrice": {
"type": "number"
}
},
"description": "Create or expand an option pool (shares authorized, not granted)."
},
"WaterfallResult": {
"type": "object",
"required": [
"exitValuation",
"distributable",
"classes",
"series",
"convertibles",
"holders",
"perShare",
"iterations",
"converged"
],
"properties": {
"series": {
"type": "array",
"items": {
"type": "object"
}
},
"classes": {
"type": "array",
"items": {
"type": "object"
}
},
"holders": {
"type": "array",
"items": {
"type": "object"
}
},
"perShare": {
"type": "array",
"items": {
"type": "object"
}
},
"converged": {
"type": "boolean"
},
"iterations": {
"type": "integer"
},
"convertibles": {
"type": "array",
"items": {
"type": "object"
}
},
"distributable": {
"type": "number"
},
"exitValuation": {
"type": "number"
}
}
},
"CapTableSnapshot": {
"type": "object",
"required": [
"label",
"holdings",
"totalShares",
"ownership",
"outstandingConvertibles"
],
"properties": {
"label": {
"type": "string"
},
"holdings": {
"type": "array",
"items": {
"type": "object"
}
},
"ownership": {
"type": "array",
"items": {
"type": "object"
}
},
"roundDetail": {
"type": "object"
},
"totalShares": {
"type": "number"
},
"pricePerShare": {
"type": "number"
},
"outstandingConvertibles": {
"type": "array",
"items": {
"type": "object"
}
}
}
},
"OptionGrantEvent": {
"type": "object",
"required": [
"type",
"label",
"grants"
],
"properties": {
"type": {
"const": "option_grant"
},
"label": {
"type": "string"
},
"grants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"shares": {
"type": "number"
}
}
}
},
"poolId": {
"type": "string",
"description": "Pool id to grant from; omit to draw the common pool."
}
},
"description": "Grant options to people from one pool (fully-diluted-neutral)."
},
"PricedRoundEvent": {
"type": "object",
"required": [
"type",
"label",
"preMoneyValuation",
"investments"
],
"properties": {
"type": {
"const": "priced_round"
},
"label": {
"type": "string"
},
"pools": {
"type": "array",
"items": {
"type": "object",
"required": [
"mode"
],
"properties": {
"pct": {
"type": "number",
"description": "0..1 of post-money fully diluted, when countMode=\"percent\"."
},
"mode": {
"enum": [
"pre",
"post"
],
"description": "\"pre\" dilutes existing only; \"post\" dilutes new money too."
},
"label": {
"type": "string"
},
"poolId": {
"type": "string",
"description": "Set to track this pool separately (its own cap-table row)."
},
"shares": {
"type": "number"
},
"countMode": {
"enum": [
"shares",
"percent"
],
"description": "Defaults to \"percent\"."
}
}
},
"description": "Option pool top-ups for the round (preferred over the legacy targetPoolPct trio)."
},
"poolMode": {
"enum": [
"pre",
"post",
"custom"
],
"description": "Legacy. Prefer pools[]."
},
"investments": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"amount"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"amount": {
"type": "number"
},
"proRata": {
"type": "boolean",
"description": "If true, amount is back-solved to hold pre-round ownership; match by id."
},
"antiDilution": {
"enum": [
"weighted-average",
"full-ratchet"
]
},
"antiDilutionMethod": {
"enum": [
"conversion-ratio",
"new-shares"
],
"description": "Defaults to \"conversion-ratio\"."
}
}
}
},
"poolPostPct": {
"type": "number",
"description": "Legacy. Prefer pools[]."
},
"targetPoolPct": {
"type": "number",
"description": "Legacy. Prefer pools[]."
},
"preMoneyValuation": {
"type": "number"
}
},
"description": "A priced equity round: new money buys newly issued preferred."
},
"WarrantRoundEvent": {
"type": "object",
"required": [
"type",
"label",
"warrants"
],
"properties": {
"type": {
"const": "warrant_round"
},
"label": {
"type": "string"
},
"warrants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"purchaseClass",
"countMode"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"shares": {
"type": "number",
"description": "When countMode=\"shares\"."
},
"parValue": {
"type": "number"
},
"countMode": {
"enum": [
"shares",
"value"
]
},
"totalValue": {
"type": "number",
"description": "When countMode=\"value\": shares = totalValue / purchasePrice."
},
"priceDiscount": {
"type": "number",
"description": "0..1 discount on the source round price."
},
"purchaseClass": {
"enum": [
"common",
"preferred"
]
},
"purchasePrice": {
"type": "number"
},
"purchaseRound": {
"type": "string",
"description": "For a preferred warrant, the series it targets."
},
"priceFromRound": {
"type": "string",
"description": "Source round label to price off, when variable."
}
}
}
}
},
"description": "Issue warrants (right to buy shares at a set price); counts toward fully diluted now."
},
"FundComputeRequest": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"inputs"
],
"properties": {
"format": {
"enum": [
"json",
"xlsx",
"xlsx_url"
],
"type": "string"
},
"inputs": {
"type": "object",
"required": [
"committedCapital",
"gpCommitPct",
"gpCommitCountedTowardInvested",
"organizationalExpenses",
"operationalExpensesAnnual",
"mgmtFeePct",
"recycledCapitalPct",
"carryPct",
"newInvestmentPeriodYears",
"mgmtFeesPeriodYears",
"portfolio",
"returnTiers"
],
"properties": {
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"portfolio": {
"type": "object",
"required": [
"newPct",
"followPct",
"avgCheckSizeNew",
"avgCheckSizeFollow"
],
"properties": {
"newPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"followPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"entryStages": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"numInvestments",
"avgCheckSize"
],
"properties": {
"name": {
"type": "string"
},
"avgCheckSize": {
"type": "number",
"minimum": 0
},
"reserveRatio": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"pctAllocation": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"followOnChecks": {
"type": "array",
"items": {
"type": "object",
"required": [
"avgCheckSize"
],
"properties": {
"label": {
"type": "string"
},
"avgCheckSize": {
"type": "number",
"minimum": 0
},
"pctOfReserve": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
}
},
"numInvestments": {
"type": "number",
"minimum": 0
},
"initialCheckLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"avgCheckSizeNew": {
"type": "number",
"minimum": 0
},
"avgCheckSizeFollow": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"mgmtFeePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"gpCommitPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"returnTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"pctOfCapital",
"multiple",
"holdingPeriodYears"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"multiple": {
"type": "number",
"minimum": 0
},
"numCompanies": {
"type": "number",
"minimum": 0
},
"pctOfCapital": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"holdingPeriodYears": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"minItems": 1
},
"tierInputMode": {
"enum": [
"pct-capital",
"num-companies"
],
"type": "string"
},
"stageInputMode": {
"enum": [
"pct-capital",
"num-companies"
],
"type": "string"
},
"tierFractional": {
"type": "boolean"
},
"mgmtFeeSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"committedCapital": {
"type": "number",
"exclusiveMinimum": 0
},
"recycledCapitalPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"fundOperationsYears": {
"type": "number",
"exclusiveMinimum": 0
},
"mgmtFeesPeriodYears": {
"type": "number",
"exclusiveMinimum": 0
},
"organizationalExpenses": {
"type": "number",
"minimum": 0
},
"targetTotalInvestments": {
"type": "number",
"minimum": 0
},
"operationalExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"partnershipExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"newInvestmentPeriodYears": {
"type": "number",
"exclusiveMinimum": 0
},
"operationalExpensesAnnual": {
"type": "number",
"minimum": 0
},
"partnershipExpensesAnnual": {
"type": "number",
"minimum": 0
},
"solveCalledFromDeployment": {
"type": "boolean"
},
"organizationalExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"operationalExpensesBreakout": {
"type": "object",
"required": [
"fundAdmin",
"tax",
"audit",
"other"
],
"properties": {
"tax": {
"type": "number",
"minimum": 0
},
"audit": {
"type": "number",
"minimum": 0
},
"other": {
"type": "number",
"minimum": 0
},
"fundAdmin": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"gpCommitCountedTowardInvested": {
"type": "boolean"
}
},
"additionalProperties": false
},
"features": {
"type": "object",
"properties": {
"fees": {
"type": "object",
"required": [
"base"
],
"properties": {
"base": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"ratePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"feeYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"basesByYear": {
"type": "array",
"items": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"maxItems": 100
},
"stepDownAfterYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"yearlyRateSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"maxItems": 100
}
},
"additionalProperties": false
},
"mgmtCo": {
"type": "object",
"required": [
"expenses"
],
"properties": {
"expenses": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"annualCost"
],
"properties": {
"label": {
"type": "string",
"maxLength": 200
},
"annualCost": {
"type": "number",
"minimum": 0
},
"yearsActive": {
"type": "array",
"items": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"maxItems": 100
},
"growthRatePerYear": {
"type": "number",
"maximum": 10,
"minimum": -1
}
},
"additionalProperties": false
},
"maxItems": 100
},
"startingCash": {
"type": "number",
"minimum": 0
},
"oneTimeFormationCost": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"capTable": {
"type": "object",
"required": [
"inputs",
"bridge"
],
"properties": {
"bridge": {
"type": "object",
"required": [
"numInvestmentsTarget"
],
"properties": {
"stageName": {
"type": "string",
"maxLength": 200
},
"writeoffHoldYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"expectedAgeAtRound": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 21
},
"yearsBetweenRounds": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"numInvestmentsTarget": {
"type": "number",
"maximum": 10000,
"minimum": 0
}
},
"additionalProperties": false
},
"inputs": {
"type": "object",
"required": [
"newInvestmentCheckSize",
"postmoneyValuation",
"numFollowOnRounds",
"numRoundsFollowOn",
"defaultValuationIncrease",
"dilutionPerRound",
"dilutionFromOptionPoolsPerRound",
"pctCompaniesFollowOn",
"defaultGraduationRate",
"defaultWriteoffRate",
"defaultExitMultiple"
],
"properties": {
"roundLabels": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 21
},
"roundOutcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"exitMultiple": {
"type": "number",
"minimum": 0
},
"writeoffRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"graduationRate": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 21
},
"followOnRounds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"dilutionFromRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"valuationIncrease": {
"type": "number",
"minimum": 0
},
"newOptionPoolInRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"pctCompaniesFollowOn": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"dilutionPerRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"numFollowOnRounds": {
"type": "integer",
"maximum": 20,
"minimum": 0
},
"numRoundsFollowOn": {
"type": "integer",
"maximum": 20,
"minimum": 0
},
"postmoneyValuation": {
"type": "number",
"exclusiveMinimum": 0
},
"defaultExitMultiple": {
"type": "number",
"minimum": 0
},
"defaultWriteoffRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"pctCompaniesFollowOn": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"defaultGraduationRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"newInvestmentCheckSize": {
"type": "number",
"minimum": 0
},
"exitMultipleOnLastRound": {
"type": "number",
"minimum": 0
},
"defaultValuationIncrease": {
"type": "number",
"minimum": 0
},
"ownershipOutsideInvestment": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 21
},
"dilutionFromOptionPoolsPerRound": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"followOn": {
"type": "object",
"required": [
"offsetQuarters"
],
"properties": {
"offsetQuarters": {
"type": "integer",
"maximum": 40,
"minimum": 0
}
},
"additionalProperties": false
},
"lpClasses": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"commitment"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"overrides": {
"type": "object",
"properties": {
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"carryTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"moicThreshold",
"carryPct"
],
"properties": {
"catchup": {
"type": "boolean"
},
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"moicThreshold": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"catchupPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"catchupGpShare": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMode": {
"enum": [
"none",
"irr",
"multiple"
],
"type": "string"
},
"preferredReturnRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMultiple": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"commitment": {
"type": "number",
"minimum": 0
},
"isFirstLoss": {
"type": "boolean"
},
"isRemainder": {
"type": "boolean"
},
"feeOverrides": {
"type": "object",
"properties": {
"ratePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"basesByYear": {
"type": "array",
"items": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"maxItems": 100
},
"yearlyRateSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"maxItems": 100
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"waterfall": {
"type": "object",
"properties": {
"carryTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"moicThreshold",
"carryPct"
],
"properties": {
"catchup": {
"type": "boolean"
},
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"moicThreshold": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"catchupPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"catchupGpShare": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMode": {
"enum": [
"none",
"irr",
"multiple"
],
"type": "string"
},
"preferredReturnRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMultiple": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"fundName": {
"type": "string",
"maxLength": 200
},
"granularity": {
"enum": [
"year",
"quarter",
"none"
],
"type": "string"
},
"firstCloseDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"additionalProperties": false
},
"FundResultResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"required": [
"result"
],
"properties": {
"detail": {
"$ref": "#/definitions/FundDetail"
},
"result": {
"$ref": "#/definitions/FundResult"
},
"workbook": {
"type": "object",
"required": [
"filename",
"contentType"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"data": {
"type": "string"
},
"encoding": {
"enum": [
"base64"
],
"type": "string"
},
"filename": {
"type": "string"
},
"expiresAt": {
"type": "string",
"format": "date-time"
},
"contentType": {
"type": "string"
}
},
"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)."
}
}
},
"meta": {
"type": "object",
"properties": {
"keyName": {
"type": "string"
}
}
}
}
},
"SecondarySaleEvent": {
"type": "object",
"required": [
"type",
"label",
"fromId",
"toId",
"toName",
"shares"
],
"properties": {
"toId": {
"type": "string"
},
"type": {
"const": "secondary_sale"
},
"class": {
"enum": [
"common",
"preferred",
"option-pool",
"warrant"
],
"description": "Defaults to \"common\"."
},
"label": {
"type": "string"
},
"round": {
"type": "string",
"description": "Which series the shares come from (e.g. \"Series A\")."
},
"fromId": {
"type": "string"
},
"shares": {
"type": "number"
},
"toName": {
"type": "string"
}
},
"description": "Transfer existing shares from one holder to another."
},
"CommonIssuanceEvent": {
"type": "object",
"required": [
"type",
"label",
"grants"
],
"properties": {
"type": {
"const": "common_issuance"
},
"label": {
"type": "string"
},
"grants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"shares"
],
"properties": {
"id": {
"type": "string"
},
"kind": {
"enum": [
"founder",
"employee"
]
},
"name": {
"type": "string"
},
"shares": {
"type": "number"
}
}
}
}
},
"description": "Issue common stock (founders, employees)."
},
"ManualIssuanceEvent": {
"type": "object",
"required": [
"type",
"label",
"issuances"
],
"properties": {
"type": {
"const": "manual_issuance"
},
"label": {
"type": "string"
},
"issuances": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"class",
"shares"
],
"properties": {
"id": {
"type": "string"
},
"kind": {
"enum": [
"founder",
"employee",
"investor",
"pool"
]
},
"name": {
"type": "string"
},
"class": {
"enum": [
"common",
"preferred",
"option-pool",
"warrant"
]
},
"shares": {
"type": "number"
},
"pctBasis": {
"enum": [
"fully-diluted",
"issued"
],
"description": "Defaults to \"fully-diluted\"."
},
"countMode": {
"enum": [
"shares",
"percent"
],
"description": "Defaults to \"shares\"."
},
"targetPct": {
"type": "number",
"description": "0..1, used when countMode=\"percent\"."
},
"issuePrice": {
"type": "number"
}
}
}
}
},
"description": "Escape hatch: issue exact shares for custom arrangements."
},
"ConvertibleRoundEvent": {
"type": "object",
"required": [
"type",
"label",
"convertibles"
],
"properties": {
"type": {
"const": "convertible_round"
},
"label": {
"type": "string"
},
"convertibles": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"principal"
],
"properties": {
"id": {
"type": "string"
},
"mfn": {
"type": "boolean"
},
"kind": {
"enum": [
"safe",
"note"
]
},
"name": {
"type": "string"
},
"capType": {
"enum": [
"pre-money",
"post-money",
"post-money-fixed",
"post-money-fixed-after"
]
},
"discount": {
"type": "number",
"description": "0..1."
},
"principal": {
"type": "number"
},
"dilutionMode": {
"enum": [
"existing-only",
"all"
],
"description": "Defaults to \"existing-only\"."
},
"interestRate": {
"type": "number",
"description": "Annual fraction (0.05 = 5%). Notes only."
},
"valuationCap": {
"type": "number"
},
"conversionDate": {
"type": "string",
"description": "ISO date. Notes only."
},
"investmentDate": {
"type": "string",
"description": "ISO date. Notes only."
},
"accruedInterest": {
"type": "number"
}
}
}
}
},
"description": "Issue SAFEs or notes; they convert to preferred at the next priced round."
},
"WaterfallComputeRequest": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"exitValuation",
"model"
],
"properties": {
"model": {
"type": "object",
"required": [
"common",
"preferred"
],
"properties": {
"debt": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"common": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"invested": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"strike"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"strike": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"vestedFraction": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"warrants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"strike"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"strike": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"preferred": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"holders",
"seniority"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"holders": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"invested"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"invested": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"multiple": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"seniority": {
"type": "number"
},
"dividendRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"dividendStart": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"participation": {
"enum": [
"none",
"full",
"capped"
],
"type": "string"
},
"investmentDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"conversionRatio": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"exclusiveMinimum": 0
},
"participationCap": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"dividendCumulative": {
"type": "boolean"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"convertibles": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"principal"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"cap": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"exclusiveMinimum": 0
},
"kind": {
"enum": [
"pre-safe",
"post-safe",
"note"
],
"type": "string"
},
"name": {
"type": "string",
"maxLength": 200
},
"discount": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"cashOutAs": {
"enum": [
"debt",
"equity"
],
"type": "string"
},
"principal": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"seniority": {
"type": "number"
},
"accruedInterest": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"premiumMultiple": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"cashOutSeniority": {
"enum": [
"senior",
"pari-passu"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 100
},
"unissuedPool": {
"type": "object",
"required": [
"shares"
],
"properties": {
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"treatment": {
"type": "string",
"const": "cancel"
}
},
"additionalProperties": false
},
"transactionExpenses": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"exitValuation": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}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. 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), NAV/AUM/step-down fee bases (features.fees), LP classes, 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. Account required: 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.
| Argument | Type | Description |
|---|---|---|
| format | string | |
| inputs* | object | |
| features | object |
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.
| Argument | Type | Description |
|---|---|---|
| model* | string | Model key to check access for. |
{
"type": "object",
"required": [
"model"
],
"properties": {
"model": {
"enum": [
"cap-table",
"exit-waterfall",
"fund-economics"
],
"type": "string",
"description": "Model key to check access for."
}
}
}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.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| to | string | Optional UTC end date (YYYY-MM-DD). |
| from | string | Optional UTC start date (YYYY-MM-DD). |
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Optional UTC end date (YYYY-MM-DD)."
},
"from": {
"type": "string",
"description": "Optional UTC start date (YYYY-MM-DD)."
}
}
}Returns Hemrock's financial modeling best practices and design principles for a given topic. Useful as background context for AI interactions.
| Argument | Type | Description |
|---|---|---|
| topic | string | Optional topic filter. Returns all best practices if omitted. |
{
"type": "object",
"properties": {
"topic": {
"enum": [
"formatting",
"structure",
"inputs",
"assumptions",
"review",
"sharing",
"all"
],
"type": "string",
"description": "Optional topic filter. Returns all best practices if omitted."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| template_name* | string | The template to get checks for. Use "all" for universal checks only. |
{
"type": "object",
"required": [
"template_name"
],
"properties": {
"template_name": {
"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",
"description": "The template to get checks for. Use \"all\" for universal checks only."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The concept slug, from list_concepts (e.g. "waterfall", "anti-dilution"). |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The concept slug, from list_concepts (e.g. \"waterfall\", \"anti-dilution\")."
}
}
}Returns the universal context-setting primer for Hemrock models, plus an optional template-specific addendum. Always run this first before any other prompts.
| Argument | Type | Description |
|---|---|---|
| template_name | string | Optional. If provided, appends a template-specific primer to the universal context. |
{
"type": "object",
"properties": {
"template_name": {
"enum": [
"standard",
"cap_table",
"venture_fund",
"venture_fund_quarterly",
"runway",
"saas",
"ecommerce",
"unit_economics",
"fund_economics",
"fund_economics_tool_web",
"venture_valuation"
],
"type": "string",
"description": "Optional. If provided, appends a template-specific primer to the universal context."
}
}
}Returns task-specific Layer 2 prompts for a given template and task type. These are ready-to-use prompts for common modeling tasks.
| Argument | Type | Description |
|---|---|---|
| task_type | string | Optional task type filter. |
| template_name* | string | The Hemrock template being used. |
{
"type": "object",
"required": [
"template_name"
],
"properties": {
"task_type": {
"type": "string",
"description": "Optional task type filter."
},
"template_name": {
"enum": [
"standard",
"cap_table",
"venture_fund",
"venture_fund_quarterly",
"runway",
"saas",
"ecommerce",
"unit_economics",
"fund_economics",
"fund_economics_tool_web",
"venture_valuation"
],
"type": "string",
"description": "The Hemrock template being used."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| tag | string | Optional. Filter to concepts whose tags contain this string (e.g. "cap tables"). |
| template_name | string | Optional. Filter to concepts relevant to a specific Hemrock template. |
{
"type": "object",
"properties": {
"tag": {
"type": "string",
"description": "Optional. Filter to concepts whose tags contain this string (e.g. \"cap tables\")."
},
"template_name": {
"enum": [
"standard",
"cap_table",
"venture_fund",
"venture_fund_quarterly",
"runway",
"saas",
"ecommerce",
"unit_economics",
"fund_economics",
"fund_economics_tool_web",
"venture_valuation"
],
"type": "string",
"description": "Optional. Filter to concepts relevant to a specific Hemrock template."
}
}
}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.
No arguments.
{
"type": "object",
"properties": {}
}| fundName | string |
| granularity | string |
| firstCloseDate | string |
| idempotency_key | string | Optional retry key; reuse only with identical input. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"inputs"
],
"properties": {
"format": {
"enum": [
"json",
"xlsx",
"xlsx_url"
],
"type": "string"
},
"inputs": {
"type": "object",
"required": [
"committedCapital",
"gpCommitPct",
"gpCommitCountedTowardInvested",
"organizationalExpenses",
"operationalExpensesAnnual",
"mgmtFeePct",
"recycledCapitalPct",
"carryPct",
"newInvestmentPeriodYears",
"mgmtFeesPeriodYears",
"portfolio",
"returnTiers"
],
"properties": {
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"portfolio": {
"type": "object",
"required": [
"newPct",
"followPct",
"avgCheckSizeNew",
"avgCheckSizeFollow"
],
"properties": {
"newPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"followPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"entryStages": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"numInvestments",
"avgCheckSize"
],
"properties": {
"name": {
"type": "string"
},
"avgCheckSize": {
"type": "number",
"minimum": 0
},
"reserveRatio": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"pctAllocation": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"followOnChecks": {
"type": "array",
"items": {
"type": "object",
"required": [
"avgCheckSize"
],
"properties": {
"label": {
"type": "string"
},
"avgCheckSize": {
"type": "number",
"minimum": 0
},
"pctOfReserve": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
}
},
"numInvestments": {
"type": "number",
"minimum": 0
},
"initialCheckLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"avgCheckSizeNew": {
"type": "number",
"minimum": 0
},
"avgCheckSizeFollow": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"mgmtFeePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"gpCommitPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"returnTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"pctOfCapital",
"multiple",
"holdingPeriodYears"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"multiple": {
"type": "number",
"minimum": 0
},
"numCompanies": {
"type": "number",
"minimum": 0
},
"pctOfCapital": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"holdingPeriodYears": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"minItems": 1
},
"tierInputMode": {
"enum": [
"pct-capital",
"num-companies"
],
"type": "string"
},
"stageInputMode": {
"enum": [
"pct-capital",
"num-companies"
],
"type": "string"
},
"tierFractional": {
"type": "boolean"
},
"mgmtFeeSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"committedCapital": {
"type": "number",
"exclusiveMinimum": 0
},
"recycledCapitalPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"fundOperationsYears": {
"type": "number",
"exclusiveMinimum": 0
},
"mgmtFeesPeriodYears": {
"type": "number",
"exclusiveMinimum": 0
},
"organizationalExpenses": {
"type": "number",
"minimum": 0
},
"targetTotalInvestments": {
"type": "number",
"minimum": 0
},
"operationalExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"partnershipExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"newInvestmentPeriodYears": {
"type": "number",
"exclusiveMinimum": 0
},
"operationalExpensesAnnual": {
"type": "number",
"minimum": 0
},
"partnershipExpensesAnnual": {
"type": "number",
"minimum": 0
},
"solveCalledFromDeployment": {
"type": "boolean"
},
"organizationalExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"operationalExpensesBreakout": {
"type": "object",
"required": [
"fundAdmin",
"tax",
"audit",
"other"
],
"properties": {
"tax": {
"type": "number",
"minimum": 0
},
"audit": {
"type": "number",
"minimum": 0
},
"other": {
"type": "number",
"minimum": 0
},
"fundAdmin": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"gpCommitCountedTowardInvested": {
"type": "boolean"
}
},
"additionalProperties": false
},
"features": {
"type": "object",
"properties": {
"fees": {
"type": "object",
"required": [
"base"
],
"properties": {
"base": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"ratePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"feeYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"basesByYear": {
"type": "array",
"items": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"maxItems": 100
},
"stepDownAfterYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"yearlyRateSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"maxItems": 100
}
},
"additionalProperties": false
},
"mgmtCo": {
"type": "object",
"required": [
"expenses"
],
"properties": {
"expenses": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"annualCost"
],
"properties": {
"label": {
"type": "string",
"maxLength": 200
},
"annualCost": {
"type": "number",
"minimum": 0
},
"yearsActive": {
"type": "array",
"items": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"maxItems": 100
},
"growthRatePerYear": {
"type": "number",
"maximum": 10,
"minimum": -1
}
},
"additionalProperties": false
},
"maxItems": 100
},
"startingCash": {
"type": "number",
"minimum": 0
},
"oneTimeFormationCost": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"capTable": {
"type": "object",
"required": [
"inputs",
"bridge"
],
"properties": {
"bridge": {
"type": "object",
"required": [
"numInvestmentsTarget"
],
"properties": {
"stageName": {
"type": "string",
"maxLength": 200
},
"writeoffHoldYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"expectedAgeAtRound": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 21
},
"yearsBetweenRounds": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"numInvestmentsTarget": {
"type": "number",
"maximum": 10000,
"minimum": 0
}
},
"additionalProperties": false
},
"inputs": {
"type": "object",
"required": [
"newInvestmentCheckSize",
"postmoneyValuation",
"numFollowOnRounds",
"numRoundsFollowOn",
"defaultValuationIncrease",
"dilutionPerRound",
"dilutionFromOptionPoolsPerRound",
"pctCompaniesFollowOn",
"defaultGraduationRate",
"defaultWriteoffRate",
"defaultExitMultiple"
],
"properties": {
"roundLabels": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 21
},
"roundOutcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"exitMultiple": {
"type": "number",
"minimum": 0
},
"writeoffRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"graduationRate": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 21
},
"followOnRounds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"dilutionFromRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"valuationIncrease": {
"type": "number",
"minimum": 0
},
"newOptionPoolInRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"pctCompaniesFollowOn": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"dilutionPerRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"numFollowOnRounds": {
"type": "integer",
"maximum": 20,
"minimum": 0
},
"numRoundsFollowOn": {
"type": "integer",
"maximum": 20,
"minimum": 0
},
"postmoneyValuation": {
"type": "number",
"exclusiveMinimum": 0
},
"defaultExitMultiple": {
"type": "number",
"minimum": 0
},
"defaultWriteoffRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"pctCompaniesFollowOn": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"defaultGraduationRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"newInvestmentCheckSize": {
"type": "number",
"minimum": 0
},
"exitMultipleOnLastRound": {
"type": "number",
"minimum": 0
},
"defaultValuationIncrease": {
"type": "number",
"minimum": 0
},
"ownershipOutsideInvestment": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 21
},
"dilutionFromOptionPoolsPerRound": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"followOn": {
"type": "object",
"required": [
"offsetQuarters"
],
"properties": {
"offsetQuarters": {
"type": "integer",
"maximum": 40,
"minimum": 0
}
},
"additionalProperties": false
},
"lpClasses": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"commitment"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"overrides": {
"type": "object",
"properties": {
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"carryTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"moicThreshold",
"carryPct"
],
"properties": {
"catchup": {
"type": "boolean"
},
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"moicThreshold": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"catchupPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"catchupGpShare": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMode": {
"enum": [
"none",
"irr",
"multiple"
],
"type": "string"
},
"preferredReturnRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMultiple": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"commitment": {
"type": "number",
"minimum": 0
},
"isFirstLoss": {
"type": "boolean"
},
"isRemainder": {
"type": "boolean"
},
"feeOverrides": {
"type": "object",
"properties": {
"ratePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"basesByYear": {
"type": "array",
"items": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"maxItems": 100
},
"yearlyRateSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"maxItems": 100
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"waterfall": {
"type": "object",
"properties": {
"carryTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"moicThreshold",
"carryPct"
],
"properties": {
"catchup": {
"type": "boolean"
},
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"moicThreshold": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"catchupPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"catchupGpShare": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMode": {
"enum": [
"none",
"irr",
"multiple"
],
"type": "string"
},
"preferredReturnRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMultiple": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"fundName": {
"type": "string",
"maxLength": 200
},
"granularity": {
"enum": [
"year",
"quarter",
"none"
],
"type": "string"
},
"firstCloseDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"idempotency_key": {
"type": "string",
"description": "Optional retry key; reuse only with identical input."
}
},
"definitions": {
"Error": {
"type": "object",
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message",
"retryable"
],
"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"
}
}
}
}
},
"DailyUsage": {
"type": "object",
"required": [
"day",
"product",
"endpoint",
"source",
"succeeded",
"failed"
],
"properties": {
"day": {
"type": "string",
"format": "date"
},
"failed": {
"type": "integer"
},
"source": {
"type": "string"
},
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
},
"endpoint": {
"type": "string"
},
"succeeded": {
"type": "integer"
}
}
},
"FundDetail": {
"type": "object",
"required": [
"granularity",
"irr",
"periods",
"statements"
],
"properties": {
"irr": {
"type": "object",
"properties": {
"netIRR": {
"type": "object",
"properties": {
"lp": {
"type": "number"
},
"total": {
"type": "number"
}
}
},
"grossIRR": {
"type": "number"
}
},
"description": "IRRs solved from the dated quarterly cash flows, with terminal NAV."
},
"mgmtCo": {
"type": "object"
},
"periods": {
"type": "object",
"required": [
"labels"
],
"properties": {
"dpi": {
"type": "array",
"items": {
"type": "number"
}
},
"nav": {
"$ref": "#/definitions/FundSeries"
},
"rvpi": {
"type": "array",
"items": {
"type": "number"
}
},
"tvpi": {
"type": "array",
"items": {
"type": "number"
}
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"jCurveLp": {
"type": "array",
"items": {
"type": "number"
},
"description": "Cumulative LP net cash flow at the end of each period."
},
"proceeds": {
"$ref": "#/definitions/FundSeries"
},
"gpCatchup": {
"type": "array",
"items": {
"type": "number"
},
"description": "GP catchup paid each period. Only with a waterfall block."
},
"calledCapital": {
"$ref": "#/definitions/FundSeries"
},
"distributions": {
"$ref": "#/definitions/FundSeries",
"description": "Distributions after carry. The LP line runs through the waterfall period by period."
},
"managementFees": {
"$ref": "#/definitions/FundSeries"
},
"carriedInterest": {
"type": "array",
"items": {
"type": "number"
},
"description": "GP carry paid each period, catchups included."
},
"investedCapital": {
"$ref": "#/definitions/FundSeries"
},
"preferredReturn": {
"type": "array",
"items": {
"type": "number"
},
"description": "Preferred return paid to LPs each period. Only with a waterfall block."
},
"recycledCapital": {
"$ref": "#/definitions/FundSeries"
},
"partnershipExpenses": {
"$ref": "#/definitions/FundSeries"
}
}
},
"lpClasses": {
"type": "object"
},
"waterfall": {
"type": "object",
"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."
},
"statements": {
"type": "object",
"properties": {
"periods": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": [
"string",
"null"
]
},
"cashFlow": {
"type": "object"
},
"periodEnd": {
"type": "string"
},
"periodStart": {
"type": "string"
},
"balanceSheet": {
"type": "object"
},
"incomeStatement": {
"type": "object"
}
}
}
},
"currency": {
"type": "string"
}
}
},
"granularity": {
"enum": [
"year",
"quarter"
],
"type": "string"
}
},
"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."
},
"FundResult": {
"type": "object",
"required": [
"committedCapital",
"calledCapital",
"managementFees",
"partnershipExpenses",
"investedCapital",
"proceeds",
"distributions",
"grossMultiple",
"netMultiple",
"grossIRR",
"netIRR",
"pic",
"dpi",
"rvpi",
"tvpi",
"weightedHoldPeriodYears"
],
"properties": {
"dpi": {
"type": "number"
},
"pic": {
"type": "number"
},
"rvpi": {
"type": "number"
},
"tvpi": {
"type": "number"
},
"tiers": {
"type": "array",
"items": {
"type": "object"
}
},
"netIRR": {
"$ref": "#/definitions/LineTotals"
},
"grossIRR": {
"$ref": "#/definitions/LineTotals"
},
"proceeds": {
"$ref": "#/definitions/LineTotals"
},
"netMultiple": {
"$ref": "#/definitions/LineTotals"
},
"calledCapital": {
"$ref": "#/definitions/LineTotals"
},
"distributions": {
"$ref": "#/definitions/LineTotals"
},
"grossMultiple": {
"$ref": "#/definitions/LineTotals"
},
"managementFees": {
"$ref": "#/definitions/LineTotals"
},
"investedCapital": {
"$ref": "#/definitions/LineTotals"
},
"committedCapital": {
"$ref": "#/definitions/LineTotals"
},
"partnershipExpenses": {
"$ref": "#/definitions/LineTotals"
},
"weightedHoldPeriodYears": {
"type": "number"
}
}
},
"FundSeries": {
"type": "object",
"required": [
"total",
"lp",
"gp"
],
"properties": {
"gp": {
"type": "array",
"items": {
"type": "number"
}
},
"lp": {
"type": "array",
"items": {
"type": "number"
}
},
"total": {
"type": "array",
"items": {
"type": "number"
}
}
}
},
"LineTotals": {
"type": "object",
"required": [
"total",
"lp",
"gp"
],
"properties": {
"gp": {
"type": "number"
},
"lp": {
"type": "number"
},
"total": {
"type": "number"
}
}
},
"UsagePeriod": {
"type": "object",
"required": [
"id",
"period_start",
"period_end",
"allowance",
"consumed",
"reserved",
"enabled"
],
"properties": {
"id": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"consumed": {
"type": "integer"
},
"reserved": {
"type": "integer"
},
"allowance": {
"type": "integer"
},
"period_end": {
"type": "string",
"format": "date-time"
},
"period_start": {
"type": "string",
"format": "date-time"
}
}
},
"MonthlyUsage": {
"type": "object",
"required": [
"month",
"product",
"succeeded",
"failed"
],
"properties": {
"month": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}$"
},
"failed": {
"type": "integer"
},
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
},
"succeeded": {
"type": "integer"
}
}
},
"ProductAccess": {
"type": "object",
"required": [
"product",
"name",
"priceUsd",
"allowance",
"period",
"remaining",
"active"
],
"properties": {
"name": {
"type": "string"
},
"state": {
"enum": [
"free_available",
"free_exhausted",
"paid_active",
"paid_expired",
"paid_quota_exhausted"
],
"type": "string"
},
"active": {
"type": "boolean",
"description": "Active paid term; use state/freeRemaining for trial access."
},
"period": {
"anyOf": [
{
"type": "null"
},
{
"$ref": "#/definitions/UsagePeriod"
}
]
},
"source": {
"enum": [
"free",
"paid"
],
"type": "string"
},
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
},
"priceUsd": {
"type": "number",
"const": 20
},
"allowance": {
"type": "integer",
"const": 6000
},
"remaining": {
"type": "integer",
"minimum": 0,
"description": "Calculations this account can run now: the paid balance while a paid period is active, otherwise the lifetime free balance."
},
"nextAction": {
"type": "string"
},
"freeRemaining": {
"type": "integer",
"minimum": 0
},
"paidRemaining": {
"type": "integer",
"minimum": 0
},
"paidExpiration": {
"type": [
"string",
"null"
]
}
}
},
"AccessResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"required": [
"products",
"daily"
],
"properties": {
"daily": {
"type": "array",
"items": {
"$ref": "#/definitions/DailyUsage"
}
},
"monthly": {
"type": "array",
"items": {
"$ref": "#/definitions/MonthlyUsage"
}
},
"periods": {
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/UsagePeriod"
},
{
"type": "object",
"required": [
"product"
],
"properties": {
"product": {
"enum": [
"cap-table",
"fund-economics"
],
"type": "string"
}
}
}
]
}
},
"products": {
"type": "array",
"items": {
"$ref": "#/definitions/ProductAccess"
}
}
}
}
}
},
"ComputeRequest": {
"type": "object",
"required": [
"events"
],
"properties": {
"events": {
"type": "array",
"items": {
"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"
}
],
"description": "One cap-table event, discriminated by `type`. Pass events in chronological order.",
"discriminator": {
"mapping": {
"option_pool": "#/components/schemas/OptionPoolEvent",
"option_grant": "#/components/schemas/OptionGrantEvent",
"priced_round": "#/components/schemas/PricedRoundEvent",
"warrant_round": "#/components/schemas/WarrantRoundEvent",
"secondary_sale": "#/components/schemas/SecondarySaleEvent",
"common_issuance": "#/components/schemas/CommonIssuanceEvent",
"manual_issuance": "#/components/schemas/ManualIssuanceEvent",
"convertible_round": "#/components/schemas/ConvertibleRoundEvent"
},
"propertyName": "type"
}
},
"maxItems": 200
}
},
"additionalProperties": false
},
"ResultResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"result": {
"oneOf": [
{
"$ref": "#/definitions/WaterfallResult"
},
{
"$ref": "#/definitions/FundResult"
}
]
}
}
},
"meta": {
"type": "object",
"properties": {
"keyName": {
"type": "string"
}
}
}
}
},
"ComputeResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"final": {
"$ref": "#/definitions/CapTableSnapshot"
},
"snapshots": {
"type": "array",
"items": {
"$ref": "#/definitions/CapTableSnapshot"
},
"description": "One snapshot per event, in order."
}
}
},
"meta": {
"type": "object",
"properties": {
"keyName": {
"type": "string"
}
}
}
}
},
"OptionPoolEvent": {
"type": "object",
"required": [
"type",
"label",
"shares"
],
"properties": {
"id": {
"type": "string",
"description": "Pool id, so an option_grant can name which pool it draws from."
},
"type": {
"const": "option_pool"
},
"label": {
"type": "string"
},
"shares": {
"type": "number"
},
"countMode": {
"enum": [
"shares",
"percent"
],
"description": "Defaults to \"shares\"."
},
"targetPct": {
"type": "number",
"description": "0..1 of post-event fully diluted, used when countMode=\"percent\"."
},
"strikePrice": {
"type": "number"
}
},
"description": "Create or expand an option pool (shares authorized, not granted)."
},
"WaterfallResult": {
"type": "object",
"required": [
"exitValuation",
"distributable",
"classes",
"series",
"convertibles",
"holders",
"perShare",
"iterations",
"converged"
],
"properties": {
"series": {
"type": "array",
"items": {
"type": "object"
}
},
"classes": {
"type": "array",
"items": {
"type": "object"
}
},
"holders": {
"type": "array",
"items": {
"type": "object"
}
},
"perShare": {
"type": "array",
"items": {
"type": "object"
}
},
"converged": {
"type": "boolean"
},
"iterations": {
"type": "integer"
},
"convertibles": {
"type": "array",
"items": {
"type": "object"
}
},
"distributable": {
"type": "number"
},
"exitValuation": {
"type": "number"
}
}
},
"CapTableSnapshot": {
"type": "object",
"required": [
"label",
"holdings",
"totalShares",
"ownership",
"outstandingConvertibles"
],
"properties": {
"label": {
"type": "string"
},
"holdings": {
"type": "array",
"items": {
"type": "object"
}
},
"ownership": {
"type": "array",
"items": {
"type": "object"
}
},
"roundDetail": {
"type": "object"
},
"totalShares": {
"type": "number"
},
"pricePerShare": {
"type": "number"
},
"outstandingConvertibles": {
"type": "array",
"items": {
"type": "object"
}
}
}
},
"OptionGrantEvent": {
"type": "object",
"required": [
"type",
"label",
"grants"
],
"properties": {
"type": {
"const": "option_grant"
},
"label": {
"type": "string"
},
"grants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"shares": {
"type": "number"
}
}
}
},
"poolId": {
"type": "string",
"description": "Pool id to grant from; omit to draw the common pool."
}
},
"description": "Grant options to people from one pool (fully-diluted-neutral)."
},
"PricedRoundEvent": {
"type": "object",
"required": [
"type",
"label",
"preMoneyValuation",
"investments"
],
"properties": {
"type": {
"const": "priced_round"
},
"label": {
"type": "string"
},
"pools": {
"type": "array",
"items": {
"type": "object",
"required": [
"mode"
],
"properties": {
"pct": {
"type": "number",
"description": "0..1 of post-money fully diluted, when countMode=\"percent\"."
},
"mode": {
"enum": [
"pre",
"post"
],
"description": "\"pre\" dilutes existing only; \"post\" dilutes new money too."
},
"label": {
"type": "string"
},
"poolId": {
"type": "string",
"description": "Set to track this pool separately (its own cap-table row)."
},
"shares": {
"type": "number"
},
"countMode": {
"enum": [
"shares",
"percent"
],
"description": "Defaults to \"percent\"."
}
}
},
"description": "Option pool top-ups for the round (preferred over the legacy targetPoolPct trio)."
},
"poolMode": {
"enum": [
"pre",
"post",
"custom"
],
"description": "Legacy. Prefer pools[]."
},
"investments": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"amount"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"amount": {
"type": "number"
},
"proRata": {
"type": "boolean",
"description": "If true, amount is back-solved to hold pre-round ownership; match by id."
},
"antiDilution": {
"enum": [
"weighted-average",
"full-ratchet"
]
},
"antiDilutionMethod": {
"enum": [
"conversion-ratio",
"new-shares"
],
"description": "Defaults to \"conversion-ratio\"."
}
}
}
},
"poolPostPct": {
"type": "number",
"description": "Legacy. Prefer pools[]."
},
"targetPoolPct": {
"type": "number",
"description": "Legacy. Prefer pools[]."
},
"preMoneyValuation": {
"type": "number"
}
},
"description": "A priced equity round: new money buys newly issued preferred."
},
"WarrantRoundEvent": {
"type": "object",
"required": [
"type",
"label",
"warrants"
],
"properties": {
"type": {
"const": "warrant_round"
},
"label": {
"type": "string"
},
"warrants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"purchaseClass",
"countMode"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"shares": {
"type": "number",
"description": "When countMode=\"shares\"."
},
"parValue": {
"type": "number"
},
"countMode": {
"enum": [
"shares",
"value"
]
},
"totalValue": {
"type": "number",
"description": "When countMode=\"value\": shares = totalValue / purchasePrice."
},
"priceDiscount": {
"type": "number",
"description": "0..1 discount on the source round price."
},
"purchaseClass": {
"enum": [
"common",
"preferred"
]
},
"purchasePrice": {
"type": "number"
},
"purchaseRound": {
"type": "string",
"description": "For a preferred warrant, the series it targets."
},
"priceFromRound": {
"type": "string",
"description": "Source round label to price off, when variable."
}
}
}
}
},
"description": "Issue warrants (right to buy shares at a set price); counts toward fully diluted now."
},
"FundComputeRequest": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"inputs"
],
"properties": {
"format": {
"enum": [
"json",
"xlsx",
"xlsx_url"
],
"type": "string"
},
"inputs": {
"type": "object",
"required": [
"committedCapital",
"gpCommitPct",
"gpCommitCountedTowardInvested",
"organizationalExpenses",
"operationalExpensesAnnual",
"mgmtFeePct",
"recycledCapitalPct",
"carryPct",
"newInvestmentPeriodYears",
"mgmtFeesPeriodYears",
"portfolio",
"returnTiers"
],
"properties": {
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"portfolio": {
"type": "object",
"required": [
"newPct",
"followPct",
"avgCheckSizeNew",
"avgCheckSizeFollow"
],
"properties": {
"newPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"followPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"entryStages": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"numInvestments",
"avgCheckSize"
],
"properties": {
"name": {
"type": "string"
},
"avgCheckSize": {
"type": "number",
"minimum": 0
},
"reserveRatio": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"pctAllocation": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"followOnChecks": {
"type": "array",
"items": {
"type": "object",
"required": [
"avgCheckSize"
],
"properties": {
"label": {
"type": "string"
},
"avgCheckSize": {
"type": "number",
"minimum": 0
},
"pctOfReserve": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
}
},
"numInvestments": {
"type": "number",
"minimum": 0
},
"initialCheckLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"avgCheckSizeNew": {
"type": "number",
"minimum": 0
},
"avgCheckSizeFollow": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"mgmtFeePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"gpCommitPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"returnTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"pctOfCapital",
"multiple",
"holdingPeriodYears"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"multiple": {
"type": "number",
"minimum": 0
},
"numCompanies": {
"type": "number",
"minimum": 0
},
"pctOfCapital": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"holdingPeriodYears": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"minItems": 1
},
"tierInputMode": {
"enum": [
"pct-capital",
"num-companies"
],
"type": "string"
},
"stageInputMode": {
"enum": [
"pct-capital",
"num-companies"
],
"type": "string"
},
"tierFractional": {
"type": "boolean"
},
"mgmtFeeSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"committedCapital": {
"type": "number",
"exclusiveMinimum": 0
},
"recycledCapitalPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"fundOperationsYears": {
"type": "number",
"exclusiveMinimum": 0
},
"mgmtFeesPeriodYears": {
"type": "number",
"exclusiveMinimum": 0
},
"organizationalExpenses": {
"type": "number",
"minimum": 0
},
"targetTotalInvestments": {
"type": "number",
"minimum": 0
},
"operationalExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"partnershipExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"newInvestmentPeriodYears": {
"type": "number",
"exclusiveMinimum": 0
},
"operationalExpensesAnnual": {
"type": "number",
"minimum": 0
},
"partnershipExpensesAnnual": {
"type": "number",
"minimum": 0
},
"solveCalledFromDeployment": {
"type": "boolean"
},
"organizationalExpenseLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"operationalExpensesBreakout": {
"type": "object",
"required": [
"fundAdmin",
"tax",
"audit",
"other"
],
"properties": {
"tax": {
"type": "number",
"minimum": 0
},
"audit": {
"type": "number",
"minimum": 0
},
"other": {
"type": "number",
"minimum": 0
},
"fundAdmin": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"gpCommitCountedTowardInvested": {
"type": "boolean"
}
},
"additionalProperties": false
},
"features": {
"type": "object",
"properties": {
"fees": {
"type": "object",
"required": [
"base"
],
"properties": {
"base": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"ratePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"feeYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"basesByYear": {
"type": "array",
"items": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"maxItems": 100
},
"stepDownAfterYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"yearlyRateSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"maxItems": 100
}
},
"additionalProperties": false
},
"mgmtCo": {
"type": "object",
"required": [
"expenses"
],
"properties": {
"expenses": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"annualCost"
],
"properties": {
"label": {
"type": "string",
"maxLength": 200
},
"annualCost": {
"type": "number",
"minimum": 0
},
"yearsActive": {
"type": "array",
"items": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"maxItems": 100
},
"growthRatePerYear": {
"type": "number",
"maximum": 10,
"minimum": -1
}
},
"additionalProperties": false
},
"maxItems": 100
},
"startingCash": {
"type": "number",
"minimum": 0
},
"oneTimeFormationCost": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"capTable": {
"type": "object",
"required": [
"inputs",
"bridge"
],
"properties": {
"bridge": {
"type": "object",
"required": [
"numInvestmentsTarget"
],
"properties": {
"stageName": {
"type": "string",
"maxLength": 200
},
"writeoffHoldYears": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"expectedAgeAtRound": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 21
},
"yearsBetweenRounds": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"numInvestmentsTarget": {
"type": "number",
"maximum": 10000,
"minimum": 0
}
},
"additionalProperties": false
},
"inputs": {
"type": "object",
"required": [
"newInvestmentCheckSize",
"postmoneyValuation",
"numFollowOnRounds",
"numRoundsFollowOn",
"defaultValuationIncrease",
"dilutionPerRound",
"dilutionFromOptionPoolsPerRound",
"pctCompaniesFollowOn",
"defaultGraduationRate",
"defaultWriteoffRate",
"defaultExitMultiple"
],
"properties": {
"roundLabels": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 21
},
"roundOutcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"exitMultiple": {
"type": "number",
"minimum": 0
},
"writeoffRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"graduationRate": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 21
},
"followOnRounds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"dilutionFromRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"valuationIncrease": {
"type": "number",
"minimum": 0
},
"newOptionPoolInRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"pctCompaniesFollowOn": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"dilutionPerRound": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"numFollowOnRounds": {
"type": "integer",
"maximum": 20,
"minimum": 0
},
"numRoundsFollowOn": {
"type": "integer",
"maximum": 20,
"minimum": 0
},
"postmoneyValuation": {
"type": "number",
"exclusiveMinimum": 0
},
"defaultExitMultiple": {
"type": "number",
"minimum": 0
},
"defaultWriteoffRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"pctCompaniesFollowOn": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"defaultGraduationRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"newInvestmentCheckSize": {
"type": "number",
"minimum": 0
},
"exitMultipleOnLastRound": {
"type": "number",
"minimum": 0
},
"defaultValuationIncrease": {
"type": "number",
"minimum": 0
},
"ownershipOutsideInvestment": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 21
},
"dilutionFromOptionPoolsPerRound": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"followOn": {
"type": "object",
"required": [
"offsetQuarters"
],
"properties": {
"offsetQuarters": {
"type": "integer",
"maximum": 40,
"minimum": 0
}
},
"additionalProperties": false
},
"lpClasses": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"commitment"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"overrides": {
"type": "object",
"properties": {
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"carryTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"moicThreshold",
"carryPct"
],
"properties": {
"catchup": {
"type": "boolean"
},
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"moicThreshold": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"catchupPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"catchupGpShare": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMode": {
"enum": [
"none",
"irr",
"multiple"
],
"type": "string"
},
"preferredReturnRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMultiple": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
},
"commitment": {
"type": "number",
"minimum": 0
},
"isFirstLoss": {
"type": "boolean"
},
"isRemainder": {
"type": "boolean"
},
"feeOverrides": {
"type": "object",
"properties": {
"ratePct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"basesByYear": {
"type": "array",
"items": {
"enum": [
"committed",
"nav",
"aum",
"step-down"
],
"type": "string"
},
"maxItems": 100
},
"yearlyRateSchedule": {
"type": "array",
"items": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"maxItems": 100
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"waterfall": {
"type": "object",
"properties": {
"carryTiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"moicThreshold",
"carryPct"
],
"properties": {
"catchup": {
"type": "boolean"
},
"carryPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"moicThreshold": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"catchupPct": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"catchupGpShare": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMode": {
"enum": [
"none",
"irr",
"multiple"
],
"type": "string"
},
"preferredReturnRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"preferredReturnMultiple": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"fundName": {
"type": "string",
"maxLength": 200
},
"granularity": {
"enum": [
"year",
"quarter",
"none"
],
"type": "string"
},
"firstCloseDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"additionalProperties": false
},
"FundResultResponse": {
"type": "object",
"properties": {
"data": {
"type": "object",
"required": [
"result"
],
"properties": {
"detail": {
"$ref": "#/definitions/FundDetail"
},
"result": {
"$ref": "#/definitions/FundResult"
},
"workbook": {
"type": "object",
"required": [
"filename",
"contentType"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"data": {
"type": "string"
},
"encoding": {
"enum": [
"base64"
],
"type": "string"
},
"filename": {
"type": "string"
},
"expiresAt": {
"type": "string",
"format": "date-time"
},
"contentType": {
"type": "string"
}
},
"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)."
}
}
},
"meta": {
"type": "object",
"properties": {
"keyName": {
"type": "string"
}
}
}
}
},
"SecondarySaleEvent": {
"type": "object",
"required": [
"type",
"label",
"fromId",
"toId",
"toName",
"shares"
],
"properties": {
"toId": {
"type": "string"
},
"type": {
"const": "secondary_sale"
},
"class": {
"enum": [
"common",
"preferred",
"option-pool",
"warrant"
],
"description": "Defaults to \"common\"."
},
"label": {
"type": "string"
},
"round": {
"type": "string",
"description": "Which series the shares come from (e.g. \"Series A\")."
},
"fromId": {
"type": "string"
},
"shares": {
"type": "number"
},
"toName": {
"type": "string"
}
},
"description": "Transfer existing shares from one holder to another."
},
"CommonIssuanceEvent": {
"type": "object",
"required": [
"type",
"label",
"grants"
],
"properties": {
"type": {
"const": "common_issuance"
},
"label": {
"type": "string"
},
"grants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"shares"
],
"properties": {
"id": {
"type": "string"
},
"kind": {
"enum": [
"founder",
"employee"
]
},
"name": {
"type": "string"
},
"shares": {
"type": "number"
}
}
}
}
},
"description": "Issue common stock (founders, employees)."
},
"ManualIssuanceEvent": {
"type": "object",
"required": [
"type",
"label",
"issuances"
],
"properties": {
"type": {
"const": "manual_issuance"
},
"label": {
"type": "string"
},
"issuances": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"class",
"shares"
],
"properties": {
"id": {
"type": "string"
},
"kind": {
"enum": [
"founder",
"employee",
"investor",
"pool"
]
},
"name": {
"type": "string"
},
"class": {
"enum": [
"common",
"preferred",
"option-pool",
"warrant"
]
},
"shares": {
"type": "number"
},
"pctBasis": {
"enum": [
"fully-diluted",
"issued"
],
"description": "Defaults to \"fully-diluted\"."
},
"countMode": {
"enum": [
"shares",
"percent"
],
"description": "Defaults to \"shares\"."
},
"targetPct": {
"type": "number",
"description": "0..1, used when countMode=\"percent\"."
},
"issuePrice": {
"type": "number"
}
}
}
}
},
"description": "Escape hatch: issue exact shares for custom arrangements."
},
"ConvertibleRoundEvent": {
"type": "object",
"required": [
"type",
"label",
"convertibles"
],
"properties": {
"type": {
"const": "convertible_round"
},
"label": {
"type": "string"
},
"convertibles": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"principal"
],
"properties": {
"id": {
"type": "string"
},
"mfn": {
"type": "boolean"
},
"kind": {
"enum": [
"safe",
"note"
]
},
"name": {
"type": "string"
},
"capType": {
"enum": [
"pre-money",
"post-money",
"post-money-fixed",
"post-money-fixed-after"
]
},
"discount": {
"type": "number",
"description": "0..1."
},
"principal": {
"type": "number"
},
"dilutionMode": {
"enum": [
"existing-only",
"all"
],
"description": "Defaults to \"existing-only\"."
},
"interestRate": {
"type": "number",
"description": "Annual fraction (0.05 = 5%). Notes only."
},
"valuationCap": {
"type": "number"
},
"conversionDate": {
"type": "string",
"description": "ISO date. Notes only."
},
"investmentDate": {
"type": "string",
"description": "ISO date. Notes only."
},
"accruedInterest": {
"type": "number"
}
}
}
}
},
"description": "Issue SAFEs or notes; they convert to preferred at the next priced round."
},
"WaterfallComputeRequest": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"exitValuation",
"model"
],
"properties": {
"model": {
"type": "object",
"required": [
"common",
"preferred"
],
"properties": {
"debt": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"common": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"invested": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"strike"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"strike": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"vestedFraction": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"warrants": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"strike"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"strike": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"preferred": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"holders",
"seniority"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"holders": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"shares",
"invested"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"invested": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 500
},
"multiple": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"seniority": {
"type": "number"
},
"dividendRate": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"dividendStart": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"participation": {
"enum": [
"none",
"full",
"capped"
],
"type": "string"
},
"investmentDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"conversionRatio": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"exclusiveMinimum": 0
},
"participationCap": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"dividendCumulative": {
"type": "boolean"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"convertibles": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"kind",
"principal"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"cap": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"exclusiveMinimum": 0
},
"kind": {
"enum": [
"pre-safe",
"post-safe",
"note"
],
"type": "string"
},
"name": {
"type": "string",
"maxLength": 200
},
"discount": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"cashOutAs": {
"enum": [
"debt",
"equity"
],
"type": "string"
},
"principal": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"seniority": {
"type": "number"
},
"accruedInterest": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"premiumMultiple": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"cashOutSeniority": {
"enum": [
"senior",
"pari-passu"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 100
},
"unissuedPool": {
"type": "object",
"required": [
"shares"
],
"properties": {
"shares": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
},
"treatment": {
"type": "string",
"const": "cancel"
}
},
"additionalProperties": false
},
"transactionExpenses": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"exitValuation": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}