Skip to main content
Glama

Server Details

Hemrock financial modeling prompts: context primers, task prompts, checks, and best practices.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 72 days
Last Tested
Transport
Streamable HTTP ยท MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 13 tools

Disambiguation4/5

The three compute tools are clearly differentiated by domain: cap table, exit waterfall, and fund economics. The access/info tools are mostly distinct, but get_access, get_account_access, and list_models have some overlapping pricing/access information, and the several get_* documentation tools rely heavily on descriptions to separate context, best practices, prompts, checks, and concepts.

Naming Consistency4/5

Most tools use consistent snake_case verb_noun naming such as get_context, list_concepts, and get_account_usage. The compute tools use a noun_compute suffix rather than verb_noun, which is a minor but noticeable deviation in an otherwise predictable convention.

Tool Count5/5

Thirteen tools is well within a reasonable range for a server combining three calculation engines with access management and financial-modeling reference material. Each tool appears to serve a distinct workflow, and the count is not bloated for the stated scope.

Completeness4/5

The surface covers the core computational domains (cap table, exit waterfall, fund economics), account access and usage, and supporting documentation such as concepts, prompts, checks, best practices, and context. A minor gap is the lack of an explicit template-listing tool, even though templates are referenced by get_prompts and get_context.

Available Tools

18 tools
cap_table_computeCompute a cap table
Read-only
Inspect

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.

NameRequiredDescriptionDefault
eventsYes
idempotency_keyNoOptional retry key; reuse only with identical input.
create_saved_modelSave a new modelInspect

Saves a new model to the user's account so they can open it in the browser builder and keep working on it. A fund starts from Hemrock's defaults with your inputs merged on; a cap table needs events; a waterfall needs a model and options.exitValuation. Use it when the user wants to keep a model you built in chat, and give them the url. Free: uses no calculations. Needs a signed-in connection.

NameRequiredDescriptionDefault
kindYes"cap-table" (Cap Table builder), "waterfall" (Exit Waterfall builder) or "fund" (the web Venture Capital Model).
nameNoThe model name shown in the builder. Owner only.
modelNoWaterfall only: the cap stack, the same shape as exit_waterfall_compute's model. Replaces the saved one.
eventsNoCap table only: the full list of financing events, in order, the same shape cap_table_compute takes. Replaces the saved list, so read the model first and send back the whole list with your change.
inputsNoFund only: fund inputs to change, the same fields as fund_economics_compute inputs. Merged onto the saved inputs, so send only what changes.
optionsNoCap table: { wholeShares, pricePrecision }. Waterfall: { exitValuation, exitDate, wholeShares, pricePrecision }. Merged onto the saved options.
featuresNoFund only: features to switch on or off, keyed capTable, fees, waterfall, recycling, lpClasses, mgmtCo or followOn, with the same shapes as fund_economics_compute features. An object switches the feature on with that config; false switches it off and keeps its config. The user switches these on deliberately, so only change one they asked about.
fundNameNoFund only: the fund name used in the model and its workbook.
cashFlowsNoFund only: show the Forecast and Statements tabs in the builder.
exit_waterfall_computeCompute an exit waterfall
Read-only
Inspect

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.

NameRequiredDescriptionDefault
modelYes
exitValuationYes
idempotency_keyNoOptional retry key; reuse only with identical input.
fund_economics_computeCompute fund economics
Read-only
Inspect

Use whenever the user asks how a venture fund's terms play out: fund size, management fees and step-downs, carry, investment period, recycling, reserves, deployment pace, and resulting net returns to LPs. Takes fund inputs (start from the defaults and change only what the user specifies) and returns lifetime capital, fees, investable capital and gross/net multiples (result), plus the fund over time by default (detail): capital calls, fees, investments, distributions and NAV by year, DPI/RVPI/TVPI by year, the LP J-curve, IRRs solved from those dated cash flows, and financial statements (statement of operations, balance sheet and cash flow, the same lines as the Excel Statements sheet, with check lines that are zero when they tie out). Pass granularity "quarter" for quarters or "none" for totals only. Optional features apply when their block is sent: preferred return, catch-up and tiered carry (features.waterfall; return of capital covers capital called so far, so carry can be paid on early exits, and a GP clawback, on by default and off with features.waterfall.clawback false, trues the GP back to its share on a fund-end view, reported as gpClawback by period and waterfall.clawback in total; the pref compounds annually or is simple, preferredReturnCompounding "annual" or "none", on unreturned or contributed capital, preferredReturnBase; catchupMeasure "preferred" catches the GP up to its share of the pref paid and "profit" to its share of all profit; a carry tier steps up at an LP multiple, moicThreshold, or an LP IRR, irrThreshold, and with catchup true it first brings the GP to the new rate on all profit; basis "deal-by-deal" runs American terms, returning only the capital in deals exited or written off before carry, with the clawback still on the whole fund; the Excel workbook carries every one of these terms, deal by deal on a Deals sheet), NAV/AUM/step-down fee bases (features.fees; features.fees.schedule states the fee as an LPA dates it: frequency, steps of {fromYear, rate, basis "committed", "invested" or "nav"}, and an optional organizationalExpenseCap above which org expenses come off the fee), recycling by quarter (features.recycling: defaultTreatment "retained", never distributed, or "deemed", distributed and recontributed, plus a schedule of {quarter, amount, treatment} to pin, skip with amount 0, or rebook a quarter; deemed recycling is in calledCapital and distributions and reported as recycledDeemed), LP classes (features.lpClasses, each called as the fund needs cash or on its own callSchedule; each class returns its calls, distributions and net IRR by period and a datedNetIRR), portfolio construction from specific deals (features.deals: a list of {name, investments: [{quarter, amount}], exit: {quarter, multiple or proceeds}}, quarters 1-based from first close, a multiple of 0 a write-off; it replaces stages and return tiers, the fund life runs to the last exit, and it wins over capTable; add dealsMix true to mix the methods, so the deals come first and the capital they leave goes through the stages and return tiers or capTable, and result.tiers lists the deals, flagged deal, then the tiers), cap-table portfolio construction, follow-on timing, and a management company budget. result.grossIRR and result.netIRR are geometric annualizations over weighted holding periods; quote detail.irr when the user asks for an IRR from cash flows. When the user wants the Excel model, pass format "xlsx_url" (and fundName to name the file): the response adds workbook.url, a download link to the live workbook that lasts 24 hours, with every number a formula back to the inputs. Give the user that link. 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.

NameRequiredDescriptionDefault
formatNo
inputsYes
featuresNo
fundNameNo
granularityNo
firstCloseDateNo
idempotency_keyNoOptional retry key; reuse only with identical input.
get_accessGet access to a Hemrock modelA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
modelYesModel key to check access for.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds important context: it is informational and does not purchase or confirm account-specific access. This clarifies side effects and scope beyond what annotations imply, but does not contradict them. It does not discuss return format or potential variability, but given annotations cover the safety profile, the added context is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no fluff. The primary action and result are front-loaded, followed by a concise limitation and alternative. Every word adds value, and the structure is optimal for quick agent comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple: one required enum parameter, no output schema, and annotations cover safety. The description lists the return fields, clarifies its informational nature, and provides a routing alternative. It does not describe error cases or the exact JSON shape, but that is a minor gap given the simplicity. Overall it is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100% for the single parameter 'model', which already provides a clear description. The tool description does not add further details about the parameter or its enum values, so it does not enhance what the schema already documents. This aligns with the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Returns') and a clear resource ('public access terms for an engine'), and enumerates the exact fields returned: product, annual price, billing period, annual allowance, and customer checkout URL. It also explicitly contrasts itself with get_account_access, distinguishing it from the most similar sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool (for informational public access terms) and when not to (for authenticated account access), pointing to the alternative tool get_account_access. This provides clear routing guidance with no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_account_accessGet account accessA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnlyHint=truehareliability/openWorldHint=true, and the description adds useful behavioral context: it does not consume allowance and it may return action_required with links that must be relayed. This enriches the agent's understanding beyond what annotations alone provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each adding new information: what it returns, side-effect free behavior, when to call it, and how to handle results. It is front-loaded with the core purpose and ends with an actionable, memorable instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool with no output schema, the description covers the essential return facets and the required follow-up behavior. It does not enumerate all possible response fields, but the action_required case is sufficiently specified for an agent to act correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parametershare, so a baseline of 4 is appropriate. The description confirms the call requires no inputs by focusing entirely on outputs and usage, which is consistent with the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns'), a clear resource ('this connection'), and the concrete data it exposes: signed-in status, annual product access, and remaining calculations. It also distinguishes itself from sibling compute tools by explicitly noting it does not consume allowance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: call it before a compute tool when unsure the user can run one. It also gives post-call handling instructions for the action_required case spiders. It does not explicitly name alternative sibling tools, so it stops short of a full when-not-to-use statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_account_usageGet account usageA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
toNoOptional UTC end date (YYYY-MM-DD).
fromNoOptional UTC start date (YYYY-MM-DD).

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the readOnlyHint/openWorldHint annotations by disclosing that the call does not consume allowance and by specifying exact handling for action_required results, including relaying links and offering retry. It also warns against silently skipping the calculation, which is valuable behavioral contract for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying essential information: what the tool returns, the key side-effect (no allowance consumption), and the required action on action_required. There is no filler and the purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does enough by naming the result categories (usage history, endpoint/source breakdown, action_required) and prescribing the retry/relay behavior. It stops short of full field-level detail, but for an agent selecting and invoking the tool this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the from/to parameters are already fully documented as optional UTC dates. The description adds no additional parameter meaning, so the high-coverage baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Returns') with a clear resource ('signed-in usage history') and adds a distinguishing detail ('endpoint/source breakdown'). This differentiates it from sibling tools like get_account_access or get_checks without needing to inspect schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: this is the tool for signed-in usage history and endpoint/source breakdown. However, it does not explicitly state when to choose this over sibling tools or mention any exclusions, so the guidance is adequate but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_best_practicesGet Hemrock best practicesA
Read-only
Inspect

Returns Hemrock's financial modeling best practices and design principles for a given topic. Useful as background context for AI interactions.

NameRequiredDescriptionDefault
topicNoOptional topic filter. Returns all best practices if omitted.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, establishing that this is a safe read operation. The description adds that it returns domain-specific best practices and is meant for background context, which is useful. It does not go into deeper behavioral details like pagination or response structure, but given the annotation coverage, the additional context is sufficient to earn a midpoint score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the tool's action, and each sentence adds value: the first defines the output, the second states its intended use. There is no redundancy or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter, the description and schema together provide enough context for correct invocation. The lack of an output schema is mitigated by the clear statement of what is returned. A slight deduction for not describing the response format, but this is not a significant gap for such a lightweight tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage with an optional topic parameter, an enum, and a clear description. The tool description says 'for a given topic' but does not add further syntax or behavior details beyond what the schema already offers. Thus, the description neither compensates nor detracts, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'Returns' and specifies the resource as 'Hemrock's financial modeling best practices and design principles', with the scope 'for a given topic'. This clearly distinguishes it from sibling tools like get_concept or get_checks, which target different content types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Useful as background context for AI interactions' gives clear context for when to invoke. However, it doesn't explicitly state when not to use it or name alternative tools, so it stops short of full exclusionary guidance. Still, it's clear enough for typical use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_checksGet Hemrock validation checksA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
template_nameYesThe template to get checks for. Use "all" for universal checks only.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and openWorldHint=false, so the safety profile is known. The description adds context about the content's purpose but does not disclose additional behavioral traits such as output format or pagination, meaning it only moderately adds value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary function, followed by a concise use case. Every word adds value, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only retrieval tool with one fully described parameter and clear usage guidance, the description is complete. No output schema exists, but the description explains what is returned ('prompts') and their purpose, so the agent has enough context to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with template_name fully documented including the enum and the special 'all' case. The description adds no extra parameter-level information, so it meets the baseline but does not exceed what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Returns' and resource 'Layer 3 sanity-check and validation prompts', immediately stating the tool's function. It also clarifies the intended use ('audit AI-generated work or catch common modeling errors'), which differentiates it from siblings like get_prompts or get_best_practices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool ('Use these to audit AI-generated work or catch common modeling errors'). It does not list alternative tools or exclusions, but the use case is clear enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_conceptGet a Hemrock modeling conceptA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
slugYesThe concept slug, from list_concepts (e.g. "waterfall", "anti-dilution").

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds value beyond annotations by specifying that the tool returns the full text of a single doc, which implies potentially long output. It also clarifies that the slug must be from list_concepts. No contradictory statements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and includes usage guidance without waste. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool with no output schema, the description is complete: it states what is returned (full text), how to get the input (slug from list_concepts), and when to use it. The annotations cover safety, and the schema covers the parameter. No gaps identified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the slug parameter already described as 'from list_concepts (e.g. "waterfall", "anti-dilution")'. The description repeats 'Get valid slugs from list_concepts' but adds no new semantic information beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the full text of a single Hemrock modeling concept doc by slug, identifying the specific verb, resource, and scope. It distinguishes itself from siblings like list_concepts by focusing on a single concept and from compute tools by being a read-only retrieval operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: 'Use this to learn how a financial-modeling calculation actually works before building or auditing it.' It also directs users to get valid slugs from list_concepts. However, it does not explicitly mention when not to use this tool or name alternatives other than list_concepts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contextGet Hemrock modeling contextA
Read-only
Inspect

Returns the universal context-setting primer for Hemrock models, plus an optional template-specific addendum. Always run this first before any other prompts.

NameRequiredDescriptionDefault
template_nameNoOptional. If provided, appends a template-specific primer to the universal context.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows this is a safe read. The description adds the behavioral nuance that this is a primer to run first, but does not disclose details like output formatting or side effects. Since the annotation covers the safety profile, the description adds minimal but non-essential context beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core function and immediately followed by the key usage instruction. Every sentence earns its place without redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter, read-only tool with no output schema, the description covers the main behavior, the optional parameter, and the recommended usage order. It does not elaborate on the content of the primer, but given the simplicity and the rich sibling set, the guidance is sufficient for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with template_name fully described in the input schema, so the baseline is 3. The description's phrase 'optional template-specific addendum' aligns with the schema's 'template-specific primer' but adds little new meaning; the schema already provides complete parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Returns') and clearly identifies the resource ('universal context-setting primer for Hemrock models'), distinguishing it from sibling compute and getter tools. It also conveys the scope (plus optional addendum) and positions it as a precede-all tool, eliminating ambiguity about its role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The instruction 'Always run this first before any other prompts' explicitly states when to use the tool, establishing it as a mandatory precursor. It does not explicitly mention alternatives or exclusions, but the directive is clear enough for an agent to know this is the initial step. The optional template_name guidance is implied by 'optional template-specific addendum'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_promptsGet Hemrock task promptsA
Read-only
Inspect

Returns task-specific Layer 2 prompts for a given template and task type. These are ready-to-use prompts for common modeling tasks.

NameRequiredDescriptionDefault
task_typeNoOptional task type filter.
template_nameYesThe Hemrock template being used.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=false, so the read-only nature is covered. The description adds that prompts are 'task-specific' and 'ready-to-use,' which is mildly informative, but it does not disclose any additional behavioral traits such as error conditions, edge cases, or output format. It is consistent with the annotations, so no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the core action and resource, and contains no filler or redundant phrases. Every word contributes to understanding the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two parameters and no output schema, the description provides sufficient context: it states what is returned and for what inputs. It does not need to elaborate on return values because the purpose is clear, though a bit more detail about 'Layer 2' would enrich the context slightly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both parameters. The description adds no new meaning beyond restating that the tool works with a 'template and task type,' which directly maps to the two parameters. The baseline of 3 is appropriate because the schema already carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Returns') and identifies the resource ('task-specific Layer 2 prompts') alongside the input scope ('for a given template and task type'). This clearly distinguishes it from sibling tools like cap_table_compute or get_checks, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool ('ready-to-use prompts for common modeling tasks') and mentions the required context ('given a template and task type'), but it does not explicitly state when not to use it or name any alternative tools. It lacks the exclusionary guidance that would make it a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_saved_modelOpen a saved model
Read-only
Inspect

Returns a saved model's contents in the shape the compute tools take: a cap table's events and options, a waterfall's model and saved exit, or a fund's inputs, the features switched on, and featuresSavedButOff (configured but switched off). Free: uses no calculations. Needs a signed-in connection.

NameRequiredDescriptionDefault
idYesThe model id from list_saved_models.
kindYes"cap-table" (Cap Table builder), "waterfall" (Exit Waterfall builder) or "fund" (the web Venture Capital Model).
list_conceptsList Hemrock modeling conceptsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
tagNoOptional. Filter to concepts whose tags contain this string (e.g. "cap tables").
template_nameNoOptional. Filter to concepts relevant to a specific Hemrock template.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds useful context about the return format (compact index of slugs, titles, and descriptions) and the optional filters, going beyond what annotations provide without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two well-organized sentences that cover the tool's purpose, return format, filtering options, and a pointer to the sibling tool, with no wasted words. It is front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple read-only nature, the schema with full parameter descriptions, and the read-only annotation, the description adequately covers what the tool does, what it returns, and how to use it further. It doesn't mention ordering or pagination, but these are not critical for a compact index tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with descriptions for both parameters and an enum for template_name, so the schema carries the parameter documentation. The description only mentions optional filtering without adding extra semantic detail, warranting the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists Hemrock financial-modeling concept docs, provides specific topic examples, and distinguishes it from the sibling get_concept tool by noting it returns a compact index. The verb 'lists' precisely describes the action and the resource is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to call get_concept to read the full text of any entry, providing a direct alternative and guiding when to use this tool vs its sibling. It also implies usage for obtaining an overview or filtered index, which is clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsList Hemrock model enginesA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds that the tool is free and requires no sign-in, which is beyond the annotation. It also discloses that output includes pricing and checkout links, which informs the agent about the nature of responses. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. The first sentence front-loads the core action and content, and the second provides the usage trigger. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool with no output schema, the description tells the agent what will be returned (engines, what they compute, price, checkout link) and when to call. Given the tool's simplicity, nothing necessary is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to document. Schema coverage is 100% (empty object), and the description appropriately focuses on behavior rather than parameters. Baseline 4 applies because no parameter guidance is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Lists') and resource ('hosted Hemrock calculation engines'), and enumerates the engines and the information included (what each computes, price, checkout link). This distinguishes it from compute siblings like cap_table_compute because it is the overview/list tool. The phrase 'call it when the user asks what Hemrock can calculate' reinforces its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to call: 'when the user asks what Hemrock can calculate or what it costs.' It also notes 'Free and needs no sign-in,' implying no prerequisites. It does not explicitly contrast with sibling compute tools, but the description's focus on listing vs computing implies the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_saved_modelsList saved models
Read-only
Inspect

Lists the cap tables, exit waterfalls and fund models saved to the user's Hemrock account, plus fund models others have shared with them, newest first. Each has its kind, id, name, the user's role (owner, editor, viewer) and a url that opens it in the browser builder. Call this when the user mentions "my cap table", "my fund model" or a model by name, before building one from scratch. Free: uses no calculations. Needs a signed-in connection.

NameRequiredDescriptionDefault
kindNo"cap-table" (Cap Table builder), "waterfall" (Exit Waterfall builder) or "fund" (the web Venture Capital Model).
run_saved_modelRun a saved model
Read-only
Inspect

Calculates a saved model as it stands, with the same engine as the browser builder: ownership after every event for a cap table, proceeds by holder for a waterfall (at the saved exit, or up to 10 exitValuations you pass), or a fund's lifetime totals plus the fund by year (granularity "quarter" or "none" to change that). For a fund, workbook true adds a 24-hour link to the live Excel workbook; that needs the Venture Capital Model, the same as the browser's Excel export. Free: uses no calculations. Needs a signed-in connection.

NameRequiredDescriptionDefault
idYesThe model id from list_saved_models.
kindYes"cap-table" (Cap Table builder), "waterfall" (Exit Waterfall builder) or "fund" (the web Venture Capital Model).
workbookNoFund only: add a link to the live Excel workbook.
granularityNoFund only.
exitValuationsNoWaterfall only: sale prices to run, up to 10.
update_saved_modelChange a saved model
Idempotent
Inspect

Saves a change to a model in the user's account; the browser builder shows it the next time it opens. Send only the fields that change. Owners can change anything; invited editors of a fund model can change its inputs while the owner has access; viewers can't change anything. Tell the user what you changed, run the model to show the effect, and give them the url. Free: uses no calculations. Needs a signed-in connection.

NameRequiredDescriptionDefault
idYesThe model id from list_saved_models.
kindYes"cap-table" (Cap Table builder), "waterfall" (Exit Waterfall builder) or "fund" (the web Venture Capital Model).
nameNoThe model name shown in the builder. Owner only.
modelNoWaterfall only: the cap stack, the same shape as exit_waterfall_compute's model. Replaces the saved one.
eventsNoCap table only: the full list of financing events, in order, the same shape cap_table_compute takes. Replaces the saved list, so read the model first and send back the whole list with your change.
inputsNoFund only: fund inputs to change, the same fields as fund_economics_compute inputs. Merged onto the saved inputs, so send only what changes.
optionsNoCap table: { wholeShares, pricePrecision }. Waterfall: { exitValuation, exitDate, wholeShares, pricePrecision }. Merged onto the saved options.
featuresNoFund only: features to switch on or off, keyed capTable, fees, waterfall, recycling, lpClasses, mgmtCo or followOn, with the same shapes as fund_economics_compute features. An object switches the feature on with that config; false switches it off and keeps its config. The user switches these on deliberately, so only change one they asked about.
fundNameNoFund only: the fund name used in the model and its workbook.
cashFlowsNoFund only: show the Forecast and Statements tabs in the builder.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • Changedcap_table_compute3 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / deals
        Added value: +{
        +  "description": "Build the portfolio from specific deals instead of entry stages and return tiers (and instead of capTable when both are sent). Each deal has its checks, each in a quarter from first close (1-based), and one exit in a quarter, at a multiple of everything invested in the deal (0 is a write-off) or for proceeds in money. Invested capital is the sum of the checks and called capital is solved from it; the fund life runs to the last exit, capped by maxFundLifeYears; each deal comes back as a row of result.tiers. Recycling keeps back the earliest proceeds, up to recycledCapitalPct of committed, only while later checks can use them. Send dealsMix true to mix the methods instead.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "exit": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "multiple": {
        +            "description": "Of everything invested in the deal. 0 is a write-off.",
        +            "maximum": 10000,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "proceeds": {
        +            "description": "Exit proceeds in money, instead of a multiple.",
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "quarter": {
        +            "maximum": 400,
        +            "minimum": 1,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "quarter"
        +        ],
        +        "type": "object"
        +      },
        +      "investments": {
        +        "description": "The checks the fund writes into the deal: the initial check, then any follow-ons.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "amount": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "quarter": {
        +              "description": "Quarter from first close, 1-based.",
        +              "maximum": 400,
        +              "minimum": 1,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "quarter",
        +            "amount"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 40,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "name": {
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "investments",
        +      "exit"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 500,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / dealsMix
        Added value: +{
        +  "description": "With deals: the deals come first, and the capital they leave (committed less fees and expenses, plus recycling, less the checks) is invested through the entry stages and return tiers, or capTable when sent, as it would be without deals. Recycling then goes to the stages, the fund life is the later of the deals' and the stages', and result.tiers lists the deals and then the tiers.",
        +  "type": "boolean"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / navMarkupYears
        Added value: +{
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "number"
        +}
    • Addedcreate_saved_model
    • Changedexit_waterfall_compute3 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / deals
        Added value: +{
        +  "description": "Build the portfolio from specific deals instead of entry stages and return tiers (and instead of capTable when both are sent). Each deal has its checks, each in a quarter from first close (1-based), and one exit in a quarter, at a multiple of everything invested in the deal (0 is a write-off) or for proceeds in money. Invested capital is the sum of the checks and called capital is solved from it; the fund life runs to the last exit, capped by maxFundLifeYears; each deal comes back as a row of result.tiers. Recycling keeps back the earliest proceeds, up to recycledCapitalPct of committed, only while later checks can use them. Send dealsMix true to mix the methods instead.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "exit": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "multiple": {
        +            "description": "Of everything invested in the deal. 0 is a write-off.",
        +            "maximum": 10000,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "proceeds": {
        +            "description": "Exit proceeds in money, instead of a multiple.",
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "quarter": {
        +            "maximum": 400,
        +            "minimum": 1,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "quarter"
        +        ],
        +        "type": "object"
        +      },
        +      "investments": {
        +        "description": "The checks the fund writes into the deal: the initial check, then any follow-ons.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "amount": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "quarter": {
        +              "description": "Quarter from first close, 1-based.",
        +              "maximum": 400,
        +              "minimum": 1,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "quarter",
        +            "amount"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 40,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "name": {
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "investments",
        +      "exit"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 500,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / dealsMix
        Added value: +{
        +  "description": "With deals: the deals come first, and the capital they leave (committed less fees and expenses, plus recycling, less the checks) is invested through the entry stages and return tiers, or capTable when sent, as it would be without deals. Recycling then goes to the stages, the fund life is the later of the deals' and the stages', and result.tiers lists the deals and then the tiers.",
        +  "type": "boolean"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / navMarkupYears
        Added value: +{
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "number"
        +}
    • Changedfund_economics_compute6 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / deals
        Added value: +{
        +  "description": "Build the portfolio from specific deals instead of entry stages and return tiers (and instead of capTable when both are sent). Each deal has its checks, each in a quarter from first close (1-based), and one exit in a quarter, at a multiple of everything invested in the deal (0 is a write-off) or for proceeds in money. Invested capital is the sum of the checks and called capital is solved from it; the fund life runs to the last exit, capped by maxFundLifeYears; each deal comes back as a row of result.tiers. Recycling keeps back the earliest proceeds, up to recycledCapitalPct of committed, only while later checks can use them. Send dealsMix true to mix the methods instead.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "exit": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "multiple": {
        +            "description": "Of everything invested in the deal. 0 is a write-off.",
        +            "maximum": 10000,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "proceeds": {
        +            "description": "Exit proceeds in money, instead of a multiple.",
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "quarter": {
        +            "maximum": 400,
        +            "minimum": 1,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "quarter"
        +        ],
        +        "type": "object"
        +      },
        +      "investments": {
        +        "description": "The checks the fund writes into the deal: the initial check, then any follow-ons.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "amount": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "quarter": {
        +              "description": "Quarter from first close, 1-based.",
        +              "maximum": 400,
        +              "minimum": 1,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "quarter",
        +            "amount"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 40,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "name": {
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "investments",
        +      "exit"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 500,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / dealsMix
        Added value: +{
        +  "description": "With deals: the deals come first, and the capital they leave (committed less fees and expenses, plus recycling, less the checks) is invested through the entry stages and return tiers, or capTable when sent, as it would be without deals. Recycling then goes to the stages, the fund life is the later of the deals' and the stages', and result.tiers lists the deals and then the tiers.",
        +  "type": "boolean"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / navMarkupYears
        Added value: +{
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / features / properties / deals
        Added value: +{
        +  "description": "Build the portfolio from specific deals instead of entry stages and return tiers (and instead of capTable when both are sent). Each deal has its checks, each in a quarter from first close (1-based), and one exit in a quarter, at a multiple of everything invested in the deal (0 is a write-off) or for proceeds in money. Invested capital is the sum of the checks and called capital is solved from it; the fund life runs to the last exit, capped by maxFundLifeYears; each deal comes back as a row of result.tiers. Recycling keeps back the earliest proceeds, up to recycledCapitalPct of committed, only while later checks can use them. Send dealsMix true to mix the methods instead.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "exit": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "multiple": {
        +            "description": "Of everything invested in the deal. 0 is a write-off.",
        +            "maximum": 10000,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "proceeds": {
        +            "description": "Exit proceeds in money, instead of a multiple.",
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "quarter": {
        +            "maximum": 400,
        +            "minimum": 1,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "quarter"
        +        ],
        +        "type": "object"
        +      },
        +      "investments": {
        +        "description": "The checks the fund writes into the deal: the initial check, then any follow-ons.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "amount": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "quarter": {
        +              "description": "Quarter from first close, 1-based.",
        +              "maximum": 400,
        +              "minimum": 1,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "quarter",
        +            "amount"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 40,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "name": {
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "investments",
        +      "exit"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 500,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / features / properties / dealsMix
        Added value: +{
        +  "description": "With deals: the deals come first, and the capital they leave (committed less fees and expenses, plus recycling, less the checks) is invested through the entry stages and return tiers, or capTable when sent, as it would be without deals. Recycling then goes to the stages, the fund life is the later of the deals' and the stages', and result.tiers lists the deals and then the tiers.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / inputs / properties / navMarkupYears
        Added value: +{
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "number"
        +}
    • Addedget_saved_model
    • Addedlist_saved_models
    • Addedrun_saved_model
    • Addedupdate_saved_model
  2. 3 tool updates
    • Changedcap_table_compute1 field changed
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / gpCommitBearsCarry
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedexit_waterfall_compute1 field changed
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / gpCommitBearsCarry
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedfund_economics_compute2 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / gpCommitBearsCarry
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / inputs / properties / gpCommitBearsCarry
        Added value: +{
        +  "type": "boolean"
        +}
  3. 3 tool updates
    • Changedcap_table_compute13 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / fees / properties / schedule
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "The fee as an LPA states it, on the dated schedule: each rate from a point in fund years (0 = first close; 5.5 starts halfway through year 6 and cuts the period it lands in), charged on committed capital, invested cost not yet realized, or NAV, with organizational expenses above organizationalExpenseCap offsetting the fee. Runs for feeYears; base, ratePct, yearlyRateSchedule and basesByYear are ignored when it is set.",
        +  "properties": {
        +    "frequency": {
        +      "enum": [
        +        "quarterly",
        +        "semiannual",
        +        "annual"
        +      ],
        +      "type": "string"
        +    },
        +    "organizationalExpenseCap": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "steps": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "basis": {
        +            "enum": [
        +              "committed",
        +              "invested",
        +              "nav"
        +            ],
        +            "type": "string"
        +          },
        +          "fromYear": {
        +            "maximum": 100,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "rate": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "fromYear",
        +          "rate",
        +          "basis"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 20,
        +      "minItems": 1,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "steps"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / lpClasses / items / properties / overrides / properties / carryTiers / items / properties / irrThreshold
        Added value: +{
        +  "description": "Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / recycling
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "defaultTreatment": {
        +      "enum": [
        +        "retained",
        +        "deemed"
        +      ],
        +      "type": "string"
        +    },
        +    "schedule": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "amount": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "quarter": {
        +            "maximum": 400,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "treatment": {
        +            "enum": [
        +              "retained",
        +              "deemed"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "quarter"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 400,
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / basis
        Added value: +{
        +  "description": "Whole fund (the default, European) or deal by deal (American): return of capital owes only the capital in deals exited or written off so far, so carry can be paid before the fund returns all capital. The clawback settles on the whole fund.",
        +  "enum": [
        +    "whole-fund",
        +    "deal-by-deal"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / carryTiers / items / properties / irrThreshold
        Added value: +{
        +  "description": "Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / catchupMeasure
        Added value: +{
        +  "description": "GP catchup: to the carry share of the pref paid (the default), or until the GP holds the carry share of all profit paid. They differ when the GP shares the catchup with LPs.",
        +  "enum": [
        +    "preferred",
        +    "profit"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / clawback
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / preferredReturnBase
        Added value: +{
        +  "description": "IRR pref: accrue on capital not yet returned plus unpaid pref (the default), or on each contribution from its date whatever comes back.",
        +  "enum": [
        +    "unreturned",
        +    "contributed"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / preferredReturnCompounding
        Added value: +{
        +  "description": "IRR pref: compound annually (the default) or simple interest.",
        +  "enum": [
        +    "annual",
        +    "none"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / definitions / FundDetail / properties / lpClasses / description
        Previous value: -"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls and distributions, one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash."New value: +"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls, distributions and netIRR (the class's IRR through each period, with its share of LP NAV as the terminal value), one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash."
      • changedInput schema / definitions / FundDetail / properties / periods / properties / carriedInterest / description
        Previous value: -"GP carry paid each period, catchups included."New value: +"GP carry paid each period, catchups included, net of the clawback."
      • addedInput schema / definitions / FundDetail / properties / periods / properties / gpClawback
        Added value: +{
        +  "description": "Carry the GP returns to the LPs, in the quarter the fund ends (or its year). Return of capital covers only capital called so far, so early carry is possible; the clawback brings the GP back to its whole-fund share. Off with features.waterfall.clawback: false.",
        +  "items": {
        +    "type": "number"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundDetail / properties / periods / properties / recycledDeemed
        Added value: +{
        +  "$ref": "#/definitions/FundSeries",
        +  "description": "The part of recycledCapital booked as distributed and recontributed (features.recycling treatment \"deemed\"). It is also in calledCapital and distributions; recycling that is never distributed is in neither."
        +}
    • Changedexit_waterfall_compute13 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / fees / properties / schedule
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "The fee as an LPA states it, on the dated schedule: each rate from a point in fund years (0 = first close; 5.5 starts halfway through year 6 and cuts the period it lands in), charged on committed capital, invested cost not yet realized, or NAV, with organizational expenses above organizationalExpenseCap offsetting the fee. Runs for feeYears; base, ratePct, yearlyRateSchedule and basesByYear are ignored when it is set.",
        +  "properties": {
        +    "frequency": {
        +      "enum": [
        +        "quarterly",
        +        "semiannual",
        +        "annual"
        +      ],
        +      "type": "string"
        +    },
        +    "organizationalExpenseCap": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "steps": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "basis": {
        +            "enum": [
        +              "committed",
        +              "invested",
        +              "nav"
        +            ],
        +            "type": "string"
        +          },
        +          "fromYear": {
        +            "maximum": 100,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "rate": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "fromYear",
        +          "rate",
        +          "basis"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 20,
        +      "minItems": 1,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "steps"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / lpClasses / items / properties / overrides / properties / carryTiers / items / properties / irrThreshold
        Added value: +{
        +  "description": "Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / recycling
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "defaultTreatment": {
        +      "enum": [
        +        "retained",
        +        "deemed"
        +      ],
        +      "type": "string"
        +    },
        +    "schedule": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "amount": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "quarter": {
        +            "maximum": 400,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "treatment": {
        +            "enum": [
        +              "retained",
        +              "deemed"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "quarter"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 400,
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / basis
        Added value: +{
        +  "description": "Whole fund (the default, European) or deal by deal (American): return of capital owes only the capital in deals exited or written off so far, so carry can be paid before the fund returns all capital. The clawback settles on the whole fund.",
        +  "enum": [
        +    "whole-fund",
        +    "deal-by-deal"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / carryTiers / items / properties / irrThreshold
        Added value: +{
        +  "description": "Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / catchupMeasure
        Added value: +{
        +  "description": "GP catchup: to the carry share of the pref paid (the default), or until the GP holds the carry share of all profit paid. They differ when the GP shares the catchup with LPs.",
        +  "enum": [
        +    "preferred",
        +    "profit"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / clawback
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / preferredReturnBase
        Added value: +{
        +  "description": "IRR pref: accrue on capital not yet returned plus unpaid pref (the default), or on each contribution from its date whatever comes back.",
        +  "enum": [
        +    "unreturned",
        +    "contributed"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / preferredReturnCompounding
        Added value: +{
        +  "description": "IRR pref: compound annually (the default) or simple interest.",
        +  "enum": [
        +    "annual",
        +    "none"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / definitions / FundDetail / properties / lpClasses / description
        Previous value: -"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls and distributions, one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash."New value: +"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls, distributions and netIRR (the class's IRR through each period, with its share of LP NAV as the terminal value), one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash."
      • changedInput schema / definitions / FundDetail / properties / periods / properties / carriedInterest / description
        Previous value: -"GP carry paid each period, catchups included."New value: +"GP carry paid each period, catchups included, net of the clawback."
      • addedInput schema / definitions / FundDetail / properties / periods / properties / gpClawback
        Added value: +{
        +  "description": "Carry the GP returns to the LPs, in the quarter the fund ends (or its year). Return of capital covers only capital called so far, so early carry is possible; the clawback brings the GP back to its whole-fund share. Off with features.waterfall.clawback: false.",
        +  "items": {
        +    "type": "number"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundDetail / properties / periods / properties / recycledDeemed
        Added value: +{
        +  "$ref": "#/definitions/FundSeries",
        +  "description": "The part of recycledCapital booked as distributed and recontributed (features.recycling treatment \"deemed\"). It is also in calledCapital and distributions; recycling that is never distributed is in neither."
        +}
    • Changedfund_economics_compute22 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / fees / properties / schedule
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "The fee as an LPA states it, on the dated schedule: each rate from a point in fund years (0 = first close; 5.5 starts halfway through year 6 and cuts the period it lands in), charged on committed capital, invested cost not yet realized, or NAV, with organizational expenses above organizationalExpenseCap offsetting the fee. Runs for feeYears; base, ratePct, yearlyRateSchedule and basesByYear are ignored when it is set.",
        +  "properties": {
        +    "frequency": {
        +      "enum": [
        +        "quarterly",
        +        "semiannual",
        +        "annual"
        +      ],
        +      "type": "string"
        +    },
        +    "organizationalExpenseCap": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "steps": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "basis": {
        +            "enum": [
        +              "committed",
        +              "invested",
        +              "nav"
        +            ],
        +            "type": "string"
        +          },
        +          "fromYear": {
        +            "maximum": 100,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "rate": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "fromYear",
        +          "rate",
        +          "basis"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 20,
        +      "minItems": 1,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "steps"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / lpClasses / items / properties / overrides / properties / carryTiers / items / properties / irrThreshold
        Added value: +{
        +  "description": "Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / recycling
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "defaultTreatment": {
        +      "enum": [
        +        "retained",
        +        "deemed"
        +      ],
        +      "type": "string"
        +    },
        +    "schedule": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "amount": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "quarter": {
        +            "maximum": 400,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "treatment": {
        +            "enum": [
        +              "retained",
        +              "deemed"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "quarter"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 400,
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / basis
        Added value: +{
        +  "description": "Whole fund (the default, European) or deal by deal (American): return of capital owes only the capital in deals exited or written off so far, so carry can be paid before the fund returns all capital. The clawback settles on the whole fund.",
        +  "enum": [
        +    "whole-fund",
        +    "deal-by-deal"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / carryTiers / items / properties / irrThreshold
        Added value: +{
        +  "description": "Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / catchupMeasure
        Added value: +{
        +  "description": "GP catchup: to the carry share of the pref paid (the default), or until the GP holds the carry share of all profit paid. They differ when the GP shares the catchup with LPs.",
        +  "enum": [
        +    "preferred",
        +    "profit"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / clawback
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / preferredReturnBase
        Added value: +{
        +  "description": "IRR pref: accrue on capital not yet returned plus unpaid pref (the default), or on each contribution from its date whatever comes back.",
        +  "enum": [
        +    "unreturned",
        +    "contributed"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / waterfall / properties / preferredReturnCompounding
        Added value: +{
        +  "description": "IRR pref: compound annually (the default) or simple interest.",
        +  "enum": [
        +    "annual",
        +    "none"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / definitions / FundDetail / properties / lpClasses / description
        Previous value: -"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls and distributions, one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash."New value: +"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls, distributions and netIRR (the class's IRR through each period, with its share of LP NAV as the terminal value), one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash."
      • changedInput schema / definitions / FundDetail / properties / periods / properties / carriedInterest / description
        Previous value: -"GP carry paid each period, catchups included."New value: +"GP carry paid each period, catchups included, net of the clawback."
      • addedInput schema / definitions / FundDetail / properties / periods / properties / gpClawback
        Added value: +{
        +  "description": "Carry the GP returns to the LPs, in the quarter the fund ends (or its year). Return of capital covers only capital called so far, so early carry is possible; the clawback brings the GP back to its whole-fund share. Off with features.waterfall.clawback: false.",
        +  "items": {
        +    "type": "number"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundDetail / properties / periods / properties / recycledDeemed
        Added value: +{
        +  "$ref": "#/definitions/FundSeries",
        +  "description": "The part of recycledCapital booked as distributed and recontributed (features.recycling treatment \"deemed\"). It is also in calledCapital and distributions; recycling that is never distributed is in neither."
        +}
      • addedInput schema / properties / features / properties / fees / properties / schedule
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "The fee as an LPA states it, on the dated schedule: each rate from a point in fund years (0 = first close; 5.5 starts halfway through year 6 and cuts the period it lands in), charged on committed capital, invested cost not yet realized, or NAV, with organizational expenses above organizationalExpenseCap offsetting the fee. Runs for feeYears; base, ratePct, yearlyRateSchedule and basesByYear are ignored when it is set.",
        +  "properties": {
        +    "frequency": {
        +      "enum": [
        +        "quarterly",
        +        "semiannual",
        +        "annual"
        +      ],
        +      "type": "string"
        +    },
        +    "organizationalExpenseCap": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "steps": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "basis": {
        +            "enum": [
        +              "committed",
        +              "invested",
        +              "nav"
        +            ],
        +            "type": "string"
        +          },
        +          "fromYear": {
        +            "maximum": 100,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "rate": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "fromYear",
        +          "rate",
        +          "basis"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 20,
        +      "minItems": 1,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "steps"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / features / properties / lpClasses / items / properties / overrides / properties / carryTiers / items / properties / irrThreshold
        Added value: +{
        +  "description": "Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / features / properties / recycling
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "defaultTreatment": {
        +      "enum": [
        +        "retained",
        +        "deemed"
        +      ],
        +      "type": "string"
        +    },
        +    "schedule": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "amount": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "quarter": {
        +            "maximum": 400,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "treatment": {
        +            "enum": [
        +              "retained",
        +              "deemed"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "quarter"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 400,
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / features / properties / waterfall / properties / basis
        Added value: +{
        +  "description": "Whole fund (the default, European) or deal by deal (American): return of capital owes only the capital in deals exited or written off so far, so carry can be paid before the fund returns all capital. The clawback settles on the whole fund.",
        +  "enum": [
        +    "whole-fund",
        +    "deal-by-deal"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / features / properties / waterfall / properties / carryTiers / items / properties / irrThreshold
        Added value: +{
        +  "description": "Instead of moicThreshold: the band below this tier ends when the LP IRR reaches this rate. With one of these, tiers run in the order given.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / features / properties / waterfall / properties / catchupMeasure
        Added value: +{
        +  "description": "GP catchup: to the carry share of the pref paid (the default), or until the GP holds the carry share of all profit paid. They differ when the GP shares the catchup with LPs.",
        +  "enum": [
        +    "preferred",
        +    "profit"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / features / properties / waterfall / properties / clawback
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / features / properties / waterfall / properties / preferredReturnBase
        Added value: +{
        +  "description": "IRR pref: accrue on capital not yet returned plus unpaid pref (the default), or on each contribution from its date whatever comes back.",
        +  "enum": [
        +    "unreturned",
        +    "contributed"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / features / properties / waterfall / properties / preferredReturnCompounding
        Added value: +{
        +  "description": "IRR pref: compound annually (the default) or simple interest.",
        +  "enum": [
        +    "annual",
        +    "none"
        +  ],
        +  "type": "string"
        +}
  4. 3 tool updates
    • Changedcap_table_compute2 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / lpClasses / items / properties / callSchedule
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Call this class on its own schedule instead of as the fund needs cash. pct is a share of the class commitment per fund year (called in the year's first quarter) or per quarter. Whatever the entries leave is called when the fund needs it.",
        +  "properties": {
        +    "frequency": {
        +      "enum": [
        +        "year",
        +        "quarter"
        +      ],
        +      "type": "string"
        +    },
        +    "pct": {
        +      "items": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "maxItems": 80,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "frequency",
        +    "pct"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundDetail / properties / lpClasses / description
        Added value: +"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls and distributions, one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash."
    • Changedexit_waterfall_compute2 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / lpClasses / items / properties / callSchedule
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Call this class on its own schedule instead of as the fund needs cash. pct is a share of the class commitment per fund year (called in the year's first quarter) or per quarter. Whatever the entries leave is called when the fund needs it.",
        +  "properties": {
        +    "frequency": {
        +      "enum": [
        +        "year",
        +        "quarter"
        +      ],
        +      "type": "string"
        +    },
        +    "pct": {
        +      "items": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "maxItems": 80,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "frequency",
        +    "pct"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundDetail / properties / lpClasses / description
        Added value: +"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls and distributions, one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash."
    • Changedfund_economics_compute3 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features / properties / lpClasses / items / properties / callSchedule
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Call this class on its own schedule instead of as the fund needs cash. pct is a share of the class commitment per fund year (called in the year's first quarter) or per quarter. Whatever the entries leave is called when the fund needs it.",
        +  "properties": {
        +    "frequency": {
        +      "enum": [
        +        "year",
        +        "quarter"
        +      ],
        +      "type": "string"
        +    },
        +    "pct": {
        +      "items": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "maxItems": 80,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "frequency",
        +    "pct"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundDetail / properties / lpClasses / description
        Added value: +"LP economics split by class. Each class carries its lifetime totals, datedNetIRR (solved from its own dated calls and distributions) and periods: calledCapital, unscheduledCalls and distributions, one entry per label. A class with a callSchedule is called on it; the others are called as the fund needs cash."
      • addedInput schema / properties / features / properties / lpClasses / items / properties / callSchedule
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Call this class on its own schedule instead of as the fund needs cash. pct is a share of the class commitment per fund year (called in the year's first quarter) or per quarter. Whatever the entries leave is called when the fund needs it.",
        +  "properties": {
        +    "frequency": {
        +      "enum": [
        +        "year",
        +        "quarter"
        +      ],
        +      "type": "string"
        +    },
        +    "pct": {
        +      "items": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "maxItems": 80,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "frequency",
        +    "pct"
        +  ],
        +  "type": "object"
        +}
  5. 3 tool updates
    • Changedcap_table_compute7 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / maxFundLifeYears
        Added value: +{
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / operationalExpenseLines / items / properties / quarterly
        Added value: +{
        +  "items": [
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  ],
        +  "maxItems": 4,
        +  "minItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / partnershipExpenseLines / items / properties / quarterly
        Added value: +{
        +  "items": [
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  ],
        +  "maxItems": 4,
        +  "minItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / balanceSheet / properties
        Added value: +{
        +  "carriedInterestDistributed": {
        +    "description": "Carried interest distributed",
        +    "type": "number"
        +  },
        +  "cash": {
        +    "description": "Cash",
        +    "type": "number"
        +  },
        +  "checkBalances": {
        +    "description": "Check: assets less liabilities and capital. Zero when the balance sheet balances.",
        +    "type": "number"
        +  },
        +  "contributedCapitalGp": {
        +    "description": "Contributed capital, GP",
        +    "type": "number"
        +  },
        +  "contributedCapitalLp": {
        +    "description": "Contributed capital, LPs",
        +    "type": "number"
        +  },
        +  "cumulativeNetInvestmentIncome": {
        +    "description": "Cumulative net investment income (loss)",
        +    "type": "number"
        +  },
        +  "cumulativeNetRealizedGain": {
        +    "description": "Cumulative net realized gain (loss)",
        +    "type": "number"
        +  },
        +  "cumulativeNetUnrealized": {
        +    "description": "Cumulative net unrealized appreciation (depreciation)",
        +    "type": "number"
        +  },
        +  "distributionsGpCommit": {
        +    "description": "Distributions to the GP commit",
        +    "type": "number"
        +  },
        +  "distributionsLp": {
        +    "description": "Distributions to LPs",
        +    "type": "number"
        +  },
        +  "investmentsAtCost": {
        +    "description": "Investments, at cost. AUM.",
        +    "type": "number"
        +  },
        +  "investmentsAtFairValue": {
        +    "description": "Investments, at fair value. NAV.",
        +    "type": "number"
        +  },
        +  "totalAssets": {
        +    "description": "Total assets",
        +    "type": "number"
        +  },
        +  "totalLiabilities": {
        +    "description": "Total liabilities. Expenses are paid when incurred, so nothing is accrued.",
        +    "type": "number"
        +  },
        +  "totalLiabilitiesAndCapital": {
        +    "description": "Total liabilities and partners' capital",
        +    "type": "number"
        +  },
        +  "totalPartnersCapital": {
        +    "description": "Total partners' capital",
        +    "type": "number"
        +  },
        +  "unfundedCommitments": {
        +    "description": "Memo: unfunded commitments",
        +    "type": "number"
        +  },
        +  "unrealizedAppreciation": {
        +    "description": "Unrealized appreciation (depreciation)",
        +    "type": "number"
        +  }
        +}
      • addedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / cashFlow / properties
        Added value: +{
        +  "carriedInterestPaid": {
        +    "description": "Carried interest paid",
        +    "type": "number"
        +  },
        +  "cashBeginning": {
        +    "description": "Cash, beginning of period",
        +    "type": "number"
        +  },
        +  "cashEnd": {
        +    "description": "Cash, end of period",
        +    "type": "number"
        +  },
        +  "checkTiesToBalanceSheet": {
        +    "description": "Check: cash less balance sheet cash. Zero when the cash flow ties to the balance sheet.",
        +    "type": "number"
        +  },
        +  "contributionsGp": {
        +    "description": "Capital contributions, GP",
        +    "type": "number"
        +  },
        +  "contributionsLp": {
        +    "description": "Capital contributions, LPs",
        +    "type": "number"
        +  },
        +  "distributionsGpCommit": {
        +    "description": "Distributions to the GP commit",
        +    "type": "number"
        +  },
        +  "distributionsLp": {
        +    "description": "Distributions to LPs",
        +    "type": "number"
        +  },
        +  "lessNetChangeInUnrealized": {
        +    "description": "Net change in unrealized (appreciation) depreciation",
        +    "type": "number"
        +  },
        +  "lessNetRealizedGain": {
        +    "description": "Net realized (gain) loss on investments",
        +    "type": "number"
        +  },
        +  "netCashFromFinancing": {
        +    "description": "Net cash from financing activities",
        +    "type": "number"
        +  },
        +  "netCashFromOperating": {
        +    "description": "Net cash from operating activities",
        +    "type": "number"
        +  },
        +  "netChangeInCash": {
        +    "description": "Net change in cash",
        +    "type": "number"
        +  },
        +  "netIncreaseFromOperations": {
        +    "description": "Net increase (decrease) in partners' capital from operations",
        +    "type": "number"
        +  },
        +  "proceedsFromExits": {
        +    "description": "Proceeds from exits",
        +    "type": "number"
        +  },
        +  "purchasesOfInvestments": {
        +    "description": "Purchases of investments. Includes recycled proceeds.",
        +    "type": "number"
        +  }
        +}
      • removedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / incomeStatement
        Removed value: -{
        -  "type": "object"
        -}
      • addedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / operations
        Added value: +{
        +  "properties": {
        +    "managementFees": {
        +      "description": "Management fees",
        +      "type": "number"
        +    },
        +    "netChangeInUnrealized": {
        +      "description": "Net change in unrealized appreciation (depreciation). Change in NAV less change in cost held.",
        +      "type": "number"
        +    },
        +    "netGainOnInvestments": {
        +      "description": "Net gain (loss) on investments",
        +      "type": "number"
        +    },
        +    "netIncreaseFromOperations": {
        +      "description": "Net increase (decrease) in partners' capital from operations",
        +      "type": "number"
        +    },
        +    "netInvestmentIncome": {
        +      "description": "Net investment income (loss). No interest or dividend income is modeled.",
        +      "type": "number"
        +    },
        +    "netRealizedGain": {
        +      "description": "Net realized gain (loss)",
        +      "type": "number"
        +    },
        +    "operationalExpenseLines": {
        +      "description": "The operational expense lines, when the model itemizes them.",
        +      "items": {
        +        "properties": {
        +          "amount": {
        +            "type": "number"
        +          },
        +          "label": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "operationalExpenses": {
        +      "description": "Operational expenses. Run through Q1 of the fund year after the fund life ends.",
        +      "type": "number"
        +    },
        +    "organizationalExpenses": {
        +      "description": "Organizational expenses",
        +      "type": "number"
        +    },
        +    "partnershipExpenseLines": {
        +      "description": "The partnership expense lines, when the model itemizes them.",
        +      "items": {
        +        "properties": {
        +          "amount": {
        +            "type": "number"
        +          },
        +          "label": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "partnershipExpenses": {
        +      "description": "Partnership expenses",
        +      "type": "number"
        +    },
        +    "realizedGainOnExits": {
        +      "description": "Realized gain on exits. Proceeds less the cost they release.",
        +      "type": "number"
        +    },
        +    "realizedLossOnWriteoffs": {
        +      "description": "Realized loss on writeoffs",
        +      "type": "number"
        +    },
        +    "totalExpenses": {
        +      "description": "Total expenses",
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedexit_waterfall_compute7 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / maxFundLifeYears
        Added value: +{
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / operationalExpenseLines / items / properties / quarterly
        Added value: +{
        +  "items": [
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  ],
        +  "maxItems": 4,
        +  "minItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / partnershipExpenseLines / items / properties / quarterly
        Added value: +{
        +  "items": [
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  ],
        +  "maxItems": 4,
        +  "minItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / balanceSheet / properties
        Added value: +{
        +  "carriedInterestDistributed": {
        +    "description": "Carried interest distributed",
        +    "type": "number"
        +  },
        +  "cash": {
        +    "description": "Cash",
        +    "type": "number"
        +  },
        +  "checkBalances": {
        +    "description": "Check: assets less liabilities and capital. Zero when the balance sheet balances.",
        +    "type": "number"
        +  },
        +  "contributedCapitalGp": {
        +    "description": "Contributed capital, GP",
        +    "type": "number"
        +  },
        +  "contributedCapitalLp": {
        +    "description": "Contributed capital, LPs",
        +    "type": "number"
        +  },
        +  "cumulativeNetInvestmentIncome": {
        +    "description": "Cumulative net investment income (loss)",
        +    "type": "number"
        +  },
        +  "cumulativeNetRealizedGain": {
        +    "description": "Cumulative net realized gain (loss)",
        +    "type": "number"
        +  },
        +  "cumulativeNetUnrealized": {
        +    "description": "Cumulative net unrealized appreciation (depreciation)",
        +    "type": "number"
        +  },
        +  "distributionsGpCommit": {
        +    "description": "Distributions to the GP commit",
        +    "type": "number"
        +  },
        +  "distributionsLp": {
        +    "description": "Distributions to LPs",
        +    "type": "number"
        +  },
        +  "investmentsAtCost": {
        +    "description": "Investments, at cost. AUM.",
        +    "type": "number"
        +  },
        +  "investmentsAtFairValue": {
        +    "description": "Investments, at fair value. NAV.",
        +    "type": "number"
        +  },
        +  "totalAssets": {
        +    "description": "Total assets",
        +    "type": "number"
        +  },
        +  "totalLiabilities": {
        +    "description": "Total liabilities. Expenses are paid when incurred, so nothing is accrued.",
        +    "type": "number"
        +  },
        +  "totalLiabilitiesAndCapital": {
        +    "description": "Total liabilities and partners' capital",
        +    "type": "number"
        +  },
        +  "totalPartnersCapital": {
        +    "description": "Total partners' capital",
        +    "type": "number"
        +  },
        +  "unfundedCommitments": {
        +    "description": "Memo: unfunded commitments",
        +    "type": "number"
        +  },
        +  "unrealizedAppreciation": {
        +    "description": "Unrealized appreciation (depreciation)",
        +    "type": "number"
        +  }
        +}
      • addedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / cashFlow / properties
        Added value: +{
        +  "carriedInterestPaid": {
        +    "description": "Carried interest paid",
        +    "type": "number"
        +  },
        +  "cashBeginning": {
        +    "description": "Cash, beginning of period",
        +    "type": "number"
        +  },
        +  "cashEnd": {
        +    "description": "Cash, end of period",
        +    "type": "number"
        +  },
        +  "checkTiesToBalanceSheet": {
        +    "description": "Check: cash less balance sheet cash. Zero when the cash flow ties to the balance sheet.",
        +    "type": "number"
        +  },
        +  "contributionsGp": {
        +    "description": "Capital contributions, GP",
        +    "type": "number"
        +  },
        +  "contributionsLp": {
        +    "description": "Capital contributions, LPs",
        +    "type": "number"
        +  },
        +  "distributionsGpCommit": {
        +    "description": "Distributions to the GP commit",
        +    "type": "number"
        +  },
        +  "distributionsLp": {
        +    "description": "Distributions to LPs",
        +    "type": "number"
        +  },
        +  "lessNetChangeInUnrealized": {
        +    "description": "Net change in unrealized (appreciation) depreciation",
        +    "type": "number"
        +  },
        +  "lessNetRealizedGain": {
        +    "description": "Net realized (gain) loss on investments",
        +    "type": "number"
        +  },
        +  "netCashFromFinancing": {
        +    "description": "Net cash from financing activities",
        +    "type": "number"
        +  },
        +  "netCashFromOperating": {
        +    "description": "Net cash from operating activities",
        +    "type": "number"
        +  },
        +  "netChangeInCash": {
        +    "description": "Net change in cash",
        +    "type": "number"
        +  },
        +  "netIncreaseFromOperations": {
        +    "description": "Net increase (decrease) in partners' capital from operations",
        +    "type": "number"
        +  },
        +  "proceedsFromExits": {
        +    "description": "Proceeds from exits",
        +    "type": "number"
        +  },
        +  "purchasesOfInvestments": {
        +    "description": "Purchases of investments. Includes recycled proceeds.",
        +    "type": "number"
        +  }
        +}
      • removedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / incomeStatement
        Removed value: -{
        -  "type": "object"
        -}
      • addedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / operations
        Added value: +{
        +  "properties": {
        +    "managementFees": {
        +      "description": "Management fees",
        +      "type": "number"
        +    },
        +    "netChangeInUnrealized": {
        +      "description": "Net change in unrealized appreciation (depreciation). Change in NAV less change in cost held.",
        +      "type": "number"
        +    },
        +    "netGainOnInvestments": {
        +      "description": "Net gain (loss) on investments",
        +      "type": "number"
        +    },
        +    "netIncreaseFromOperations": {
        +      "description": "Net increase (decrease) in partners' capital from operations",
        +      "type": "number"
        +    },
        +    "netInvestmentIncome": {
        +      "description": "Net investment income (loss). No interest or dividend income is modeled.",
        +      "type": "number"
        +    },
        +    "netRealizedGain": {
        +      "description": "Net realized gain (loss)",
        +      "type": "number"
        +    },
        +    "operationalExpenseLines": {
        +      "description": "The operational expense lines, when the model itemizes them.",
        +      "items": {
        +        "properties": {
        +          "amount": {
        +            "type": "number"
        +          },
        +          "label": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "operationalExpenses": {
        +      "description": "Operational expenses. Run through Q1 of the fund year after the fund life ends.",
        +      "type": "number"
        +    },
        +    "organizationalExpenses": {
        +      "description": "Organizational expenses",
        +      "type": "number"
        +    },
        +    "partnershipExpenseLines": {
        +      "description": "The partnership expense lines, when the model itemizes them.",
        +      "items": {
        +        "properties": {
        +          "amount": {
        +            "type": "number"
        +          },
        +          "label": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "partnershipExpenses": {
        +      "description": "Partnership expenses",
        +      "type": "number"
        +    },
        +    "realizedGainOnExits": {
        +      "description": "Realized gain on exits. Proceeds less the cost they release.",
        +      "type": "number"
        +    },
        +    "realizedLossOnWriteoffs": {
        +      "description": "Realized loss on writeoffs",
        +      "type": "number"
        +    },
        +    "totalExpenses": {
        +      "description": "Total expenses",
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfund_economics_compute10 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / maxFundLifeYears
        Added value: +{
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / operationalExpenseLines / items / properties / quarterly
        Added value: +{
        +  "items": [
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  ],
        +  "maxItems": 4,
        +  "minItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties / partnershipExpenseLines / items / properties / quarterly
        Added value: +{
        +  "items": [
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  ],
        +  "maxItems": 4,
        +  "minItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / balanceSheet / properties
        Added value: +{
        +  "carriedInterestDistributed": {
        +    "description": "Carried interest distributed",
        +    "type": "number"
        +  },
        +  "cash": {
        +    "description": "Cash",
        +    "type": "number"
        +  },
        +  "checkBalances": {
        +    "description": "Check: assets less liabilities and capital. Zero when the balance sheet balances.",
        +    "type": "number"
        +  },
        +  "contributedCapitalGp": {
        +    "description": "Contributed capital, GP",
        +    "type": "number"
        +  },
        +  "contributedCapitalLp": {
        +    "description": "Contributed capital, LPs",
        +    "type": "number"
        +  },
        +  "cumulativeNetInvestmentIncome": {
        +    "description": "Cumulative net investment income (loss)",
        +    "type": "number"
        +  },
        +  "cumulativeNetRealizedGain": {
        +    "description": "Cumulative net realized gain (loss)",
        +    "type": "number"
        +  },
        +  "cumulativeNetUnrealized": {
        +    "description": "Cumulative net unrealized appreciation (depreciation)",
        +    "type": "number"
        +  },
        +  "distributionsGpCommit": {
        +    "description": "Distributions to the GP commit",
        +    "type": "number"
        +  },
        +  "distributionsLp": {
        +    "description": "Distributions to LPs",
        +    "type": "number"
        +  },
        +  "investmentsAtCost": {
        +    "description": "Investments, at cost. AUM.",
        +    "type": "number"
        +  },
        +  "investmentsAtFairValue": {
        +    "description": "Investments, at fair value. NAV.",
        +    "type": "number"
        +  },
        +  "totalAssets": {
        +    "description": "Total assets",
        +    "type": "number"
        +  },
        +  "totalLiabilities": {
        +    "description": "Total liabilities. Expenses are paid when incurred, so nothing is accrued.",
        +    "type": "number"
        +  },
        +  "totalLiabilitiesAndCapital": {
        +    "description": "Total liabilities and partners' capital",
        +    "type": "number"
        +  },
        +  "totalPartnersCapital": {
        +    "description": "Total partners' capital",
        +    "type": "number"
        +  },
        +  "unfundedCommitments": {
        +    "description": "Memo: unfunded commitments",
        +    "type": "number"
        +  },
        +  "unrealizedAppreciation": {
        +    "description": "Unrealized appreciation (depreciation)",
        +    "type": "number"
        +  }
        +}
      • addedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / cashFlow / properties
        Added value: +{
        +  "carriedInterestPaid": {
        +    "description": "Carried interest paid",
        +    "type": "number"
        +  },
        +  "cashBeginning": {
        +    "description": "Cash, beginning of period",
        +    "type": "number"
        +  },
        +  "cashEnd": {
        +    "description": "Cash, end of period",
        +    "type": "number"
        +  },
        +  "checkTiesToBalanceSheet": {
        +    "description": "Check: cash less balance sheet cash. Zero when the cash flow ties to the balance sheet.",
        +    "type": "number"
        +  },
        +  "contributionsGp": {
        +    "description": "Capital contributions, GP",
        +    "type": "number"
        +  },
        +  "contributionsLp": {
        +    "description": "Capital contributions, LPs",
        +    "type": "number"
        +  },
        +  "distributionsGpCommit": {
        +    "description": "Distributions to the GP commit",
        +    "type": "number"
        +  },
        +  "distributionsLp": {
        +    "description": "Distributions to LPs",
        +    "type": "number"
        +  },
        +  "lessNetChangeInUnrealized": {
        +    "description": "Net change in unrealized (appreciation) depreciation",
        +    "type": "number"
        +  },
        +  "lessNetRealizedGain": {
        +    "description": "Net realized (gain) loss on investments",
        +    "type": "number"
        +  },
        +  "netCashFromFinancing": {
        +    "description": "Net cash from financing activities",
        +    "type": "number"
        +  },
        +  "netCashFromOperating": {
        +    "description": "Net cash from operating activities",
        +    "type": "number"
        +  },
        +  "netChangeInCash": {
        +    "description": "Net change in cash",
        +    "type": "number"
        +  },
        +  "netIncreaseFromOperations": {
        +    "description": "Net increase (decrease) in partners' capital from operations",
        +    "type": "number"
        +  },
        +  "proceedsFromExits": {
        +    "description": "Proceeds from exits",
        +    "type": "number"
        +  },
        +  "purchasesOfInvestments": {
        +    "description": "Purchases of investments. Includes recycled proceeds.",
        +    "type": "number"
        +  }
        +}
      • removedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / incomeStatement
        Removed value: -{
        -  "type": "object"
        -}
      • addedInput schema / definitions / FundDetail / properties / statements / properties / periods / items / properties / operations
        Added value: +{
        +  "properties": {
        +    "managementFees": {
        +      "description": "Management fees",
        +      "type": "number"
        +    },
        +    "netChangeInUnrealized": {
        +      "description": "Net change in unrealized appreciation (depreciation). Change in NAV less change in cost held.",
        +      "type": "number"
        +    },
        +    "netGainOnInvestments": {
        +      "description": "Net gain (loss) on investments",
        +      "type": "number"
        +    },
        +    "netIncreaseFromOperations": {
        +      "description": "Net increase (decrease) in partners' capital from operations",
        +      "type": "number"
        +    },
        +    "netInvestmentIncome": {
        +      "description": "Net investment income (loss). No interest or dividend income is modeled.",
        +      "type": "number"
        +    },
        +    "netRealizedGain": {
        +      "description": "Net realized gain (loss)",
        +      "type": "number"
        +    },
        +    "operationalExpenseLines": {
        +      "description": "The operational expense lines, when the model itemizes them.",
        +      "items": {
        +        "properties": {
        +          "amount": {
        +            "type": "number"
        +          },
        +          "label": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "operationalExpenses": {
        +      "description": "Operational expenses. Run through Q1 of the fund year after the fund life ends.",
        +      "type": "number"
        +    },
        +    "organizationalExpenses": {
        +      "description": "Organizational expenses",
        +      "type": "number"
        +    },
        +    "partnershipExpenseLines": {
        +      "description": "The partnership expense lines, when the model itemizes them.",
        +      "items": {
        +        "properties": {
        +          "amount": {
        +            "type": "number"
        +          },
        +          "label": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "partnershipExpenses": {
        +      "description": "Partnership expenses",
        +      "type": "number"
        +    },
        +    "realizedGainOnExits": {
        +      "description": "Realized gain on exits. Proceeds less the cost they release.",
        +      "type": "number"
        +    },
        +    "realizedLossOnWriteoffs": {
        +      "description": "Realized loss on writeoffs",
        +      "type": "number"
        +    },
        +    "totalExpenses": {
        +      "description": "Total expenses",
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / inputs / properties / maxFundLifeYears
        Added value: +{
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / inputs / properties / operationalExpenseLines / items / properties / quarterly
        Added value: +{
        +  "items": [
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  ],
        +  "maxItems": 4,
        +  "minItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / properties / inputs / properties / partnershipExpenseLines / items / properties / quarterly
        Added value: +{
        +  "items": [
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  ],
        +  "maxItems": 4,
        +  "minItems": 4,
        +  "type": "array"
        +}
  6. 3 tool updates
    • Changedcap_table_compute3 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / format
        Added value: +{
        +  "enum": [
        +    "json",
        +    "xlsx",
        +    "xlsx_url"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / fundName
        Added value: +{
        +  "maxLength": 200,
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundResultResponse / properties / data / properties / workbook
        Added value: +{
        +  "description": "Returned when the request sets format to \"xlsx\" or \"xlsx_url\": the live Excel workbook the web tool exports, with every number a formula back to its Get Started inputs. For \"xlsx\", decode data from base64 and save it as filename. For \"xlsx_url\", download it from url before expiresAt (24 hours).",
        +  "properties": {
        +    "contentType": {
        +      "type": "string"
        +    },
        +    "data": {
        +      "type": "string"
        +    },
        +    "encoding": {
        +      "enum": [
        +        "base64"
        +      ],
        +      "type": "string"
        +    },
        +    "expiresAt": {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "filename": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "format": "uri",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "filename",
        +    "contentType"
        +  ],
        +  "type": "object"
        +}
    • Changedexit_waterfall_compute3 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / format
        Added value: +{
        +  "enum": [
        +    "json",
        +    "xlsx",
        +    "xlsx_url"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / fundName
        Added value: +{
        +  "maxLength": 200,
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundResultResponse / properties / data / properties / workbook
        Added value: +{
        +  "description": "Returned when the request sets format to \"xlsx\" or \"xlsx_url\": the live Excel workbook the web tool exports, with every number a formula back to its Get Started inputs. For \"xlsx\", decode data from base64 and save it as filename. For \"xlsx_url\", download it from url before expiresAt (24 hours).",
        +  "properties": {
        +    "contentType": {
        +      "type": "string"
        +    },
        +    "data": {
        +      "type": "string"
        +    },
        +    "encoding": {
        +      "enum": [
        +        "base64"
        +      ],
        +      "type": "string"
        +    },
        +    "expiresAt": {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "filename": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "format": "uri",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "filename",
        +    "contentType"
        +  ],
        +  "type": "object"
        +}
    • Changedfund_economics_compute5 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / format
        Added value: +{
        +  "enum": [
        +    "json",
        +    "xlsx",
        +    "xlsx_url"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / fundName
        Added value: +{
        +  "maxLength": 200,
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundResultResponse / properties / data / properties / workbook
        Added value: +{
        +  "description": "Returned when the request sets format to \"xlsx\" or \"xlsx_url\": the live Excel workbook the web tool exports, with every number a formula back to its Get Started inputs. For \"xlsx\", decode data from base64 and save it as filename. For \"xlsx_url\", download it from url before expiresAt (24 hours).",
        +  "properties": {
        +    "contentType": {
        +      "type": "string"
        +    },
        +    "data": {
        +      "type": "string"
        +    },
        +    "encoding": {
        +      "enum": [
        +        "base64"
        +      ],
        +      "type": "string"
        +    },
        +    "expiresAt": {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "filename": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "format": "uri",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "filename",
        +    "contentType"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / format
        Added value: +{
        +  "enum": [
        +    "json",
        +    "xlsx",
        +    "xlsx_url"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / fundName
        Added value: +{
        +  "maxLength": 200,
        +  "type": "string"
        +}
  7. 3 tool updates
    • Changedcap_table_compute6 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capTable": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "bridge": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "expectedAgeAtRound": {
        +              "items": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "numInvestmentsTarget": {
        +              "maximum": 10000,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "stageName": {
        +              "maxLength": 200,
        +              "type": "string"
        +            },
        +            "writeoffHoldYears": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "yearsBetweenRounds": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "numInvestmentsTarget"
        +          ],
        +          "type": "object"
        +        },
        +        "inputs": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "defaultExitMultiple": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultGraduationRate": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultValuationIncrease": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultWriteoffRate": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "dilutionFromOptionPoolsPerRound": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "dilutionPerRound": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "exitMultipleOnLastRound": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "followOnRounds": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "dilutionFromRound": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "newOptionPoolInRound": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "pctCompaniesFollowOn": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "valuationIncrease": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 20,
        +              "type": "array"
        +            },
        +            "newInvestmentCheckSize": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "numFollowOnRounds": {
        +              "maximum": 20,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "numRoundsFollowOn": {
        +              "maximum": 20,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "ownershipOutsideInvestment": {
        +              "items": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "pctCompaniesFollowOn": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "postmoneyValuation": {
        +              "exclusiveMinimum": 0,
        +              "type": "number"
        +            },
        +            "roundLabels": {
        +              "items": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "roundOutcomes": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "exitMultiple": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "graduationRate": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "writeoffRate": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "newInvestmentCheckSize",
        +            "postmoneyValuation",
        +            "numFollowOnRounds",
        +            "numRoundsFollowOn",
        +            "defaultValuationIncrease",
        +            "dilutionPerRound",
        +            "dilutionFromOptionPoolsPerRound",
        +            "pctCompaniesFollowOn",
        +            "defaultGraduationRate",
        +            "defaultWriteoffRate",
        +            "defaultExitMultiple"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "inputs",
        +        "bridge"
        +      ],
        +      "type": "object"
        +    },
        +    "fees": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "base": {
        +          "enum": [
        +            "committed",
        +            "nav",
        +            "aum",
        +            "step-down"
        +          ],
        +          "type": "string"
        +        },
        +        "basesByYear": {
        +          "items": {
        +            "enum": [
        +              "committed",
        +              "nav",
        +              "aum",
        +              "step-down"
        +            ],
        +            "type": "string"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        },
        +        "feeYears": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "ratePct": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "stepDownAfterYears": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "yearlyRateSchedule": {
        +          "items": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "base"
        +      ],
        +      "type": "object"
        +    },
        +    "followOn": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "offsetQuarters": {
        +          "maximum": 40,
        +          "minimum": 0,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "offsetQuarters"
        +      ],
        +      "type": "object"
        +    },
        +    "lpClasses": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "commitment": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "feeOverrides": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "basesByYear": {
        +                "items": {
        +                  "enum": [
        +                    "committed",
        +                    "nav",
        +                    "aum",
        +                    "step-down"
        +                  ],
        +                  "type": "string"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "ratePct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "yearlyRateSchedule": {
        +                "items": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "number"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "isFirstLoss": {
        +            "type": "boolean"
        +          },
        +          "isRemainder": {
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "maxLength": 200,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "overrides": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "carryPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "carryTiers": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "carryPct": {
        +                      "maximum": 1,
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "catchup": {
        +                      "type": "boolean"
        +                    },
        +                    "moicThreshold": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    }
        +                  },
        +                  "required": [
        +                    "moicThreshold",
        +                    "carryPct"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "catchupGpShare": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "catchupPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "preferredReturnMode": {
        +                "enum": [
        +                  "none",
        +                  "irr",
        +                  "multiple"
        +                ],
        +                "type": "string"
        +              },
        +              "preferredReturnMultiple": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "preferredReturnRate": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "commitment"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 50,
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "mgmtCo": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "expenses": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "annualCost": {
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "growthRatePerYear": {
        +                "maximum": 10,
        +                "minimum": -1,
        +                "type": "number"
        +              },
        +              "label": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "yearsActive": {
        +                "items": {
        +                  "maximum": 100,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "label",
        +              "annualCost"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        },
        +        "oneTimeFormationCost": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "startingCash": {
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "expenses"
        +      ],
        +      "type": "object"
        +    },
        +    "waterfall": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "carryTiers": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "carryPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "catchup": {
        +                "type": "boolean"
        +              },
        +              "moicThreshold": {
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "moicThreshold",
        +              "carryPct"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 20,
        +          "type": "array"
        +        },
        +        "catchupGpShare": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "catchupPct": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "preferredReturnMode": {
        +          "enum": [
        +            "none",
        +            "irr",
        +            "multiple"
        +          ],
        +          "type": "string"
        +        },
        +        "preferredReturnMultiple": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "preferredReturnRate": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / firstCloseDate
        Added value: +{
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / granularity
        Added value: +{
        +  "enum": [
        +    "year",
        +    "quarter",
        +    "none"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundDetail
        Added value: +{
        +  "description": "The fund over time. Returned unless the request sets granularity to \"none\". Every array in periods has one entry per label. waterfall, lpClasses and mgmtCo appear only when the request sent that feature block.",
        +  "properties": {
        +    "granularity": {
        +      "enum": [
        +        "year",
        +        "quarter"
        +      ],
        +      "type": "string"
        +    },
        +    "irr": {
        +      "description": "IRRs solved from the dated quarterly cash flows, with terminal NAV.",
        +      "properties": {
        +        "grossIRR": {
        +          "type": "number"
        +        },
        +        "netIRR": {
        +          "properties": {
        +            "lp": {
        +              "type": "number"
        +            },
        +            "total": {
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "lpClasses": {
        +      "type": "object"
        +    },
        +    "mgmtCo": {
        +      "type": "object"
        +    },
        +    "periods": {
        +      "properties": {
        +        "calledCapital": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "carriedInterest": {
        +          "description": "GP carry paid each period, catchups included.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "distributions": {
        +          "$ref": "#/definitions/FundSeries",
        +          "description": "Distributions after carry. The LP line runs through the waterfall period by period."
        +        },
        +        "dpi": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "gpCatchup": {
        +          "description": "GP catchup paid each period. Only with a waterfall block.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "investedCapital": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "jCurveLp": {
        +          "description": "Cumulative LP net cash flow at the end of each period.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "labels": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "managementFees": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "nav": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "partnershipExpenses": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "preferredReturn": {
        +          "description": "Preferred return paid to LPs each period. Only with a waterfall block.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "proceeds": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "recycledCapital": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "rvpi": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "tvpi": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "labels"
        +      ],
        +      "type": "object"
        +    },
        +    "statements": {
        +      "properties": {
        +        "currency": {
        +          "type": "string"
        +        },
        +        "periods": {
        +          "items": {
        +            "properties": {
        +              "balanceSheet": {
        +                "type": "object"
        +              },
        +              "cashFlow": {
        +                "type": "object"
        +              },
        +              "incomeStatement": {
        +                "type": "object"
        +              },
        +              "label": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "periodEnd": {
        +                "type": "string"
        +              },
        +              "periodStart": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "waterfall": {
        +      "description": "Lifetime totals of the waterfall as run through the periods: return of capital, preferred return (accrued on the dates capital was called), catchup, carry by tier.",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "granularity",
        +    "irr",
        +    "periods",
        +    "statements"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundResultResponse
        Added value: +{
        +  "properties": {
        +    "data": {
        +      "properties": {
        +        "detail": {
        +          "$ref": "#/definitions/FundDetail"
        +        },
        +        "result": {
        +          "$ref": "#/definitions/FundResult"
        +        }
        +      },
        +      "required": [
        +        "result"
        +      ],
        +      "type": "object"
        +    },
        +    "meta": {
        +      "properties": {
        +        "keyName": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundSeries
        Added value: +{
        +  "properties": {
        +    "gp": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "lp": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "lp",
        +    "gp"
        +  ],
        +  "type": "object"
        +}
    • Changedexit_waterfall_compute6 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capTable": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "bridge": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "expectedAgeAtRound": {
        +              "items": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "numInvestmentsTarget": {
        +              "maximum": 10000,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "stageName": {
        +              "maxLength": 200,
        +              "type": "string"
        +            },
        +            "writeoffHoldYears": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "yearsBetweenRounds": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "numInvestmentsTarget"
        +          ],
        +          "type": "object"
        +        },
        +        "inputs": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "defaultExitMultiple": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultGraduationRate": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultValuationIncrease": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultWriteoffRate": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "dilutionFromOptionPoolsPerRound": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "dilutionPerRound": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "exitMultipleOnLastRound": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "followOnRounds": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "dilutionFromRound": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "newOptionPoolInRound": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "pctCompaniesFollowOn": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "valuationIncrease": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 20,
        +              "type": "array"
        +            },
        +            "newInvestmentCheckSize": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "numFollowOnRounds": {
        +              "maximum": 20,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "numRoundsFollowOn": {
        +              "maximum": 20,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "ownershipOutsideInvestment": {
        +              "items": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "pctCompaniesFollowOn": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "postmoneyValuation": {
        +              "exclusiveMinimum": 0,
        +              "type": "number"
        +            },
        +            "roundLabels": {
        +              "items": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "roundOutcomes": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "exitMultiple": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "graduationRate": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "writeoffRate": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "newInvestmentCheckSize",
        +            "postmoneyValuation",
        +            "numFollowOnRounds",
        +            "numRoundsFollowOn",
        +            "defaultValuationIncrease",
        +            "dilutionPerRound",
        +            "dilutionFromOptionPoolsPerRound",
        +            "pctCompaniesFollowOn",
        +            "defaultGraduationRate",
        +            "defaultWriteoffRate",
        +            "defaultExitMultiple"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "inputs",
        +        "bridge"
        +      ],
        +      "type": "object"
        +    },
        +    "fees": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "base": {
        +          "enum": [
        +            "committed",
        +            "nav",
        +            "aum",
        +            "step-down"
        +          ],
        +          "type": "string"
        +        },
        +        "basesByYear": {
        +          "items": {
        +            "enum": [
        +              "committed",
        +              "nav",
        +              "aum",
        +              "step-down"
        +            ],
        +            "type": "string"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        },
        +        "feeYears": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "ratePct": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "stepDownAfterYears": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "yearlyRateSchedule": {
        +          "items": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "base"
        +      ],
        +      "type": "object"
        +    },
        +    "followOn": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "offsetQuarters": {
        +          "maximum": 40,
        +          "minimum": 0,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "offsetQuarters"
        +      ],
        +      "type": "object"
        +    },
        +    "lpClasses": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "commitment": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "feeOverrides": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "basesByYear": {
        +                "items": {
        +                  "enum": [
        +                    "committed",
        +                    "nav",
        +                    "aum",
        +                    "step-down"
        +                  ],
        +                  "type": "string"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "ratePct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "yearlyRateSchedule": {
        +                "items": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "number"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "isFirstLoss": {
        +            "type": "boolean"
        +          },
        +          "isRemainder": {
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "maxLength": 200,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "overrides": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "carryPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "carryTiers": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "carryPct": {
        +                      "maximum": 1,
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "catchup": {
        +                      "type": "boolean"
        +                    },
        +                    "moicThreshold": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    }
        +                  },
        +                  "required": [
        +                    "moicThreshold",
        +                    "carryPct"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "catchupGpShare": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "catchupPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "preferredReturnMode": {
        +                "enum": [
        +                  "none",
        +                  "irr",
        +                  "multiple"
        +                ],
        +                "type": "string"
        +              },
        +              "preferredReturnMultiple": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "preferredReturnRate": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "commitment"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 50,
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "mgmtCo": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "expenses": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "annualCost": {
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "growthRatePerYear": {
        +                "maximum": 10,
        +                "minimum": -1,
        +                "type": "number"
        +              },
        +              "label": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "yearsActive": {
        +                "items": {
        +                  "maximum": 100,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "label",
        +              "annualCost"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        },
        +        "oneTimeFormationCost": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "startingCash": {
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "expenses"
        +      ],
        +      "type": "object"
        +    },
        +    "waterfall": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "carryTiers": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "carryPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "catchup": {
        +                "type": "boolean"
        +              },
        +              "moicThreshold": {
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "moicThreshold",
        +              "carryPct"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 20,
        +          "type": "array"
        +        },
        +        "catchupGpShare": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "catchupPct": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "preferredReturnMode": {
        +          "enum": [
        +            "none",
        +            "irr",
        +            "multiple"
        +          ],
        +          "type": "string"
        +        },
        +        "preferredReturnMultiple": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "preferredReturnRate": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / firstCloseDate
        Added value: +{
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / granularity
        Added value: +{
        +  "enum": [
        +    "year",
        +    "quarter",
        +    "none"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundDetail
        Added value: +{
        +  "description": "The fund over time. Returned unless the request sets granularity to \"none\". Every array in periods has one entry per label. waterfall, lpClasses and mgmtCo appear only when the request sent that feature block.",
        +  "properties": {
        +    "granularity": {
        +      "enum": [
        +        "year",
        +        "quarter"
        +      ],
        +      "type": "string"
        +    },
        +    "irr": {
        +      "description": "IRRs solved from the dated quarterly cash flows, with terminal NAV.",
        +      "properties": {
        +        "grossIRR": {
        +          "type": "number"
        +        },
        +        "netIRR": {
        +          "properties": {
        +            "lp": {
        +              "type": "number"
        +            },
        +            "total": {
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "lpClasses": {
        +      "type": "object"
        +    },
        +    "mgmtCo": {
        +      "type": "object"
        +    },
        +    "periods": {
        +      "properties": {
        +        "calledCapital": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "carriedInterest": {
        +          "description": "GP carry paid each period, catchups included.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "distributions": {
        +          "$ref": "#/definitions/FundSeries",
        +          "description": "Distributions after carry. The LP line runs through the waterfall period by period."
        +        },
        +        "dpi": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "gpCatchup": {
        +          "description": "GP catchup paid each period. Only with a waterfall block.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "investedCapital": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "jCurveLp": {
        +          "description": "Cumulative LP net cash flow at the end of each period.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "labels": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "managementFees": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "nav": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "partnershipExpenses": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "preferredReturn": {
        +          "description": "Preferred return paid to LPs each period. Only with a waterfall block.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "proceeds": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "recycledCapital": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "rvpi": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "tvpi": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "labels"
        +      ],
        +      "type": "object"
        +    },
        +    "statements": {
        +      "properties": {
        +        "currency": {
        +          "type": "string"
        +        },
        +        "periods": {
        +          "items": {
        +            "properties": {
        +              "balanceSheet": {
        +                "type": "object"
        +              },
        +              "cashFlow": {
        +                "type": "object"
        +              },
        +              "incomeStatement": {
        +                "type": "object"
        +              },
        +              "label": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "periodEnd": {
        +                "type": "string"
        +              },
        +              "periodStart": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "waterfall": {
        +      "description": "Lifetime totals of the waterfall as run through the periods: return of capital, preferred return (accrued on the dates capital was called), catchup, carry by tier.",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "granularity",
        +    "irr",
        +    "periods",
        +    "statements"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundResultResponse
        Added value: +{
        +  "properties": {
        +    "data": {
        +      "properties": {
        +        "detail": {
        +          "$ref": "#/definitions/FundDetail"
        +        },
        +        "result": {
        +          "$ref": "#/definitions/FundResult"
        +        }
        +      },
        +      "required": [
        +        "result"
        +      ],
        +      "type": "object"
        +    },
        +    "meta": {
        +      "properties": {
        +        "keyName": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundSeries
        Added value: +{
        +  "properties": {
        +    "gp": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "lp": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "lp",
        +    "gp"
        +  ],
        +  "type": "object"
        +}
    • Changedfund_economics_compute9 fields changed
      • addedInput schema / definitions / FundComputeRequest / properties / features
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capTable": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "bridge": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "expectedAgeAtRound": {
        +              "items": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "numInvestmentsTarget": {
        +              "maximum": 10000,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "stageName": {
        +              "maxLength": 200,
        +              "type": "string"
        +            },
        +            "writeoffHoldYears": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "yearsBetweenRounds": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "numInvestmentsTarget"
        +          ],
        +          "type": "object"
        +        },
        +        "inputs": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "defaultExitMultiple": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultGraduationRate": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultValuationIncrease": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultWriteoffRate": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "dilutionFromOptionPoolsPerRound": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "dilutionPerRound": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "exitMultipleOnLastRound": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "followOnRounds": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "dilutionFromRound": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "newOptionPoolInRound": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "pctCompaniesFollowOn": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "valuationIncrease": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 20,
        +              "type": "array"
        +            },
        +            "newInvestmentCheckSize": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "numFollowOnRounds": {
        +              "maximum": 20,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "numRoundsFollowOn": {
        +              "maximum": 20,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "ownershipOutsideInvestment": {
        +              "items": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "pctCompaniesFollowOn": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "postmoneyValuation": {
        +              "exclusiveMinimum": 0,
        +              "type": "number"
        +            },
        +            "roundLabels": {
        +              "items": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "roundOutcomes": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "exitMultiple": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "graduationRate": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "writeoffRate": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "newInvestmentCheckSize",
        +            "postmoneyValuation",
        +            "numFollowOnRounds",
        +            "numRoundsFollowOn",
        +            "defaultValuationIncrease",
        +            "dilutionPerRound",
        +            "dilutionFromOptionPoolsPerRound",
        +            "pctCompaniesFollowOn",
        +            "defaultGraduationRate",
        +            "defaultWriteoffRate",
        +            "defaultExitMultiple"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "inputs",
        +        "bridge"
        +      ],
        +      "type": "object"
        +    },
        +    "fees": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "base": {
        +          "enum": [
        +            "committed",
        +            "nav",
        +            "aum",
        +            "step-down"
        +          ],
        +          "type": "string"
        +        },
        +        "basesByYear": {
        +          "items": {
        +            "enum": [
        +              "committed",
        +              "nav",
        +              "aum",
        +              "step-down"
        +            ],
        +            "type": "string"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        },
        +        "feeYears": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "ratePct": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "stepDownAfterYears": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "yearlyRateSchedule": {
        +          "items": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "base"
        +      ],
        +      "type": "object"
        +    },
        +    "followOn": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "offsetQuarters": {
        +          "maximum": 40,
        +          "minimum": 0,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "offsetQuarters"
        +      ],
        +      "type": "object"
        +    },
        +    "lpClasses": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "commitment": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "feeOverrides": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "basesByYear": {
        +                "items": {
        +                  "enum": [
        +                    "committed",
        +                    "nav",
        +                    "aum",
        +                    "step-down"
        +                  ],
        +                  "type": "string"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "ratePct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "yearlyRateSchedule": {
        +                "items": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "number"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "isFirstLoss": {
        +            "type": "boolean"
        +          },
        +          "isRemainder": {
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "maxLength": 200,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "overrides": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "carryPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "carryTiers": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "carryPct": {
        +                      "maximum": 1,
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "catchup": {
        +                      "type": "boolean"
        +                    },
        +                    "moicThreshold": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    }
        +                  },
        +                  "required": [
        +                    "moicThreshold",
        +                    "carryPct"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "catchupGpShare": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "catchupPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "preferredReturnMode": {
        +                "enum": [
        +                  "none",
        +                  "irr",
        +                  "multiple"
        +                ],
        +                "type": "string"
        +              },
        +              "preferredReturnMultiple": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "preferredReturnRate": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "commitment"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 50,
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "mgmtCo": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "expenses": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "annualCost": {
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "growthRatePerYear": {
        +                "maximum": 10,
        +                "minimum": -1,
        +                "type": "number"
        +              },
        +              "label": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "yearsActive": {
        +                "items": {
        +                  "maximum": 100,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "label",
        +              "annualCost"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        },
        +        "oneTimeFormationCost": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "startingCash": {
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "expenses"
        +      ],
        +      "type": "object"
        +    },
        +    "waterfall": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "carryTiers": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "carryPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "catchup": {
        +                "type": "boolean"
        +              },
        +              "moicThreshold": {
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "moicThreshold",
        +              "carryPct"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 20,
        +          "type": "array"
        +        },
        +        "catchupGpShare": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "catchupPct": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "preferredReturnMode": {
        +          "enum": [
        +            "none",
        +            "irr",
        +            "multiple"
        +          ],
        +          "type": "string"
        +        },
        +        "preferredReturnMultiple": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "preferredReturnRate": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / firstCloseDate
        Added value: +{
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / granularity
        Added value: +{
        +  "enum": [
        +    "year",
        +    "quarter",
        +    "none"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / FundDetail
        Added value: +{
        +  "description": "The fund over time. Returned unless the request sets granularity to \"none\". Every array in periods has one entry per label. waterfall, lpClasses and mgmtCo appear only when the request sent that feature block.",
        +  "properties": {
        +    "granularity": {
        +      "enum": [
        +        "year",
        +        "quarter"
        +      ],
        +      "type": "string"
        +    },
        +    "irr": {
        +      "description": "IRRs solved from the dated quarterly cash flows, with terminal NAV.",
        +      "properties": {
        +        "grossIRR": {
        +          "type": "number"
        +        },
        +        "netIRR": {
        +          "properties": {
        +            "lp": {
        +              "type": "number"
        +            },
        +            "total": {
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "lpClasses": {
        +      "type": "object"
        +    },
        +    "mgmtCo": {
        +      "type": "object"
        +    },
        +    "periods": {
        +      "properties": {
        +        "calledCapital": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "carriedInterest": {
        +          "description": "GP carry paid each period, catchups included.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "distributions": {
        +          "$ref": "#/definitions/FundSeries",
        +          "description": "Distributions after carry. The LP line runs through the waterfall period by period."
        +        },
        +        "dpi": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "gpCatchup": {
        +          "description": "GP catchup paid each period. Only with a waterfall block.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "investedCapital": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "jCurveLp": {
        +          "description": "Cumulative LP net cash flow at the end of each period.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "labels": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "managementFees": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "nav": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "partnershipExpenses": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "preferredReturn": {
        +          "description": "Preferred return paid to LPs each period. Only with a waterfall block.",
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "proceeds": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "recycledCapital": {
        +          "$ref": "#/definitions/FundSeries"
        +        },
        +        "rvpi": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "tvpi": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "labels"
        +      ],
        +      "type": "object"
        +    },
        +    "statements": {
        +      "properties": {
        +        "currency": {
        +          "type": "string"
        +        },
        +        "periods": {
        +          "items": {
        +            "properties": {
        +              "balanceSheet": {
        +                "type": "object"
        +              },
        +              "cashFlow": {
        +                "type": "object"
        +              },
        +              "incomeStatement": {
        +                "type": "object"
        +              },
        +              "label": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "periodEnd": {
        +                "type": "string"
        +              },
        +              "periodStart": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "waterfall": {
        +      "description": "Lifetime totals of the waterfall as run through the periods: return of capital, preferred return (accrued on the dates capital was called), catchup, carry by tier.",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "granularity",
        +    "irr",
        +    "periods",
        +    "statements"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundResultResponse
        Added value: +{
        +  "properties": {
        +    "data": {
        +      "properties": {
        +        "detail": {
        +          "$ref": "#/definitions/FundDetail"
        +        },
        +        "result": {
        +          "$ref": "#/definitions/FundResult"
        +        }
        +      },
        +      "required": [
        +        "result"
        +      ],
        +      "type": "object"
        +    },
        +    "meta": {
        +      "properties": {
        +        "keyName": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / definitions / FundSeries
        Added value: +{
        +  "properties": {
        +    "gp": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "lp": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "lp",
        +    "gp"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / features
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capTable": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "bridge": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "expectedAgeAtRound": {
        +              "items": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "numInvestmentsTarget": {
        +              "maximum": 10000,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "stageName": {
        +              "maxLength": 200,
        +              "type": "string"
        +            },
        +            "writeoffHoldYears": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "yearsBetweenRounds": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "numInvestmentsTarget"
        +          ],
        +          "type": "object"
        +        },
        +        "inputs": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "defaultExitMultiple": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultGraduationRate": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultValuationIncrease": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "defaultWriteoffRate": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "dilutionFromOptionPoolsPerRound": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "dilutionPerRound": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "exitMultipleOnLastRound": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "followOnRounds": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "dilutionFromRound": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "newOptionPoolInRound": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "pctCompaniesFollowOn": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "valuationIncrease": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 20,
        +              "type": "array"
        +            },
        +            "newInvestmentCheckSize": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "numFollowOnRounds": {
        +              "maximum": 20,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "numRoundsFollowOn": {
        +              "maximum": 20,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "ownershipOutsideInvestment": {
        +              "items": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "pctCompaniesFollowOn": {
        +              "maximum": 100,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "postmoneyValuation": {
        +              "exclusiveMinimum": 0,
        +              "type": "number"
        +            },
        +            "roundLabels": {
        +              "items": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            },
        +            "roundOutcomes": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "exitMultiple": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "graduationRate": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "writeoffRate": {
        +                    "maximum": 100,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 21,
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "newInvestmentCheckSize",
        +            "postmoneyValuation",
        +            "numFollowOnRounds",
        +            "numRoundsFollowOn",
        +            "defaultValuationIncrease",
        +            "dilutionPerRound",
        +            "dilutionFromOptionPoolsPerRound",
        +            "pctCompaniesFollowOn",
        +            "defaultGraduationRate",
        +            "defaultWriteoffRate",
        +            "defaultExitMultiple"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "inputs",
        +        "bridge"
        +      ],
        +      "type": "object"
        +    },
        +    "fees": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "base": {
        +          "enum": [
        +            "committed",
        +            "nav",
        +            "aum",
        +            "step-down"
        +          ],
        +          "type": "string"
        +        },
        +        "basesByYear": {
        +          "items": {
        +            "enum": [
        +              "committed",
        +              "nav",
        +              "aum",
        +              "step-down"
        +            ],
        +            "type": "string"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        },
        +        "feeYears": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "ratePct": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "stepDownAfterYears": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "yearlyRateSchedule": {
        +          "items": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "base"
        +      ],
        +      "type": "object"
        +    },
        +    "followOn": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "offsetQuarters": {
        +          "maximum": 40,
        +          "minimum": 0,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "offsetQuarters"
        +      ],
        +      "type": "object"
        +    },
        +    "lpClasses": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "commitment": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "feeOverrides": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "basesByYear": {
        +                "items": {
        +                  "enum": [
        +                    "committed",
        +                    "nav",
        +                    "aum",
        +                    "step-down"
        +                  ],
        +                  "type": "string"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              },
        +              "ratePct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "yearlyRateSchedule": {
        +                "items": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "number"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "isFirstLoss": {
        +            "type": "boolean"
        +          },
        +          "isRemainder": {
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "maxLength": 200,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "overrides": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "carryPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "carryTiers": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "carryPct": {
        +                      "maximum": 1,
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "catchup": {
        +                      "type": "boolean"
        +                    },
        +                    "moicThreshold": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    }
        +                  },
        +                  "required": [
        +                    "moicThreshold",
        +                    "carryPct"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 20,
        +                "type": "array"
        +              },
        +              "catchupGpShare": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "catchupPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "preferredReturnMode": {
        +                "enum": [
        +                  "none",
        +                  "irr",
        +                  "multiple"
        +                ],
        +                "type": "string"
        +              },
        +              "preferredReturnMultiple": {
        +                "maximum": 100,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "preferredReturnRate": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "commitment"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 50,
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "mgmtCo": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "expenses": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "annualCost": {
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "growthRatePerYear": {
        +                "maximum": 10,
        +                "minimum": -1,
        +                "type": "number"
        +              },
        +              "label": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "yearsActive": {
        +                "items": {
        +                  "maximum": 100,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "maxItems": 100,
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "label",
        +              "annualCost"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 100,
        +          "type": "array"
        +        },
        +        "oneTimeFormationCost": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "startingCash": {
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "expenses"
        +      ],
        +      "type": "object"
        +    },
        +    "waterfall": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "carryTiers": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "carryPct": {
        +                "maximum": 1,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "catchup": {
        +                "type": "boolean"
        +              },
        +              "moicThreshold": {
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "moicThreshold",
        +              "carryPct"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 20,
        +          "type": "array"
        +        },
        +        "catchupGpShare": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "catchupPct": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "preferredReturnMode": {
        +          "enum": [
        +            "none",
        +            "irr",
        +            "multiple"
        +          ],
        +          "type": "string"
        +        },
        +        "preferredReturnMultiple": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "preferredReturnRate": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / firstCloseDate
        Added value: +{
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / granularity
        Added value: +{
        +  "enum": [
        +    "year",
        +    "quarter",
        +    "none"
        +  ],
        +  "type": "string"
        +}
  8. 3 tool updates
    • Changedcap_table_compute1 field changed
      • addedInput schema / definitions / ProductAccess / properties / remaining / description
        Added value: +"Calculations this account can run now: the paid balance while a paid period is active, otherwise the lifetime free balance."
    • Changedexit_waterfall_compute1 field changed
      • addedInput schema / definitions / ProductAccess / properties / remaining / description
        Added value: +"Calculations this account can run now: the paid balance while a paid period is active, otherwise the lifetime free balance."
    • Changedfund_economics_compute1 field changed
      • addedInput schema / definitions / ProductAccess / properties / remaining / description
        Added value: +"Calculations this account can run now: the paid balance while a paid period is active, otherwise the lifetime free balance."
  9. 3 tool updates
    • Changedcap_table_compute7 fields changed
      • addedInput schema / definitions / ProductAccess / properties / active / description
        Added value: +"Active paid term; use state/freeRemaining for trial access."
      • addedInput schema / definitions / ProductAccess / properties / freeRemaining
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / definitions / ProductAccess / properties / nextAction
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / definitions / ProductAccess / properties / paidExpiration
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / definitions / ProductAccess / properties / paidRemaining
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / definitions / ProductAccess / properties / source
        Added value: +{
        +  "enum": [
        +    "free",
        +    "paid"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / ProductAccess / properties / state
        Added value: +{
        +  "enum": [
        +    "free_available",
        +    "free_exhausted",
        +    "paid_active",
        +    "paid_expired",
        +    "paid_quota_exhausted"
        +  ],
        +  "type": "string"
        +}
    • Changedexit_waterfall_compute7 fields changed
      • addedInput schema / definitions / ProductAccess / properties / active / description
        Added value: +"Active paid term; use state/freeRemaining for trial access."
      • addedInput schema / definitions / ProductAccess / properties / freeRemaining
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / definitions / ProductAccess / properties / nextAction
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / definitions / ProductAccess / properties / paidExpiration
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / definitions / ProductAccess / properties / paidRemaining
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / definitions / ProductAccess / properties / source
        Added value: +{
        +  "enum": [
        +    "free",
        +    "paid"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / ProductAccess / properties / state
        Added value: +{
        +  "enum": [
        +    "free_available",
        +    "free_exhausted",
        +    "paid_active",
        +    "paid_expired",
        +    "paid_quota_exhausted"
        +  ],
        +  "type": "string"
        +}
    • Changedfund_economics_compute7 fields changed
      • addedInput schema / definitions / ProductAccess / properties / active / description
        Added value: +"Active paid term; use state/freeRemaining for trial access."
      • addedInput schema / definitions / ProductAccess / properties / freeRemaining
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / definitions / ProductAccess / properties / nextAction
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / definitions / ProductAccess / properties / paidExpiration
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / definitions / ProductAccess / properties / paidRemaining
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / definitions / ProductAccess / properties / source
        Added value: +{
        +  "enum": [
        +    "free",
        +    "paid"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / definitions / ProductAccess / properties / state
        Added value: +{
        +  "enum": [
        +    "free_available",
        +    "free_exhausted",
        +    "paid_active",
        +    "paid_expired",
        +    "paid_quota_exhausted"
        +  ],
        +  "type": "string"
        +}
  10. 3 tool updates
    • Changedcap_table_compute50 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / definitions / AccessResponse
        Added value: +{
        +  "properties": {
        +    "data": {
        +      "properties": {
        +        "daily": {
        +          "items": {
        +            "$ref": "#/definitions/DailyUsage"
        +          },
        +          "type": "array"
        +        },
        +        "monthly": {
        +          "items": {
        +            "$ref": "#/definitions/MonthlyUsage"
        +          },
        +          "type": "array"
        +        },
        +        "periods": {
        +          "items": {
        +            "allOf": [
        +              {
        +                "$ref": "#/definitions/UsagePeriod"
        +              },
        +              {
        +                "properties": {
        +                  "product": {
        +                    "enum": [
        +                      "cap-table",
        +                      "fund-economics"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "product"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          },
        +          "type": "array"
        +        },
        +        "products": {
        +          "items": {
        +            "$ref": "#/definitions/ProductAccess"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "products",
        +        "daily"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedInput schema / definitions / ApiKey
        Removed value: -{
        -  "properties": {
        -    "created_at": {
        -      "type": "string"
        -    },
        -    "id": {
        -      "type": "string"
        -    },
        -    "key_prefix": {
        -      "description": "First chars of the token, for display.",
        -      "type": "string"
        -    },
        -    "last_used_at": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    },
        -    "name": {
        -      "type": "string"
        -    },
        -    "revoked_at": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / definitions / CapTableEvent
        Removed value: -{
        -  "description": "One cap-table event, discriminated by `type`. Pass events in chronological order.",
        -  "discriminator": {
        -    "mapping": {
        -      "common_issuance": "#/components/schemas/CommonIssuanceEvent",
        -      "convertible_round": "#/components/schemas/ConvertibleRoundEvent",
        -      "manual_issuance": "#/components/schemas/ManualIssuanceEvent",
        -      "option_grant": "#/components/schemas/OptionGrantEvent",
        -      "option_pool": "#/components/schemas/OptionPoolEvent",
        -      "priced_round": "#/components/schemas/PricedRoundEvent",
        -      "secondary_sale": "#/components/schemas/SecondarySaleEvent",
        -      "warrant_round": "#/components/schemas/WarrantRoundEvent"
        -    },
        -    "propertyName": "type"
        -  },
        -  "oneOf": [
        -    {
        -      "$ref": "#/definitions/CommonIssuanceEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/OptionPoolEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/SecondarySaleEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/OptionGrantEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/ManualIssuanceEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/ConvertibleRoundEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/WarrantRoundEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/PricedRoundEvent"
        -    }
        -  ]
        -}
      • addedInput schema / definitions / CapTableSnapshot
        Added value: +{
        +  "properties": {
        +    "holdings": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "label": {
        +      "type": "string"
        +    },
        +    "outstandingConvertibles": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "ownership": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "pricePerShare": {
        +      "type": "number"
        +    },
        +    "roundDetail": {
        +      "type": "object"
        +    },
        +    "totalShares": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "label",
        +    "holdings",
        +    "totalShares",
        +    "ownership",
        +    "outstandingConvertibles"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / ComputeRequest / additionalProperties
        Added value: +false
      • removedInput schema / definitions / ComputeRequest / properties / events / description
        Removed value: -"Ordered list of cap-table events to fold."
      • removedInput schema / definitions / ComputeRequest / properties / events / items / $ref
        Removed value: -"#/definitions/CapTableEvent"
      • addedInput schema / definitions / ComputeRequest / properties / events / items / description
        Added value: +"One cap-table event, discriminated by `type`. Pass events in chronological order."
      • addedInput schema / definitions / ComputeRequest / properties / events / items / discriminator
        Added value: +{
        +  "mapping": {
        +    "common_issuance": "#/components/schemas/CommonIssuanceEvent",
        +    "convertible_round": "#/components/schemas/ConvertibleRoundEvent",
        +    "manual_issuance": "#/components/schemas/ManualIssuanceEvent",
        +    "option_grant": "#/components/schemas/OptionGrantEvent",
        +    "option_pool": "#/components/schemas/OptionPoolEvent",
        +    "priced_round": "#/components/schemas/PricedRoundEvent",
        +    "secondary_sale": "#/components/schemas/SecondarySaleEvent",
        +    "warrant_round": "#/components/schemas/WarrantRoundEvent"
        +  },
        +  "propertyName": "type"
        +}
      • addedInput schema / definitions / ComputeRequest / properties / events / items / oneOf
        Added value: +[
        +  {
        +    "$ref": "#/definitions/CommonIssuanceEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/OptionPoolEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/SecondarySaleEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/OptionGrantEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/ManualIssuanceEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/ConvertibleRoundEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/WarrantRoundEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/PricedRoundEvent"
        +  }
        +]
      • addedInput schema / definitions / ComputeRequest / properties / events / maxItems
        Added value: +200
      • addedInput schema / definitions / ComputeResponse / properties / data / properties / final / $ref
        Added value: +"#/definitions/CapTableSnapshot"
      • removedInput schema / definitions / ComputeResponse / properties / data / properties / final / description
        Removed value: -"The final cap-table state."
      • removedInput schema / definitions / ComputeResponse / properties / data / properties / final / type
        Removed value: -"object"
      • addedInput schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / $ref
        Added value: +"#/definitions/CapTableSnapshot"
      • removedInput schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / type
        Removed value: -"object"
      • removedInput schema / definitions / CreateKeyRequest
        Removed value: -{
        -  "properties": {
        -    "name": {
        -      "description": "Label for the key, written into the audit trail.",
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedInput schema / definitions / DailyUsage
        Added value: +{
        +  "properties": {
        +    "day": {
        +      "format": "date",
        +      "type": "string"
        +    },
        +    "endpoint": {
        +      "type": "string"
        +    },
        +    "failed": {
        +      "type": "integer"
        +    },
        +    "product": {
        +      "enum": [
        +        "cap-table",
        +        "fund-economics"
        +      ],
        +      "type": "string"
        +    },
        +    "source": {
        +      "type": "string"
        +    },
        +    "succeeded": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "day",
        +    "product",
        +    "endpoint",
        +    "source",
        +    "succeeded",
        +    "failed"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / definitions / Error / properties / error / properties / code / enum
        Previous value: -[
        -  "unauthorized",
        -  "payment_required",
        -  "validation_failed",
        -  "engine_error",
        -  "method_not_allowed",
        -  "internal_error"
        -]New value: +[
        +  "unauthorized",
        +  "payment_required",
        +  "validation_failed",
        +  "engine_error",
        +  "quota_exhausted",
        +  "rate_limited",
        +  "idempotency_conflict",
        +  "service_unavailable",
        +  "method_not_allowed",
        +  "internal_error"
        +]
      • addedInput schema / definitions / FundComputeRequest / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / definitions / FundComputeRequest / additionalProperties
        Added value: +false
      • changedInput schema / definitions / FundComputeRequest / properties / inputs / additionalProperties
        Previous value: -trueNew value: +false
      • removedInput schema / definitions / FundComputeRequest / properties / inputs / description
        Removed value: -"Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers."
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties
        Added value: +{
        +  "carryPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "committedCapital": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "fundOperationsYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "gpCommitCountedTowardInvested": {
        +    "type": "boolean"
        +  },
        +  "gpCommitPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "mgmtFeePct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "mgmtFeeSchedule": {
        +    "items": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "type": "array"
        +  },
        +  "mgmtFeesPeriodYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "newInvestmentPeriodYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "operationalExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "operationalExpensesAnnual": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "operationalExpensesBreakout": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "audit": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "fundAdmin": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "other": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "tax": {
        +        "minimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "fundAdmin",
        +      "tax",
        +      "audit",
        +      "other"
        +    ],
        +    "type": "object"
        +  },
        +  "organizationalExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "organizationalExpenses": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "partnershipExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "partnershipExpensesAnnual": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "portfolio": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "avgCheckSizeFollow": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "avgCheckSizeNew": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "entryStages": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "avgCheckSize": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "followOnChecks": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "avgCheckSize": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "label": {
        +                    "type": "string"
        +                  },
        +                  "pctOfReserve": {
        +                    "maximum": 1,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "required": [
        +                  "avgCheckSize"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "initialCheckLabel": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "numInvestments": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "pctAllocation": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "reserveRatio": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "numInvestments",
        +            "avgCheckSize"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "followPct": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "newPct": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "newPct",
        +      "followPct",
        +      "avgCheckSizeNew",
        +      "avgCheckSizeFollow"
        +    ],
        +    "type": "object"
        +  },
        +  "recycledCapitalPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "returnTiers": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "holdingPeriodYears": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "multiple": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "numCompanies": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "pctOfCapital": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "pctOfCapital",
        +        "multiple",
        +        "holdingPeriodYears"
        +      ],
        +      "type": "object"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  "solveCalledFromDeployment": {
        +    "type": "boolean"
        +  },
        +  "stageInputMode": {
        +    "enum": [
        +      "pct-capital",
        +      "num-companies"
        +    ],
        +    "type": "string"
        +  },
        +  "targetTotalInvestments": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "tierFractional": {
        +    "type": "boolean"
        +  },
        +  "tierInputMode": {
        +    "enum": [
        +      "pct-capital",
        +      "num-companies"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / required
        Added value: +[
        +  "committedCapital",
        +  "gpCommitPct",
        +  "gpCommitCountedTowardInvested",
        +  "organizationalExpenses",
        +  "operationalExpensesAnnual",
        +  "mgmtFeePct",
        +  "recycledCapitalPct",
        +  "carryPct",
        +  "newInvestmentPeriodYears",
        +  "mgmtFeesPeriodYears",
        +  "portfolio",
        +  "returnTiers"
        +]
      • addedInput schema / definitions / FundResult
        Added value: +{
        +  "properties": {
        +    "calledCapital": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "committedCapital": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "distributions": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "dpi": {
        +      "type": "number"
        +    },
        +    "grossIRR": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "grossMultiple": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "investedCapital": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "managementFees": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "netIRR": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "netMultiple": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "partnershipExpenses": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "pic": {
        +      "type": "number"
        +    },
        +    "proceeds": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "rvpi": {
        +      "type": "number"
        +    },
        +    "tiers": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "tvpi": {
        +      "type": "number"
        +    },
        +    "weightedHoldPeriodYears": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "committedCapital",
        +    "calledCapital",
        +    "managementFees",
        +    "partnershipExpenses",
        +    "investedCapital",
        +    "proceeds",
        +    "distributions",
        +    "grossMultiple",
        +    "netMultiple",
        +    "grossIRR",
        +    "netIRR",
        +    "pic",
        +    "dpi",
        +    "rvpi",
        +    "tvpi",
        +    "weightedHoldPeriodYears"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / LineTotals
        Added value: +{
        +  "properties": {
        +    "gp": {
        +      "type": "number"
        +    },
        +    "lp": {
        +      "type": "number"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "lp",
        +    "gp"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / MonthlyUsage
        Added value: +{
        +  "properties": {
        +    "failed": {
        +      "type": "integer"
        +    },
        +    "month": {
        +      "pattern": "^[0-9]{4}-[0-9]{2}$",
        +      "type": "string"
        +    },
        +    "product": {
        +      "enum": [
        +        "cap-table",
        +        "fund-economics"
        +      ],
        +      "type": "string"
        +    },
        +    "succeeded": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "month",
        +    "product",
        +    "succeeded",
        +    "failed"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / ProductAccess
        Added value: +{
        +  "properties": {
        +    "active": {
        +      "type": "boolean"
        +    },
        +    "allowance": {
        +      "const": 6000,
        +      "type": "integer"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "period": {
        +      "anyOf": [
        +        {
        +          "type": "null"
        +        },
        +        {
        +          "$ref": "#/definitions/UsagePeriod"
        +        }
        +      ]
        +    },
        +    "priceUsd": {
        +      "const": 20,
        +      "type": "number"
        +    },
        +    "product": {
        +      "enum": [
        +        "cap-table",
        +        "fund-economics"
        +      ],
        +      "type": "string"
        +    },
        +    "remaining": {
        +      "minimum": 0,
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "product",
        +    "name",
        +    "priceUsd",
        +    "allowance",
        +    "period",
        +    "remaining",
        +    "active"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / ResultResponse / properties / data / properties / result / oneOf
        Added value: +[
        +  {
        +    "$ref": "#/definitions/WaterfallResult"
        +  },
        +  {
        +    "$ref": "#/definitions/FundResult"
        +  }
        +]
      • removedInput schema / definitions / ResultResponse / properties / data / properties / result / type
        Removed value: -"object"
      • addedInput schema / definitions / UsagePeriod
        Added value: +{
        +  "properties": {
        +    "allowance": {
        +      "type": "integer"
        +    },
        +    "consumed": {
        +      "type": "integer"
        +    },
        +    "enabled": {
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "period_end": {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "period_start": {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "reserved": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "period_start",
        +    "period_end",
        +    "allowance",
        +    "consumed",
        +    "reserved",
        +    "enabled"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / WaterfallComputeRequest / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / definitions / WaterfallComputeRequest / additionalProperties
        Added value: +false
      • removedInput schema / definitions / WaterfallComputeRequest / properties / exitValuation / description
        Removed value: -"Total exit proceeds to distribute."
      • addedInput schema / definitions / WaterfallComputeRequest / properties / exitValuation / maximum
        Added value: +1000000000000000
      • addedInput schema / definitions / WaterfallComputeRequest / properties / exitValuation / minimum
        Added value: +0
      • changedInput schema / definitions / WaterfallComputeRequest / properties / model / additionalProperties
        Previous value: -trueNew value: +false
      • removedInput schema / definitions / WaterfallComputeRequest / properties / model / description
        Removed value: -"Exit-waterfall model: preferred series, common holders, options, warrants, convertibles."
      • addedInput schema / definitions / WaterfallComputeRequest / properties / model / properties
        Added value: +{
        +  "common": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "invested": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  },
        +  "convertibles": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "accruedInterest": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "cap": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "cashOutAs": {
        +          "enum": [
        +            "debt",
        +            "equity"
        +          ],
        +          "type": "string"
        +        },
        +        "cashOutSeniority": {
        +          "enum": [
        +            "senior",
        +            "pari-passu"
        +          ],
        +          "type": "string"
        +        },
        +        "discount": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "kind": {
        +          "enum": [
        +            "pre-safe",
        +            "post-safe",
        +            "note"
        +          ],
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "premiumMultiple": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "principal": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "seniority": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "kind",
        +        "principal"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 100,
        +    "type": "array"
        +  },
        +  "debt": {
        +    "maximum": 1000000000000000,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "options": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "strike": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "vestedFraction": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares",
        +        "strike"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  },
        +  "preferred": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "conversionRatio": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "dividendCumulative": {
        +          "type": "boolean"
        +        },
        +        "dividendRate": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "dividendStart": {
        +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +          "type": "string"
        +        },
        +        "holders": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "id": {
        +                "maxLength": 200,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "invested": {
        +                "maximum": 1000000000000000,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "name": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "shares": {
        +                "maximum": 1000000000000000,
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "shares",
        +              "invested"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 500,
        +          "type": "array"
        +        },
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "investmentDate": {
        +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +          "type": "string"
        +        },
        +        "multiple": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "participation": {
        +          "enum": [
        +            "none",
        +            "full",
        +            "capped"
        +          ],
        +          "type": "string"
        +        },
        +        "participationCap": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "seniority": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "holders",
        +        "seniority"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 20,
        +    "type": "array"
        +  },
        +  "transactionExpenses": {
        +    "maximum": 1000000000000000,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "unissuedPool": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "shares": {
        +        "maximum": 1000000000000000,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "treatment": {
        +        "const": "cancel",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "shares"
        +    ],
        +    "type": "object"
        +  },
        +  "warrants": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "strike": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares",
        +        "strike"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  }
        +}
      • addedInput schema / definitions / WaterfallComputeRequest / properties / model / required
        Added value: +[
        +  "common",
        +  "preferred"
        +]
      • changedInput schema / definitions / WaterfallComputeRequest / required
        Previous value: -[
        -  "model",
        -  "exitValuation"
        -]New value: +[
        +  "exitValuation",
        +  "model"
        +]
      • addedInput schema / definitions / WaterfallResult
        Added value: +{
        +  "properties": {
        +    "classes": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "converged": {
        +      "type": "boolean"
        +    },
        +    "convertibles": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "distributable": {
        +      "type": "number"
        +    },
        +    "exitValuation": {
        +      "type": "number"
        +    },
        +    "holders": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "iterations": {
        +      "type": "integer"
        +    },
        +    "perShare": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "exitValuation",
        +    "distributable",
        +    "classes",
        +    "series",
        +    "convertibles",
        +    "holders",
        +    "perShare",
        +    "iterations",
        +    "converged"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / events / description
        Removed value: -"Ordered list of cap-table events to fold."
      • removedInput schema / properties / events / items / $ref
        Removed value: -"#/definitions/CapTableEvent"
      • addedInput schema / properties / events / items / description
        Added value: +"One cap-table event, discriminated by `type`. Pass events in chronological order."
      • addedInput schema / properties / events / items / discriminator
        Added value: +{
        +  "mapping": {
        +    "common_issuance": "#/components/schemas/CommonIssuanceEvent",
        +    "convertible_round": "#/components/schemas/ConvertibleRoundEvent",
        +    "manual_issuance": "#/components/schemas/ManualIssuanceEvent",
        +    "option_grant": "#/components/schemas/OptionGrantEvent",
        +    "option_pool": "#/components/schemas/OptionPoolEvent",
        +    "priced_round": "#/components/schemas/PricedRoundEvent",
        +    "secondary_sale": "#/components/schemas/SecondarySaleEvent",
        +    "warrant_round": "#/components/schemas/WarrantRoundEvent"
        +  },
        +  "propertyName": "type"
        +}
      • addedInput schema / properties / events / items / oneOf
        Added value: +[
        +  {
        +    "$ref": "#/definitions/CommonIssuanceEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/OptionPoolEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/SecondarySaleEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/OptionGrantEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/ManualIssuanceEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/ConvertibleRoundEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/WarrantRoundEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/PricedRoundEvent"
        +  }
        +]
      • addedInput schema / properties / events / maxItems
        Added value: +200
    • Changedexit_waterfall_compute53 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / definitions / AccessResponse
        Added value: +{
        +  "properties": {
        +    "data": {
        +      "properties": {
        +        "daily": {
        +          "items": {
        +            "$ref": "#/definitions/DailyUsage"
        +          },
        +          "type": "array"
        +        },
        +        "monthly": {
        +          "items": {
        +            "$ref": "#/definitions/MonthlyUsage"
        +          },
        +          "type": "array"
        +        },
        +        "periods": {
        +          "items": {
        +            "allOf": [
        +              {
        +                "$ref": "#/definitions/UsagePeriod"
        +              },
        +              {
        +                "properties": {
        +                  "product": {
        +                    "enum": [
        +                      "cap-table",
        +                      "fund-economics"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "product"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          },
        +          "type": "array"
        +        },
        +        "products": {
        +          "items": {
        +            "$ref": "#/definitions/ProductAccess"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "products",
        +        "daily"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedInput schema / definitions / ApiKey
        Removed value: -{
        -  "properties": {
        -    "created_at": {
        -      "type": "string"
        -    },
        -    "id": {
        -      "type": "string"
        -    },
        -    "key_prefix": {
        -      "description": "First chars of the token, for display.",
        -      "type": "string"
        -    },
        -    "last_used_at": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    },
        -    "name": {
        -      "type": "string"
        -    },
        -    "revoked_at": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / definitions / CapTableEvent
        Removed value: -{
        -  "description": "One cap-table event, discriminated by `type`. Pass events in chronological order.",
        -  "discriminator": {
        -    "mapping": {
        -      "common_issuance": "#/components/schemas/CommonIssuanceEvent",
        -      "convertible_round": "#/components/schemas/ConvertibleRoundEvent",
        -      "manual_issuance": "#/components/schemas/ManualIssuanceEvent",
        -      "option_grant": "#/components/schemas/OptionGrantEvent",
        -      "option_pool": "#/components/schemas/OptionPoolEvent",
        -      "priced_round": "#/components/schemas/PricedRoundEvent",
        -      "secondary_sale": "#/components/schemas/SecondarySaleEvent",
        -      "warrant_round": "#/components/schemas/WarrantRoundEvent"
        -    },
        -    "propertyName": "type"
        -  },
        -  "oneOf": [
        -    {
        -      "$ref": "#/definitions/CommonIssuanceEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/OptionPoolEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/SecondarySaleEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/OptionGrantEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/ManualIssuanceEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/ConvertibleRoundEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/WarrantRoundEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/PricedRoundEvent"
        -    }
        -  ]
        -}
      • addedInput schema / definitions / CapTableSnapshot
        Added value: +{
        +  "properties": {
        +    "holdings": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "label": {
        +      "type": "string"
        +    },
        +    "outstandingConvertibles": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "ownership": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "pricePerShare": {
        +      "type": "number"
        +    },
        +    "roundDetail": {
        +      "type": "object"
        +    },
        +    "totalShares": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "label",
        +    "holdings",
        +    "totalShares",
        +    "ownership",
        +    "outstandingConvertibles"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / ComputeRequest / additionalProperties
        Added value: +false
      • removedInput schema / definitions / ComputeRequest / properties / events / description
        Removed value: -"Ordered list of cap-table events to fold."
      • removedInput schema / definitions / ComputeRequest / properties / events / items / $ref
        Removed value: -"#/definitions/CapTableEvent"
      • addedInput schema / definitions / ComputeRequest / properties / events / items / description
        Added value: +"One cap-table event, discriminated by `type`. Pass events in chronological order."
      • addedInput schema / definitions / ComputeRequest / properties / events / items / discriminator
        Added value: +{
        +  "mapping": {
        +    "common_issuance": "#/components/schemas/CommonIssuanceEvent",
        +    "convertible_round": "#/components/schemas/ConvertibleRoundEvent",
        +    "manual_issuance": "#/components/schemas/ManualIssuanceEvent",
        +    "option_grant": "#/components/schemas/OptionGrantEvent",
        +    "option_pool": "#/components/schemas/OptionPoolEvent",
        +    "priced_round": "#/components/schemas/PricedRoundEvent",
        +    "secondary_sale": "#/components/schemas/SecondarySaleEvent",
        +    "warrant_round": "#/components/schemas/WarrantRoundEvent"
        +  },
        +  "propertyName": "type"
        +}
      • addedInput schema / definitions / ComputeRequest / properties / events / items / oneOf
        Added value: +[
        +  {
        +    "$ref": "#/definitions/CommonIssuanceEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/OptionPoolEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/SecondarySaleEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/OptionGrantEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/ManualIssuanceEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/ConvertibleRoundEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/WarrantRoundEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/PricedRoundEvent"
        +  }
        +]
      • addedInput schema / definitions / ComputeRequest / properties / events / maxItems
        Added value: +200
      • addedInput schema / definitions / ComputeResponse / properties / data / properties / final / $ref
        Added value: +"#/definitions/CapTableSnapshot"
      • removedInput schema / definitions / ComputeResponse / properties / data / properties / final / description
        Removed value: -"The final cap-table state."
      • removedInput schema / definitions / ComputeResponse / properties / data / properties / final / type
        Removed value: -"object"
      • addedInput schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / $ref
        Added value: +"#/definitions/CapTableSnapshot"
      • removedInput schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / type
        Removed value: -"object"
      • removedInput schema / definitions / CreateKeyRequest
        Removed value: -{
        -  "properties": {
        -    "name": {
        -      "description": "Label for the key, written into the audit trail.",
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedInput schema / definitions / DailyUsage
        Added value: +{
        +  "properties": {
        +    "day": {
        +      "format": "date",
        +      "type": "string"
        +    },
        +    "endpoint": {
        +      "type": "string"
        +    },
        +    "failed": {
        +      "type": "integer"
        +    },
        +    "product": {
        +      "enum": [
        +        "cap-table",
        +        "fund-economics"
        +      ],
        +      "type": "string"
        +    },
        +    "source": {
        +      "type": "string"
        +    },
        +    "succeeded": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "day",
        +    "product",
        +    "endpoint",
        +    "source",
        +    "succeeded",
        +    "failed"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / definitions / Error / properties / error / properties / code / enum
        Previous value: -[
        -  "unauthorized",
        -  "payment_required",
        -  "validation_failed",
        -  "engine_error",
        -  "method_not_allowed",
        -  "internal_error"
        -]New value: +[
        +  "unauthorized",
        +  "payment_required",
        +  "validation_failed",
        +  "engine_error",
        +  "quota_exhausted",
        +  "rate_limited",
        +  "idempotency_conflict",
        +  "service_unavailable",
        +  "method_not_allowed",
        +  "internal_error"
        +]
      • addedInput schema / definitions / FundComputeRequest / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / definitions / FundComputeRequest / additionalProperties
        Added value: +false
      • changedInput schema / definitions / FundComputeRequest / properties / inputs / additionalProperties
        Previous value: -trueNew value: +false
      • removedInput schema / definitions / FundComputeRequest / properties / inputs / description
        Removed value: -"Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers."
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties
        Added value: +{
        +  "carryPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "committedCapital": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "fundOperationsYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "gpCommitCountedTowardInvested": {
        +    "type": "boolean"
        +  },
        +  "gpCommitPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "mgmtFeePct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "mgmtFeeSchedule": {
        +    "items": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "type": "array"
        +  },
        +  "mgmtFeesPeriodYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "newInvestmentPeriodYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "operationalExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "operationalExpensesAnnual": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "operationalExpensesBreakout": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "audit": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "fundAdmin": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "other": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "tax": {
        +        "minimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "fundAdmin",
        +      "tax",
        +      "audit",
        +      "other"
        +    ],
        +    "type": "object"
        +  },
        +  "organizationalExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "organizationalExpenses": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "partnershipExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "partnershipExpensesAnnual": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "portfolio": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "avgCheckSizeFollow": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "avgCheckSizeNew": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "entryStages": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "avgCheckSize": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "followOnChecks": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "avgCheckSize": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "label": {
        +                    "type": "string"
        +                  },
        +                  "pctOfReserve": {
        +                    "maximum": 1,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "required": [
        +                  "avgCheckSize"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "initialCheckLabel": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "numInvestments": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "pctAllocation": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "reserveRatio": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "numInvestments",
        +            "avgCheckSize"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "followPct": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "newPct": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "newPct",
        +      "followPct",
        +      "avgCheckSizeNew",
        +      "avgCheckSizeFollow"
        +    ],
        +    "type": "object"
        +  },
        +  "recycledCapitalPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "returnTiers": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "holdingPeriodYears": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "multiple": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "numCompanies": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "pctOfCapital": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "pctOfCapital",
        +        "multiple",
        +        "holdingPeriodYears"
        +      ],
        +      "type": "object"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  "solveCalledFromDeployment": {
        +    "type": "boolean"
        +  },
        +  "stageInputMode": {
        +    "enum": [
        +      "pct-capital",
        +      "num-companies"
        +    ],
        +    "type": "string"
        +  },
        +  "targetTotalInvestments": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "tierFractional": {
        +    "type": "boolean"
        +  },
        +  "tierInputMode": {
        +    "enum": [
        +      "pct-capital",
        +      "num-companies"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / required
        Added value: +[
        +  "committedCapital",
        +  "gpCommitPct",
        +  "gpCommitCountedTowardInvested",
        +  "organizationalExpenses",
        +  "operationalExpensesAnnual",
        +  "mgmtFeePct",
        +  "recycledCapitalPct",
        +  "carryPct",
        +  "newInvestmentPeriodYears",
        +  "mgmtFeesPeriodYears",
        +  "portfolio",
        +  "returnTiers"
        +]
      • addedInput schema / definitions / FundResult
        Added value: +{
        +  "properties": {
        +    "calledCapital": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "committedCapital": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "distributions": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "dpi": {
        +      "type": "number"
        +    },
        +    "grossIRR": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "grossMultiple": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "investedCapital": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "managementFees": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "netIRR": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "netMultiple": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "partnershipExpenses": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "pic": {
        +      "type": "number"
        +    },
        +    "proceeds": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "rvpi": {
        +      "type": "number"
        +    },
        +    "tiers": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "tvpi": {
        +      "type": "number"
        +    },
        +    "weightedHoldPeriodYears": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "committedCapital",
        +    "calledCapital",
        +    "managementFees",
        +    "partnershipExpenses",
        +    "investedCapital",
        +    "proceeds",
        +    "distributions",
        +    "grossMultiple",
        +    "netMultiple",
        +    "grossIRR",
        +    "netIRR",
        +    "pic",
        +    "dpi",
        +    "rvpi",
        +    "tvpi",
        +    "weightedHoldPeriodYears"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / LineTotals
        Added value: +{
        +  "properties": {
        +    "gp": {
        +      "type": "number"
        +    },
        +    "lp": {
        +      "type": "number"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "lp",
        +    "gp"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / MonthlyUsage
        Added value: +{
        +  "properties": {
        +    "failed": {
        +      "type": "integer"
        +    },
        +    "month": {
        +      "pattern": "^[0-9]{4}-[0-9]{2}$",
        +      "type": "string"
        +    },
        +    "product": {
        +      "enum": [
        +        "cap-table",
        +        "fund-economics"
        +      ],
        +      "type": "string"
        +    },
        +    "succeeded": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "month",
        +    "product",
        +    "succeeded",
        +    "failed"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / ProductAccess
        Added value: +{
        +  "properties": {
        +    "active": {
        +      "type": "boolean"
        +    },
        +    "allowance": {
        +      "const": 6000,
        +      "type": "integer"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "period": {
        +      "anyOf": [
        +        {
        +          "type": "null"
        +        },
        +        {
        +          "$ref": "#/definitions/UsagePeriod"
        +        }
        +      ]
        +    },
        +    "priceUsd": {
        +      "const": 20,
        +      "type": "number"
        +    },
        +    "product": {
        +      "enum": [
        +        "cap-table",
        +        "fund-economics"
        +      ],
        +      "type": "string"
        +    },
        +    "remaining": {
        +      "minimum": 0,
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "product",
        +    "name",
        +    "priceUsd",
        +    "allowance",
        +    "period",
        +    "remaining",
        +    "active"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / ResultResponse / properties / data / properties / result / oneOf
        Added value: +[
        +  {
        +    "$ref": "#/definitions/WaterfallResult"
        +  },
        +  {
        +    "$ref": "#/definitions/FundResult"
        +  }
        +]
      • removedInput schema / definitions / ResultResponse / properties / data / properties / result / type
        Removed value: -"object"
      • addedInput schema / definitions / UsagePeriod
        Added value: +{
        +  "properties": {
        +    "allowance": {
        +      "type": "integer"
        +    },
        +    "consumed": {
        +      "type": "integer"
        +    },
        +    "enabled": {
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "period_end": {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "period_start": {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "reserved": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "period_start",
        +    "period_end",
        +    "allowance",
        +    "consumed",
        +    "reserved",
        +    "enabled"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / WaterfallComputeRequest / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / definitions / WaterfallComputeRequest / additionalProperties
        Added value: +false
      • removedInput schema / definitions / WaterfallComputeRequest / properties / exitValuation / description
        Removed value: -"Total exit proceeds to distribute."
      • addedInput schema / definitions / WaterfallComputeRequest / properties / exitValuation / maximum
        Added value: +1000000000000000
      • addedInput schema / definitions / WaterfallComputeRequest / properties / exitValuation / minimum
        Added value: +0
      • changedInput schema / definitions / WaterfallComputeRequest / properties / model / additionalProperties
        Previous value: -trueNew value: +false
      • removedInput schema / definitions / WaterfallComputeRequest / properties / model / description
        Removed value: -"Exit-waterfall model: preferred series, common holders, options, warrants, convertibles."
      • addedInput schema / definitions / WaterfallComputeRequest / properties / model / properties
        Added value: +{
        +  "common": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "invested": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  },
        +  "convertibles": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "accruedInterest": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "cap": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "cashOutAs": {
        +          "enum": [
        +            "debt",
        +            "equity"
        +          ],
        +          "type": "string"
        +        },
        +        "cashOutSeniority": {
        +          "enum": [
        +            "senior",
        +            "pari-passu"
        +          ],
        +          "type": "string"
        +        },
        +        "discount": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "kind": {
        +          "enum": [
        +            "pre-safe",
        +            "post-safe",
        +            "note"
        +          ],
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "premiumMultiple": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "principal": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "seniority": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "kind",
        +        "principal"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 100,
        +    "type": "array"
        +  },
        +  "debt": {
        +    "maximum": 1000000000000000,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "options": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "strike": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "vestedFraction": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares",
        +        "strike"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  },
        +  "preferred": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "conversionRatio": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "dividendCumulative": {
        +          "type": "boolean"
        +        },
        +        "dividendRate": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "dividendStart": {
        +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +          "type": "string"
        +        },
        +        "holders": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "id": {
        +                "maxLength": 200,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "invested": {
        +                "maximum": 1000000000000000,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "name": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "shares": {
        +                "maximum": 1000000000000000,
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "shares",
        +              "invested"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 500,
        +          "type": "array"
        +        },
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "investmentDate": {
        +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +          "type": "string"
        +        },
        +        "multiple": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "participation": {
        +          "enum": [
        +            "none",
        +            "full",
        +            "capped"
        +          ],
        +          "type": "string"
        +        },
        +        "participationCap": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "seniority": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "holders",
        +        "seniority"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 20,
        +    "type": "array"
        +  },
        +  "transactionExpenses": {
        +    "maximum": 1000000000000000,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "unissuedPool": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "shares": {
        +        "maximum": 1000000000000000,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "treatment": {
        +        "const": "cancel",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "shares"
        +    ],
        +    "type": "object"
        +  },
        +  "warrants": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "strike": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares",
        +        "strike"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  }
        +}
      • addedInput schema / definitions / WaterfallComputeRequest / properties / model / required
        Added value: +[
        +  "common",
        +  "preferred"
        +]
      • changedInput schema / definitions / WaterfallComputeRequest / required
        Previous value: -[
        -  "model",
        -  "exitValuation"
        -]New value: +[
        +  "exitValuation",
        +  "model"
        +]
      • addedInput schema / definitions / WaterfallResult
        Added value: +{
        +  "properties": {
        +    "classes": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "converged": {
        +      "type": "boolean"
        +    },
        +    "convertibles": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "distributable": {
        +      "type": "number"
        +    },
        +    "exitValuation": {
        +      "type": "number"
        +    },
        +    "holders": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "iterations": {
        +      "type": "integer"
        +    },
        +    "perShare": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "exitValuation",
        +    "distributable",
        +    "classes",
        +    "series",
        +    "convertibles",
        +    "holders",
        +    "perShare",
        +    "iterations",
        +    "converged"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / exitValuation / description
        Removed value: -"Total exit proceeds to distribute."
      • addedInput schema / properties / exitValuation / maximum
        Added value: +1000000000000000
      • addedInput schema / properties / exitValuation / minimum
        Added value: +0
      • changedInput schema / properties / model / additionalProperties
        Previous value: -trueNew value: +false
      • removedInput schema / properties / model / description
        Removed value: -"Exit-waterfall model: preferred series, common holders, options, warrants, convertibles."
      • addedInput schema / properties / model / properties
        Added value: +{
        +  "common": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "invested": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  },
        +  "convertibles": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "accruedInterest": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "cap": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "cashOutAs": {
        +          "enum": [
        +            "debt",
        +            "equity"
        +          ],
        +          "type": "string"
        +        },
        +        "cashOutSeniority": {
        +          "enum": [
        +            "senior",
        +            "pari-passu"
        +          ],
        +          "type": "string"
        +        },
        +        "discount": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "kind": {
        +          "enum": [
        +            "pre-safe",
        +            "post-safe",
        +            "note"
        +          ],
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "premiumMultiple": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "principal": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "seniority": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "kind",
        +        "principal"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 100,
        +    "type": "array"
        +  },
        +  "debt": {
        +    "maximum": 1000000000000000,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "options": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "strike": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "vestedFraction": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares",
        +        "strike"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  },
        +  "preferred": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "conversionRatio": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "dividendCumulative": {
        +          "type": "boolean"
        +        },
        +        "dividendRate": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "dividendStart": {
        +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +          "type": "string"
        +        },
        +        "holders": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "id": {
        +                "maxLength": 200,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "invested": {
        +                "maximum": 1000000000000000,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "name": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "shares": {
        +                "maximum": 1000000000000000,
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "shares",
        +              "invested"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 500,
        +          "type": "array"
        +        },
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "investmentDate": {
        +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +          "type": "string"
        +        },
        +        "multiple": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "participation": {
        +          "enum": [
        +            "none",
        +            "full",
        +            "capped"
        +          ],
        +          "type": "string"
        +        },
        +        "participationCap": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "seniority": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "holders",
        +        "seniority"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 20,
        +    "type": "array"
        +  },
        +  "transactionExpenses": {
        +    "maximum": 1000000000000000,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "unissuedPool": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "shares": {
        +        "maximum": 1000000000000000,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "treatment": {
        +        "const": "cancel",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "shares"
        +    ],
        +    "type": "object"
        +  },
        +  "warrants": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "strike": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares",
        +        "strike"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  }
        +}
      • addedInput schema / properties / model / required
        Added value: +[
        +  "common",
        +  "preferred"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "model",
        -  "exitValuation"
        -]New value: +[
        +  "exitValuation",
        +  "model"
        +]
    • Changedfund_economics_compute49 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / definitions / AccessResponse
        Added value: +{
        +  "properties": {
        +    "data": {
        +      "properties": {
        +        "daily": {
        +          "items": {
        +            "$ref": "#/definitions/DailyUsage"
        +          },
        +          "type": "array"
        +        },
        +        "monthly": {
        +          "items": {
        +            "$ref": "#/definitions/MonthlyUsage"
        +          },
        +          "type": "array"
        +        },
        +        "periods": {
        +          "items": {
        +            "allOf": [
        +              {
        +                "$ref": "#/definitions/UsagePeriod"
        +              },
        +              {
        +                "properties": {
        +                  "product": {
        +                    "enum": [
        +                      "cap-table",
        +                      "fund-economics"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "product"
        +                ],
        +                "type": "object"
        +              }
        +            ]
        +          },
        +          "type": "array"
        +        },
        +        "products": {
        +          "items": {
        +            "$ref": "#/definitions/ProductAccess"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "products",
        +        "daily"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedInput schema / definitions / ApiKey
        Removed value: -{
        -  "properties": {
        -    "created_at": {
        -      "type": "string"
        -    },
        -    "id": {
        -      "type": "string"
        -    },
        -    "key_prefix": {
        -      "description": "First chars of the token, for display.",
        -      "type": "string"
        -    },
        -    "last_used_at": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    },
        -    "name": {
        -      "type": "string"
        -    },
        -    "revoked_at": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / definitions / CapTableEvent
        Removed value: -{
        -  "description": "One cap-table event, discriminated by `type`. Pass events in chronological order.",
        -  "discriminator": {
        -    "mapping": {
        -      "common_issuance": "#/components/schemas/CommonIssuanceEvent",
        -      "convertible_round": "#/components/schemas/ConvertibleRoundEvent",
        -      "manual_issuance": "#/components/schemas/ManualIssuanceEvent",
        -      "option_grant": "#/components/schemas/OptionGrantEvent",
        -      "option_pool": "#/components/schemas/OptionPoolEvent",
        -      "priced_round": "#/components/schemas/PricedRoundEvent",
        -      "secondary_sale": "#/components/schemas/SecondarySaleEvent",
        -      "warrant_round": "#/components/schemas/WarrantRoundEvent"
        -    },
        -    "propertyName": "type"
        -  },
        -  "oneOf": [
        -    {
        -      "$ref": "#/definitions/CommonIssuanceEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/OptionPoolEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/SecondarySaleEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/OptionGrantEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/ManualIssuanceEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/ConvertibleRoundEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/WarrantRoundEvent"
        -    },
        -    {
        -      "$ref": "#/definitions/PricedRoundEvent"
        -    }
        -  ]
        -}
      • addedInput schema / definitions / CapTableSnapshot
        Added value: +{
        +  "properties": {
        +    "holdings": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "label": {
        +      "type": "string"
        +    },
        +    "outstandingConvertibles": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "ownership": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "pricePerShare": {
        +      "type": "number"
        +    },
        +    "roundDetail": {
        +      "type": "object"
        +    },
        +    "totalShares": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "label",
        +    "holdings",
        +    "totalShares",
        +    "ownership",
        +    "outstandingConvertibles"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / ComputeRequest / additionalProperties
        Added value: +false
      • removedInput schema / definitions / ComputeRequest / properties / events / description
        Removed value: -"Ordered list of cap-table events to fold."
      • removedInput schema / definitions / ComputeRequest / properties / events / items / $ref
        Removed value: -"#/definitions/CapTableEvent"
      • addedInput schema / definitions / ComputeRequest / properties / events / items / description
        Added value: +"One cap-table event, discriminated by `type`. Pass events in chronological order."
      • addedInput schema / definitions / ComputeRequest / properties / events / items / discriminator
        Added value: +{
        +  "mapping": {
        +    "common_issuance": "#/components/schemas/CommonIssuanceEvent",
        +    "convertible_round": "#/components/schemas/ConvertibleRoundEvent",
        +    "manual_issuance": "#/components/schemas/ManualIssuanceEvent",
        +    "option_grant": "#/components/schemas/OptionGrantEvent",
        +    "option_pool": "#/components/schemas/OptionPoolEvent",
        +    "priced_round": "#/components/schemas/PricedRoundEvent",
        +    "secondary_sale": "#/components/schemas/SecondarySaleEvent",
        +    "warrant_round": "#/components/schemas/WarrantRoundEvent"
        +  },
        +  "propertyName": "type"
        +}
      • addedInput schema / definitions / ComputeRequest / properties / events / items / oneOf
        Added value: +[
        +  {
        +    "$ref": "#/definitions/CommonIssuanceEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/OptionPoolEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/SecondarySaleEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/OptionGrantEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/ManualIssuanceEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/ConvertibleRoundEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/WarrantRoundEvent"
        +  },
        +  {
        +    "$ref": "#/definitions/PricedRoundEvent"
        +  }
        +]
      • addedInput schema / definitions / ComputeRequest / properties / events / maxItems
        Added value: +200
      • addedInput schema / definitions / ComputeResponse / properties / data / properties / final / $ref
        Added value: +"#/definitions/CapTableSnapshot"
      • removedInput schema / definitions / ComputeResponse / properties / data / properties / final / description
        Removed value: -"The final cap-table state."
      • removedInput schema / definitions / ComputeResponse / properties / data / properties / final / type
        Removed value: -"object"
      • addedInput schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / $ref
        Added value: +"#/definitions/CapTableSnapshot"
      • removedInput schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / type
        Removed value: -"object"
      • removedInput schema / definitions / CreateKeyRequest
        Removed value: -{
        -  "properties": {
        -    "name": {
        -      "description": "Label for the key, written into the audit trail.",
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedInput schema / definitions / DailyUsage
        Added value: +{
        +  "properties": {
        +    "day": {
        +      "format": "date",
        +      "type": "string"
        +    },
        +    "endpoint": {
        +      "type": "string"
        +    },
        +    "failed": {
        +      "type": "integer"
        +    },
        +    "product": {
        +      "enum": [
        +        "cap-table",
        +        "fund-economics"
        +      ],
        +      "type": "string"
        +    },
        +    "source": {
        +      "type": "string"
        +    },
        +    "succeeded": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "day",
        +    "product",
        +    "endpoint",
        +    "source",
        +    "succeeded",
        +    "failed"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / definitions / Error / properties / error / properties / code / enum
        Previous value: -[
        -  "unauthorized",
        -  "payment_required",
        -  "validation_failed",
        -  "engine_error",
        -  "method_not_allowed",
        -  "internal_error"
        -]New value: +[
        +  "unauthorized",
        +  "payment_required",
        +  "validation_failed",
        +  "engine_error",
        +  "quota_exhausted",
        +  "rate_limited",
        +  "idempotency_conflict",
        +  "service_unavailable",
        +  "method_not_allowed",
        +  "internal_error"
        +]
      • addedInput schema / definitions / FundComputeRequest / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / definitions / FundComputeRequest / additionalProperties
        Added value: +false
      • changedInput schema / definitions / FundComputeRequest / properties / inputs / additionalProperties
        Previous value: -trueNew value: +false
      • removedInput schema / definitions / FundComputeRequest / properties / inputs / description
        Removed value: -"Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers."
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / properties
        Added value: +{
        +  "carryPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "committedCapital": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "fundOperationsYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "gpCommitCountedTowardInvested": {
        +    "type": "boolean"
        +  },
        +  "gpCommitPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "mgmtFeePct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "mgmtFeeSchedule": {
        +    "items": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "type": "array"
        +  },
        +  "mgmtFeesPeriodYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "newInvestmentPeriodYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "operationalExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "operationalExpensesAnnual": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "operationalExpensesBreakout": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "audit": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "fundAdmin": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "other": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "tax": {
        +        "minimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "fundAdmin",
        +      "tax",
        +      "audit",
        +      "other"
        +    ],
        +    "type": "object"
        +  },
        +  "organizationalExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "organizationalExpenses": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "partnershipExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "partnershipExpensesAnnual": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "portfolio": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "avgCheckSizeFollow": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "avgCheckSizeNew": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "entryStages": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "avgCheckSize": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "followOnChecks": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "avgCheckSize": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "label": {
        +                    "type": "string"
        +                  },
        +                  "pctOfReserve": {
        +                    "maximum": 1,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "required": [
        +                  "avgCheckSize"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "initialCheckLabel": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "numInvestments": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "pctAllocation": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "reserveRatio": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "numInvestments",
        +            "avgCheckSize"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "followPct": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "newPct": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "newPct",
        +      "followPct",
        +      "avgCheckSizeNew",
        +      "avgCheckSizeFollow"
        +    ],
        +    "type": "object"
        +  },
        +  "recycledCapitalPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "returnTiers": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "holdingPeriodYears": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "multiple": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "numCompanies": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "pctOfCapital": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "pctOfCapital",
        +        "multiple",
        +        "holdingPeriodYears"
        +      ],
        +      "type": "object"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  "solveCalledFromDeployment": {
        +    "type": "boolean"
        +  },
        +  "stageInputMode": {
        +    "enum": [
        +      "pct-capital",
        +      "num-companies"
        +    ],
        +    "type": "string"
        +  },
        +  "targetTotalInvestments": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "tierFractional": {
        +    "type": "boolean"
        +  },
        +  "tierInputMode": {
        +    "enum": [
        +      "pct-capital",
        +      "num-companies"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / definitions / FundComputeRequest / properties / inputs / required
        Added value: +[
        +  "committedCapital",
        +  "gpCommitPct",
        +  "gpCommitCountedTowardInvested",
        +  "organizationalExpenses",
        +  "operationalExpensesAnnual",
        +  "mgmtFeePct",
        +  "recycledCapitalPct",
        +  "carryPct",
        +  "newInvestmentPeriodYears",
        +  "mgmtFeesPeriodYears",
        +  "portfolio",
        +  "returnTiers"
        +]
      • addedInput schema / definitions / FundResult
        Added value: +{
        +  "properties": {
        +    "calledCapital": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "committedCapital": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "distributions": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "dpi": {
        +      "type": "number"
        +    },
        +    "grossIRR": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "grossMultiple": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "investedCapital": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "managementFees": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "netIRR": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "netMultiple": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "partnershipExpenses": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "pic": {
        +      "type": "number"
        +    },
        +    "proceeds": {
        +      "$ref": "#/definitions/LineTotals"
        +    },
        +    "rvpi": {
        +      "type": "number"
        +    },
        +    "tiers": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "tvpi": {
        +      "type": "number"
        +    },
        +    "weightedHoldPeriodYears": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "committedCapital",
        +    "calledCapital",
        +    "managementFees",
        +    "partnershipExpenses",
        +    "investedCapital",
        +    "proceeds",
        +    "distributions",
        +    "grossMultiple",
        +    "netMultiple",
        +    "grossIRR",
        +    "netIRR",
        +    "pic",
        +    "dpi",
        +    "rvpi",
        +    "tvpi",
        +    "weightedHoldPeriodYears"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / LineTotals
        Added value: +{
        +  "properties": {
        +    "gp": {
        +      "type": "number"
        +    },
        +    "lp": {
        +      "type": "number"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "lp",
        +    "gp"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / MonthlyUsage
        Added value: +{
        +  "properties": {
        +    "failed": {
        +      "type": "integer"
        +    },
        +    "month": {
        +      "pattern": "^[0-9]{4}-[0-9]{2}$",
        +      "type": "string"
        +    },
        +    "product": {
        +      "enum": [
        +        "cap-table",
        +        "fund-economics"
        +      ],
        +      "type": "string"
        +    },
        +    "succeeded": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "month",
        +    "product",
        +    "succeeded",
        +    "failed"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / ProductAccess
        Added value: +{
        +  "properties": {
        +    "active": {
        +      "type": "boolean"
        +    },
        +    "allowance": {
        +      "const": 6000,
        +      "type": "integer"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "period": {
        +      "anyOf": [
        +        {
        +          "type": "null"
        +        },
        +        {
        +          "$ref": "#/definitions/UsagePeriod"
        +        }
        +      ]
        +    },
        +    "priceUsd": {
        +      "const": 20,
        +      "type": "number"
        +    },
        +    "product": {
        +      "enum": [
        +        "cap-table",
        +        "fund-economics"
        +      ],
        +      "type": "string"
        +    },
        +    "remaining": {
        +      "minimum": 0,
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "product",
        +    "name",
        +    "priceUsd",
        +    "allowance",
        +    "period",
        +    "remaining",
        +    "active"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / ResultResponse / properties / data / properties / result / oneOf
        Added value: +[
        +  {
        +    "$ref": "#/definitions/WaterfallResult"
        +  },
        +  {
        +    "$ref": "#/definitions/FundResult"
        +  }
        +]
      • removedInput schema / definitions / ResultResponse / properties / data / properties / result / type
        Removed value: -"object"
      • addedInput schema / definitions / UsagePeriod
        Added value: +{
        +  "properties": {
        +    "allowance": {
        +      "type": "integer"
        +    },
        +    "consumed": {
        +      "type": "integer"
        +    },
        +    "enabled": {
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "period_end": {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "period_start": {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "reserved": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "period_start",
        +    "period_end",
        +    "allowance",
        +    "consumed",
        +    "reserved",
        +    "enabled"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / definitions / WaterfallComputeRequest / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / definitions / WaterfallComputeRequest / additionalProperties
        Added value: +false
      • removedInput schema / definitions / WaterfallComputeRequest / properties / exitValuation / description
        Removed value: -"Total exit proceeds to distribute."
      • addedInput schema / definitions / WaterfallComputeRequest / properties / exitValuation / maximum
        Added value: +1000000000000000
      • addedInput schema / definitions / WaterfallComputeRequest / properties / exitValuation / minimum
        Added value: +0
      • changedInput schema / definitions / WaterfallComputeRequest / properties / model / additionalProperties
        Previous value: -trueNew value: +false
      • removedInput schema / definitions / WaterfallComputeRequest / properties / model / description
        Removed value: -"Exit-waterfall model: preferred series, common holders, options, warrants, convertibles."
      • addedInput schema / definitions / WaterfallComputeRequest / properties / model / properties
        Added value: +{
        +  "common": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "invested": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  },
        +  "convertibles": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "accruedInterest": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "cap": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "cashOutAs": {
        +          "enum": [
        +            "debt",
        +            "equity"
        +          ],
        +          "type": "string"
        +        },
        +        "cashOutSeniority": {
        +          "enum": [
        +            "senior",
        +            "pari-passu"
        +          ],
        +          "type": "string"
        +        },
        +        "discount": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "kind": {
        +          "enum": [
        +            "pre-safe",
        +            "post-safe",
        +            "note"
        +          ],
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "premiumMultiple": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "principal": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "seniority": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "kind",
        +        "principal"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 100,
        +    "type": "array"
        +  },
        +  "debt": {
        +    "maximum": 1000000000000000,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "options": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "strike": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "vestedFraction": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares",
        +        "strike"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  },
        +  "preferred": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "conversionRatio": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "dividendCumulative": {
        +          "type": "boolean"
        +        },
        +        "dividendRate": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "dividendStart": {
        +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +          "type": "string"
        +        },
        +        "holders": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "id": {
        +                "maxLength": 200,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "invested": {
        +                "maximum": 1000000000000000,
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "name": {
        +                "maxLength": 200,
        +                "type": "string"
        +              },
        +              "shares": {
        +                "maximum": 1000000000000000,
        +                "minimum": 0,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "shares",
        +              "invested"
        +            ],
        +            "type": "object"
        +          },
        +          "maxItems": 500,
        +          "type": "array"
        +        },
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "investmentDate": {
        +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +          "type": "string"
        +        },
        +        "multiple": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "participation": {
        +          "enum": [
        +            "none",
        +            "full",
        +            "capped"
        +          ],
        +          "type": "string"
        +        },
        +        "participationCap": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "seniority": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "holders",
        +        "seniority"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 20,
        +    "type": "array"
        +  },
        +  "transactionExpenses": {
        +    "maximum": 1000000000000000,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "unissuedPool": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "shares": {
        +        "maximum": 1000000000000000,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "treatment": {
        +        "const": "cancel",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "shares"
        +    ],
        +    "type": "object"
        +  },
        +  "warrants": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "name": {
        +          "maxLength": 200,
        +          "type": "string"
        +        },
        +        "shares": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "strike": {
        +          "maximum": 1000000000000000,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "shares",
        +        "strike"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 500,
        +    "type": "array"
        +  }
        +}
      • addedInput schema / definitions / WaterfallComputeRequest / properties / model / required
        Added value: +[
        +  "common",
        +  "preferred"
        +]
      • changedInput schema / definitions / WaterfallComputeRequest / required
        Previous value: -[
        -  "model",
        -  "exitValuation"
        -]New value: +[
        +  "exitValuation",
        +  "model"
        +]
      • addedInput schema / definitions / WaterfallResult
        Added value: +{
        +  "properties": {
        +    "classes": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "converged": {
        +      "type": "boolean"
        +    },
        +    "convertibles": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "distributable": {
        +      "type": "number"
        +    },
        +    "exitValuation": {
        +      "type": "number"
        +    },
        +    "holders": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "iterations": {
        +      "type": "integer"
        +    },
        +    "perShare": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "exitValuation",
        +    "distributable",
        +    "classes",
        +    "series",
        +    "convertibles",
        +    "holders",
        +    "perShare",
        +    "iterations",
        +    "converged"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / properties / inputs / additionalProperties
        Previous value: -trueNew value: +false
      • removedInput schema / properties / inputs / description
        Removed value: -"Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers."
      • addedInput schema / properties / inputs / properties
        Added value: +{
        +  "carryPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "committedCapital": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "fundOperationsYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "gpCommitCountedTowardInvested": {
        +    "type": "boolean"
        +  },
        +  "gpCommitPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "mgmtFeePct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "mgmtFeeSchedule": {
        +    "items": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "type": "array"
        +  },
        +  "mgmtFeesPeriodYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "newInvestmentPeriodYears": {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  },
        +  "operationalExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "operationalExpensesAnnual": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "operationalExpensesBreakout": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "audit": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "fundAdmin": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "other": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "tax": {
        +        "minimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "fundAdmin",
        +      "tax",
        +      "audit",
        +      "other"
        +    ],
        +    "type": "object"
        +  },
        +  "organizationalExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "organizationalExpenses": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "partnershipExpenseLines": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "label",
        +        "amount"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "partnershipExpensesAnnual": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "portfolio": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "avgCheckSizeFollow": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "avgCheckSizeNew": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "entryStages": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "avgCheckSize": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "followOnChecks": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "avgCheckSize": {
        +                    "minimum": 0,
        +                    "type": "number"
        +                  },
        +                  "label": {
        +                    "type": "string"
        +                  },
        +                  "pctOfReserve": {
        +                    "maximum": 1,
        +                    "minimum": 0,
        +                    "type": "number"
        +                  }
        +                },
        +                "required": [
        +                  "avgCheckSize"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "initialCheckLabel": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "numInvestments": {
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "pctAllocation": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "reserveRatio": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "numInvestments",
        +            "avgCheckSize"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "followPct": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "newPct": {
        +        "maximum": 1,
        +        "minimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "newPct",
        +      "followPct",
        +      "avgCheckSizeNew",
        +      "avgCheckSizeFollow"
        +    ],
        +    "type": "object"
        +  },
        +  "recycledCapitalPct": {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "returnTiers": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "holdingPeriodYears": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "multiple": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "name": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "numCompanies": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "pctOfCapital": {
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "pctOfCapital",
        +        "multiple",
        +        "holdingPeriodYears"
        +      ],
        +      "type": "object"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  "solveCalledFromDeployment": {
        +    "type": "boolean"
        +  },
        +  "stageInputMode": {
        +    "enum": [
        +      "pct-capital",
        +      "num-companies"
        +    ],
        +    "type": "string"
        +  },
        +  "targetTotalInvestments": {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  "tierFractional": {
        +    "type": "boolean"
        +  },
        +  "tierInputMode": {
        +    "enum": [
        +      "pct-capital",
        +      "num-companies"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / inputs / required
        Added value: +[
        +  "committedCapital",
        +  "gpCommitPct",
        +  "gpCommitCountedTowardInvested",
        +  "organizationalExpenses",
        +  "operationalExpensesAnnual",
        +  "mgmtFeePct",
        +  "recycledCapitalPct",
        +  "carryPct",
        +  "newInvestmentPeriodYears",
        +  "mgmtFeesPeriodYears",
        +  "portfolio",
        +  "returnTiers"
        +]
  11. 5 tool updates
    • Changedcap_table_compute5 fields changed
      • addedInput schema / definitions
        Added value: +{
        +  "ApiKey": {
        +    "properties": {
        +      "created_at": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "key_prefix": {
        +        "description": "First chars of the token, for display.",
        +        "type": "string"
        +      },
        +      "last_used_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "revoked_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "CapTableEvent": {
        +    "description": "One cap-table event, discriminated by `type`. Pass events in chronological order.",
        +    "discriminator": {
        +      "mapping": {
        +        "common_issuance": "#/components/schemas/CommonIssuanceEvent",
        +        "convertible_round": "#/components/schemas/ConvertibleRoundEvent",
        +        "manual_issuance": "#/components/schemas/ManualIssuanceEvent",
        +        "option_grant": "#/components/schemas/OptionGrantEvent",
        +        "option_pool": "#/components/schemas/OptionPoolEvent",
        +        "priced_round": "#/components/schemas/PricedRoundEvent",
        +        "secondary_sale": "#/components/schemas/SecondarySaleEvent",
        +        "warrant_round": "#/components/schemas/WarrantRoundEvent"
        +      },
        +      "propertyName": "type"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/definitions/CommonIssuanceEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/OptionPoolEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/SecondarySaleEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/OptionGrantEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/ManualIssuanceEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/ConvertibleRoundEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/WarrantRoundEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/PricedRoundEvent"
        +      }
        +    ]
        +  },
        +  "CommonIssuanceEvent": {
        +    "description": "Issue common stock (founders, employees).",
        +    "properties": {
        +      "grants": {
        +        "items": {
        +          "properties": {
        +            "id": {
        +              "type": "string"
        +            },
        +            "kind": {
        +              "enum": [
        +                "founder",
        +                "employee"
        +              ]
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "shares": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "kind",
        +            "shares"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "common_issuance"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "grants"
        +    ],
        +    "type": "object"
        +  },
        +  "ComputeRequest": {
        +    "properties": {
        +      "events": {
        +        "description": "Ordered list of cap-table events to fold.",
        +        "items": {
        +          "$ref": "#/definitions/CapTableEvent"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "events"
        +    ],
        +    "type": "object"
        +  },
        +  "ComputeResponse": {
        +    "properties": {
        +      "data": {
        +        "properties": {
        +          "final": {
        +            "description": "The final cap-table state.",
        +            "type": "object"
        +          },
        +          "snapshots": {
        +            "description": "One snapshot per event, in order.",
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "meta": {
        +        "properties": {
        +          "keyName": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "ConvertibleRoundEvent": {
        +    "description": "Issue SAFEs or notes; they convert to preferred at the next priced round.",
        +    "properties": {
        +      "convertibles": {
        +        "items": {
        +          "properties": {
        +            "accruedInterest": {
        +              "type": "number"
        +            },
        +            "capType": {
        +              "enum": [
        +                "pre-money",
        +                "post-money",
        +                "post-money-fixed",
        +                "post-money-fixed-after"
        +              ]
        +            },
        +            "conversionDate": {
        +              "description": "ISO date. Notes only.",
        +              "type": "string"
        +            },
        +            "dilutionMode": {
        +              "description": "Defaults to \"existing-only\".",
        +              "enum": [
        +                "existing-only",
        +                "all"
        +              ]
        +            },
        +            "discount": {
        +              "description": "0..1.",
        +              "type": "number"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "interestRate": {
        +              "description": "Annual fraction (0.05 = 5%). Notes only.",
        +              "type": "number"
        +            },
        +            "investmentDate": {
        +              "description": "ISO date. Notes only.",
        +              "type": "string"
        +            },
        +            "kind": {
        +              "enum": [
        +                "safe",
        +                "note"
        +              ]
        +            },
        +            "mfn": {
        +              "type": "boolean"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "principal": {
        +              "type": "number"
        +            },
        +            "valuationCap": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "kind",
        +            "principal"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "convertible_round"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "convertibles"
        +    ],
        +    "type": "object"
        +  },
        +  "CreateKeyRequest": {
        +    "properties": {
        +      "name": {
        +        "description": "Label for the key, written into the audit trail.",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "Error": {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "code": {
        +            "enum": [
        +              "unauthorized",
        +              "payment_required",
        +              "validation_failed",
        +              "engine_error",
        +              "method_not_allowed",
        +              "internal_error"
        +            ],
        +            "type": "string"
        +          },
        +          "details": {},
        +          "message": {
        +            "type": "string"
        +          },
        +          "retryable": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message",
        +          "retryable"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "FundComputeRequest": {
        +    "properties": {
        +      "inputs": {
        +        "additionalProperties": true,
        +        "description": "Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers.",
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "inputs"
        +    ],
        +    "type": "object"
        +  },
        +  "ManualIssuanceEvent": {
        +    "description": "Escape hatch: issue exact shares for custom arrangements.",
        +    "properties": {
        +      "issuances": {
        +        "items": {
        +          "properties": {
        +            "class": {
        +              "enum": [
        +                "common",
        +                "preferred",
        +                "option-pool",
        +                "warrant"
        +              ]
        +            },
        +            "countMode": {
        +              "description": "Defaults to \"shares\".",
        +              "enum": [
        +                "shares",
        +                "percent"
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "issuePrice": {
        +              "type": "number"
        +            },
        +            "kind": {
        +              "enum": [
        +                "founder",
        +                "employee",
        +                "investor",
        +                "pool"
        +              ]
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "pctBasis": {
        +              "description": "Defaults to \"fully-diluted\".",
        +              "enum": [
        +                "fully-diluted",
        +                "issued"
        +              ]
        +            },
        +            "shares": {
        +              "type": "number"
        +            },
        +            "targetPct": {
        +              "description": "0..1, used when countMode=\"percent\".",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "kind",
        +            "class",
        +            "shares"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "manual_issuance"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "issuances"
        +    ],
        +    "type": "object"
        +  },
        +  "OptionGrantEvent": {
        +    "description": "Grant options to people from one pool (fully-diluted-neutral).",
        +    "properties": {
        +      "grants": {
        +        "items": {
        +          "properties": {
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "shares": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "shares"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "poolId": {
        +        "description": "Pool id to grant from; omit to draw the common pool.",
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "option_grant"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "grants"
        +    ],
        +    "type": "object"
        +  },
        +  "OptionPoolEvent": {
        +    "description": "Create or expand an option pool (shares authorized, not granted).",
        +    "properties": {
        +      "countMode": {
        +        "description": "Defaults to \"shares\".",
        +        "enum": [
        +          "shares",
        +          "percent"
        +        ]
        +      },
        +      "id": {
        +        "description": "Pool id, so an option_grant can name which pool it draws from.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "shares": {
        +        "type": "number"
        +      },
        +      "strikePrice": {
        +        "type": "number"
        +      },
        +      "targetPct": {
        +        "description": "0..1 of post-event fully diluted, used when countMode=\"percent\".",
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "option_pool"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "shares"
        +    ],
        +    "type": "object"
        +  },
        +  "PricedRoundEvent": {
        +    "description": "A priced equity round: new money buys newly issued preferred.",
        +    "properties": {
        +      "investments": {
        +        "items": {
        +          "properties": {
        +            "amount": {
        +              "type": "number"
        +            },
        +            "antiDilution": {
        +              "enum": [
        +                "weighted-average",
        +                "full-ratchet"
        +              ]
        +            },
        +            "antiDilutionMethod": {
        +              "description": "Defaults to \"conversion-ratio\".",
        +              "enum": [
        +                "conversion-ratio",
        +                "new-shares"
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "proRata": {
        +              "description": "If true, amount is back-solved to hold pre-round ownership; match by id.",
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "amount"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "poolMode": {
        +        "description": "Legacy. Prefer pools[].",
        +        "enum": [
        +          "pre",
        +          "post",
        +          "custom"
        +        ]
        +      },
        +      "poolPostPct": {
        +        "description": "Legacy. Prefer pools[].",
        +        "type": "number"
        +      },
        +      "pools": {
        +        "description": "Option pool top-ups for the round (preferred over the legacy targetPoolPct trio).",
        +        "items": {
        +          "properties": {
        +            "countMode": {
        +              "description": "Defaults to \"percent\".",
        +              "enum": [
        +                "shares",
        +                "percent"
        +              ]
        +            },
        +            "label": {
        +              "type": "string"
        +            },
        +            "mode": {
        +              "description": "\"pre\" dilutes existing only; \"post\" dilutes new money too.",
        +              "enum": [
        +                "pre",
        +                "post"
        +              ]
        +            },
        +            "pct": {
        +              "description": "0..1 of post-money fully diluted, when countMode=\"percent\".",
        +              "type": "number"
        +            },
        +            "poolId": {
        +              "description": "Set to track this pool separately (its own cap-table row).",
        +              "type": "string"
        +            },
        +            "shares": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "mode"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "preMoneyValuation": {
        +        "type": "number"
        +      },
        +      "targetPoolPct": {
        +        "description": "Legacy. Prefer pools[].",
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "priced_round"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "preMoneyValuation",
        +      "investments"
        +    ],
        +    "type": "object"
        +  },
        +  "ResultResponse": {
        +    "properties": {
        +      "data": {
        +        "properties": {
        +          "result": {
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "meta": {
        +        "properties": {
        +          "keyName": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "SecondarySaleEvent": {
        +    "description": "Transfer existing shares from one holder to another.",
        +    "properties": {
        +      "class": {
        +        "description": "Defaults to \"common\".",
        +        "enum": [
        +          "common",
        +          "preferred",
        +          "option-pool",
        +          "warrant"
        +        ]
        +      },
        +      "fromId": {
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "round": {
        +        "description": "Which series the shares come from (e.g. \"Series A\").",
        +        "type": "string"
        +      },
        +      "shares": {
        +        "type": "number"
        +      },
        +      "toId": {
        +        "type": "string"
        +      },
        +      "toName": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "secondary_sale"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "fromId",
        +      "toId",
        +      "toName",
        +      "shares"
        +    ],
        +    "type": "object"
        +  },
        +  "WarrantRoundEvent": {
        +    "description": "Issue warrants (right to buy shares at a set price); counts toward fully diluted now.",
        +    "properties": {
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "warrant_round"
        +      },
        +      "warrants": {
        +        "items": {
        +          "properties": {
        +            "countMode": {
        +              "enum": [
        +                "shares",
        +                "value"
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "parValue": {
        +              "type": "number"
        +            },
        +            "priceDiscount": {
        +              "description": "0..1 discount on the source round price.",
        +              "type": "number"
        +            },
        +            "priceFromRound": {
        +              "description": "Source round label to price off, when variable.",
        +              "type": "string"
        +            },
        +            "purchaseClass": {
        +              "enum": [
        +                "common",
        +                "preferred"
        +              ]
        +            },
        +            "purchasePrice": {
        +              "type": "number"
        +            },
        +            "purchaseRound": {
        +              "description": "For a preferred warrant, the series it targets.",
        +              "type": "string"
        +            },
        +            "shares": {
        +              "description": "When countMode=\"shares\".",
        +              "type": "number"
        +            },
        +            "totalValue": {
        +              "description": "When countMode=\"value\": shares = totalValue / purchasePrice.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "purchaseClass",
        +            "countMode"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "warrants"
        +    ],
        +    "type": "object"
        +  },
        +  "WaterfallComputeRequest": {
        +    "properties": {
        +      "exitValuation": {
        +        "description": "Total exit proceeds to distribute.",
        +        "type": "number"
        +      },
        +      "model": {
        +        "additionalProperties": true,
        +        "description": "Exit-waterfall model: preferred series, common holders, options, warrants, convertibles.",
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "model",
        +      "exitValuation"
        +    ],
        +    "type": "object"
        +  }
        +}
      • changedInput schema / properties / events / description
        Previous value: -"Ordered cap-table events. Each has a \"type\" (common_issuance, priced_round, convertible_round, option_pool, option_grant, warrant_round, secondary_sale, manual_issuance) and a \"label\", plus type-specific fields. Example: [{\"type\":\"common_issuance\",\"label\":\"Founders\",\"grants\":[{\"id\":\"f\",\"name\":\"Founder\",\"shares\":8000000,\"kind\":\"founder\"}]}]."New value: +"Ordered list of cap-table events to fold."
      • addedInput schema / properties / events / items / $ref
        Added value: +"#/definitions/CapTableEvent"
      • removedInput schema / properties / events / items / type
        Removed value: -"object"
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Optional retry key; reuse only with identical input.",
        +  "type": "string"
        +}
    • Changedexit_waterfall_compute4 fields changed
      • addedInput schema / definitions
        Added value: +{
        +  "ApiKey": {
        +    "properties": {
        +      "created_at": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "key_prefix": {
        +        "description": "First chars of the token, for display.",
        +        "type": "string"
        +      },
        +      "last_used_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "revoked_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "CapTableEvent": {
        +    "description": "One cap-table event, discriminated by `type`. Pass events in chronological order.",
        +    "discriminator": {
        +      "mapping": {
        +        "common_issuance": "#/components/schemas/CommonIssuanceEvent",
        +        "convertible_round": "#/components/schemas/ConvertibleRoundEvent",
        +        "manual_issuance": "#/components/schemas/ManualIssuanceEvent",
        +        "option_grant": "#/components/schemas/OptionGrantEvent",
        +        "option_pool": "#/components/schemas/OptionPoolEvent",
        +        "priced_round": "#/components/schemas/PricedRoundEvent",
        +        "secondary_sale": "#/components/schemas/SecondarySaleEvent",
        +        "warrant_round": "#/components/schemas/WarrantRoundEvent"
        +      },
        +      "propertyName": "type"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/definitions/CommonIssuanceEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/OptionPoolEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/SecondarySaleEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/OptionGrantEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/ManualIssuanceEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/ConvertibleRoundEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/WarrantRoundEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/PricedRoundEvent"
        +      }
        +    ]
        +  },
        +  "CommonIssuanceEvent": {
        +    "description": "Issue common stock (founders, employees).",
        +    "properties": {
        +      "grants": {
        +        "items": {
        +          "properties": {
        +            "id": {
        +              "type": "string"
        +            },
        +            "kind": {
        +              "enum": [
        +                "founder",
        +                "employee"
        +              ]
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "shares": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "kind",
        +            "shares"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "common_issuance"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "grants"
        +    ],
        +    "type": "object"
        +  },
        +  "ComputeRequest": {
        +    "properties": {
        +      "events": {
        +        "description": "Ordered list of cap-table events to fold.",
        +        "items": {
        +          "$ref": "#/definitions/CapTableEvent"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "events"
        +    ],
        +    "type": "object"
        +  },
        +  "ComputeResponse": {
        +    "properties": {
        +      "data": {
        +        "properties": {
        +          "final": {
        +            "description": "The final cap-table state.",
        +            "type": "object"
        +          },
        +          "snapshots": {
        +            "description": "One snapshot per event, in order.",
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "meta": {
        +        "properties": {
        +          "keyName": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "ConvertibleRoundEvent": {
        +    "description": "Issue SAFEs or notes; they convert to preferred at the next priced round.",
        +    "properties": {
        +      "convertibles": {
        +        "items": {
        +          "properties": {
        +            "accruedInterest": {
        +              "type": "number"
        +            },
        +            "capType": {
        +              "enum": [
        +                "pre-money",
        +                "post-money",
        +                "post-money-fixed",
        +                "post-money-fixed-after"
        +              ]
        +            },
        +            "conversionDate": {
        +              "description": "ISO date. Notes only.",
        +              "type": "string"
        +            },
        +            "dilutionMode": {
        +              "description": "Defaults to \"existing-only\".",
        +              "enum": [
        +                "existing-only",
        +                "all"
        +              ]
        +            },
        +            "discount": {
        +              "description": "0..1.",
        +              "type": "number"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "interestRate": {
        +              "description": "Annual fraction (0.05 = 5%). Notes only.",
        +              "type": "number"
        +            },
        +            "investmentDate": {
        +              "description": "ISO date. Notes only.",
        +              "type": "string"
        +            },
        +            "kind": {
        +              "enum": [
        +                "safe",
        +                "note"
        +              ]
        +            },
        +            "mfn": {
        +              "type": "boolean"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "principal": {
        +              "type": "number"
        +            },
        +            "valuationCap": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "kind",
        +            "principal"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "convertible_round"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "convertibles"
        +    ],
        +    "type": "object"
        +  },
        +  "CreateKeyRequest": {
        +    "properties": {
        +      "name": {
        +        "description": "Label for the key, written into the audit trail.",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "Error": {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "code": {
        +            "enum": [
        +              "unauthorized",
        +              "payment_required",
        +              "validation_failed",
        +              "engine_error",
        +              "method_not_allowed",
        +              "internal_error"
        +            ],
        +            "type": "string"
        +          },
        +          "details": {},
        +          "message": {
        +            "type": "string"
        +          },
        +          "retryable": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message",
        +          "retryable"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "FundComputeRequest": {
        +    "properties": {
        +      "inputs": {
        +        "additionalProperties": true,
        +        "description": "Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers.",
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "inputs"
        +    ],
        +    "type": "object"
        +  },
        +  "ManualIssuanceEvent": {
        +    "description": "Escape hatch: issue exact shares for custom arrangements.",
        +    "properties": {
        +      "issuances": {
        +        "items": {
        +          "properties": {
        +            "class": {
        +              "enum": [
        +                "common",
        +                "preferred",
        +                "option-pool",
        +                "warrant"
        +              ]
        +            },
        +            "countMode": {
        +              "description": "Defaults to \"shares\".",
        +              "enum": [
        +                "shares",
        +                "percent"
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "issuePrice": {
        +              "type": "number"
        +            },
        +            "kind": {
        +              "enum": [
        +                "founder",
        +                "employee",
        +                "investor",
        +                "pool"
        +              ]
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "pctBasis": {
        +              "description": "Defaults to \"fully-diluted\".",
        +              "enum": [
        +                "fully-diluted",
        +                "issued"
        +              ]
        +            },
        +            "shares": {
        +              "type": "number"
        +            },
        +            "targetPct": {
        +              "description": "0..1, used when countMode=\"percent\".",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "kind",
        +            "class",
        +            "shares"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "manual_issuance"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "issuances"
        +    ],
        +    "type": "object"
        +  },
        +  "OptionGrantEvent": {
        +    "description": "Grant options to people from one pool (fully-diluted-neutral).",
        +    "properties": {
        +      "grants": {
        +        "items": {
        +          "properties": {
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "shares": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "shares"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "poolId": {
        +        "description": "Pool id to grant from; omit to draw the common pool.",
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "option_grant"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "grants"
        +    ],
        +    "type": "object"
        +  },
        +  "OptionPoolEvent": {
        +    "description": "Create or expand an option pool (shares authorized, not granted).",
        +    "properties": {
        +      "countMode": {
        +        "description": "Defaults to \"shares\".",
        +        "enum": [
        +          "shares",
        +          "percent"
        +        ]
        +      },
        +      "id": {
        +        "description": "Pool id, so an option_grant can name which pool it draws from.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "shares": {
        +        "type": "number"
        +      },
        +      "strikePrice": {
        +        "type": "number"
        +      },
        +      "targetPct": {
        +        "description": "0..1 of post-event fully diluted, used when countMode=\"percent\".",
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "option_pool"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "shares"
        +    ],
        +    "type": "object"
        +  },
        +  "PricedRoundEvent": {
        +    "description": "A priced equity round: new money buys newly issued preferred.",
        +    "properties": {
        +      "investments": {
        +        "items": {
        +          "properties": {
        +            "amount": {
        +              "type": "number"
        +            },
        +            "antiDilution": {
        +              "enum": [
        +                "weighted-average",
        +                "full-ratchet"
        +              ]
        +            },
        +            "antiDilutionMethod": {
        +              "description": "Defaults to \"conversion-ratio\".",
        +              "enum": [
        +                "conversion-ratio",
        +                "new-shares"
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "proRata": {
        +              "description": "If true, amount is back-solved to hold pre-round ownership; match by id.",
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "amount"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "poolMode": {
        +        "description": "Legacy. Prefer pools[].",
        +        "enum": [
        +          "pre",
        +          "post",
        +          "custom"
        +        ]
        +      },
        +      "poolPostPct": {
        +        "description": "Legacy. Prefer pools[].",
        +        "type": "number"
        +      },
        +      "pools": {
        +        "description": "Option pool top-ups for the round (preferred over the legacy targetPoolPct trio).",
        +        "items": {
        +          "properties": {
        +            "countMode": {
        +              "description": "Defaults to \"percent\".",
        +              "enum": [
        +                "shares",
        +                "percent"
        +              ]
        +            },
        +            "label": {
        +              "type": "string"
        +            },
        +            "mode": {
        +              "description": "\"pre\" dilutes existing only; \"post\" dilutes new money too.",
        +              "enum": [
        +                "pre",
        +                "post"
        +              ]
        +            },
        +            "pct": {
        +              "description": "0..1 of post-money fully diluted, when countMode=\"percent\".",
        +              "type": "number"
        +            },
        +            "poolId": {
        +              "description": "Set to track this pool separately (its own cap-table row).",
        +              "type": "string"
        +            },
        +            "shares": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "mode"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "preMoneyValuation": {
        +        "type": "number"
        +      },
        +      "targetPoolPct": {
        +        "description": "Legacy. Prefer pools[].",
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "priced_round"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "preMoneyValuation",
        +      "investments"
        +    ],
        +    "type": "object"
        +  },
        +  "ResultResponse": {
        +    "properties": {
        +      "data": {
        +        "properties": {
        +          "result": {
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "meta": {
        +        "properties": {
        +          "keyName": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "SecondarySaleEvent": {
        +    "description": "Transfer existing shares from one holder to another.",
        +    "properties": {
        +      "class": {
        +        "description": "Defaults to \"common\".",
        +        "enum": [
        +          "common",
        +          "preferred",
        +          "option-pool",
        +          "warrant"
        +        ]
        +      },
        +      "fromId": {
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "round": {
        +        "description": "Which series the shares come from (e.g. \"Series A\").",
        +        "type": "string"
        +      },
        +      "shares": {
        +        "type": "number"
        +      },
        +      "toId": {
        +        "type": "string"
        +      },
        +      "toName": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "secondary_sale"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "fromId",
        +      "toId",
        +      "toName",
        +      "shares"
        +    ],
        +    "type": "object"
        +  },
        +  "WarrantRoundEvent": {
        +    "description": "Issue warrants (right to buy shares at a set price); counts toward fully diluted now.",
        +    "properties": {
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "warrant_round"
        +      },
        +      "warrants": {
        +        "items": {
        +          "properties": {
        +            "countMode": {
        +              "enum": [
        +                "shares",
        +                "value"
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "parValue": {
        +              "type": "number"
        +            },
        +            "priceDiscount": {
        +              "description": "0..1 discount on the source round price.",
        +              "type": "number"
        +            },
        +            "priceFromRound": {
        +              "description": "Source round label to price off, when variable.",
        +              "type": "string"
        +            },
        +            "purchaseClass": {
        +              "enum": [
        +                "common",
        +                "preferred"
        +              ]
        +            },
        +            "purchasePrice": {
        +              "type": "number"
        +            },
        +            "purchaseRound": {
        +              "description": "For a preferred warrant, the series it targets.",
        +              "type": "string"
        +            },
        +            "shares": {
        +              "description": "When countMode=\"shares\".",
        +              "type": "number"
        +            },
        +            "totalValue": {
        +              "description": "When countMode=\"value\": shares = totalValue / purchasePrice.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "purchaseClass",
        +            "countMode"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "warrants"
        +    ],
        +    "type": "object"
        +  },
        +  "WaterfallComputeRequest": {
        +    "properties": {
        +      "exitValuation": {
        +        "description": "Total exit proceeds to distribute.",
        +        "type": "number"
        +      },
        +      "model": {
        +        "additionalProperties": true,
        +        "description": "Exit-waterfall model: preferred series, common holders, options, warrants, convertibles.",
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "model",
        +      "exitValuation"
        +    ],
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Optional retry key; reuse only with identical input.",
        +  "type": "string"
        +}
      • addedInput schema / properties / model / additionalProperties
        Added value: +true
      • changedInput schema / properties / model / description
        Previous value: -"Waterfall model: { common: [...], preferred: [...], options?, warrants?, convertibles? }. See list_concepts (\"waterfall\") for the structure."New value: +"Exit-waterfall model: preferred series, common holders, options, warrants, convertibles."
    • Changedfund_economics_compute4 fields changed
      • addedInput schema / definitions
        Added value: +{
        +  "ApiKey": {
        +    "properties": {
        +      "created_at": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "key_prefix": {
        +        "description": "First chars of the token, for display.",
        +        "type": "string"
        +      },
        +      "last_used_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "revoked_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "CapTableEvent": {
        +    "description": "One cap-table event, discriminated by `type`. Pass events in chronological order.",
        +    "discriminator": {
        +      "mapping": {
        +        "common_issuance": "#/components/schemas/CommonIssuanceEvent",
        +        "convertible_round": "#/components/schemas/ConvertibleRoundEvent",
        +        "manual_issuance": "#/components/schemas/ManualIssuanceEvent",
        +        "option_grant": "#/components/schemas/OptionGrantEvent",
        +        "option_pool": "#/components/schemas/OptionPoolEvent",
        +        "priced_round": "#/components/schemas/PricedRoundEvent",
        +        "secondary_sale": "#/components/schemas/SecondarySaleEvent",
        +        "warrant_round": "#/components/schemas/WarrantRoundEvent"
        +      },
        +      "propertyName": "type"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/definitions/CommonIssuanceEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/OptionPoolEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/SecondarySaleEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/OptionGrantEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/ManualIssuanceEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/ConvertibleRoundEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/WarrantRoundEvent"
        +      },
        +      {
        +        "$ref": "#/definitions/PricedRoundEvent"
        +      }
        +    ]
        +  },
        +  "CommonIssuanceEvent": {
        +    "description": "Issue common stock (founders, employees).",
        +    "properties": {
        +      "grants": {
        +        "items": {
        +          "properties": {
        +            "id": {
        +              "type": "string"
        +            },
        +            "kind": {
        +              "enum": [
        +                "founder",
        +                "employee"
        +              ]
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "shares": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "kind",
        +            "shares"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "common_issuance"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "grants"
        +    ],
        +    "type": "object"
        +  },
        +  "ComputeRequest": {
        +    "properties": {
        +      "events": {
        +        "description": "Ordered list of cap-table events to fold.",
        +        "items": {
        +          "$ref": "#/definitions/CapTableEvent"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "events"
        +    ],
        +    "type": "object"
        +  },
        +  "ComputeResponse": {
        +    "properties": {
        +      "data": {
        +        "properties": {
        +          "final": {
        +            "description": "The final cap-table state.",
        +            "type": "object"
        +          },
        +          "snapshots": {
        +            "description": "One snapshot per event, in order.",
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "meta": {
        +        "properties": {
        +          "keyName": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "ConvertibleRoundEvent": {
        +    "description": "Issue SAFEs or notes; they convert to preferred at the next priced round.",
        +    "properties": {
        +      "convertibles": {
        +        "items": {
        +          "properties": {
        +            "accruedInterest": {
        +              "type": "number"
        +            },
        +            "capType": {
        +              "enum": [
        +                "pre-money",
        +                "post-money",
        +                "post-money-fixed",
        +                "post-money-fixed-after"
        +              ]
        +            },
        +            "conversionDate": {
        +              "description": "ISO date. Notes only.",
        +              "type": "string"
        +            },
        +            "dilutionMode": {
        +              "description": "Defaults to \"existing-only\".",
        +              "enum": [
        +                "existing-only",
        +                "all"
        +              ]
        +            },
        +            "discount": {
        +              "description": "0..1.",
        +              "type": "number"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "interestRate": {
        +              "description": "Annual fraction (0.05 = 5%). Notes only.",
        +              "type": "number"
        +            },
        +            "investmentDate": {
        +              "description": "ISO date. Notes only.",
        +              "type": "string"
        +            },
        +            "kind": {
        +              "enum": [
        +                "safe",
        +                "note"
        +              ]
        +            },
        +            "mfn": {
        +              "type": "boolean"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "principal": {
        +              "type": "number"
        +            },
        +            "valuationCap": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "kind",
        +            "principal"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "convertible_round"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "convertibles"
        +    ],
        +    "type": "object"
        +  },
        +  "CreateKeyRequest": {
        +    "properties": {
        +      "name": {
        +        "description": "Label for the key, written into the audit trail.",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "Error": {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "code": {
        +            "enum": [
        +              "unauthorized",
        +              "payment_required",
        +              "validation_failed",
        +              "engine_error",
        +              "method_not_allowed",
        +              "internal_error"
        +            ],
        +            "type": "string"
        +          },
        +          "details": {},
        +          "message": {
        +            "type": "string"
        +          },
        +          "retryable": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message",
        +          "retryable"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "FundComputeRequest": {
        +    "properties": {
        +      "inputs": {
        +        "additionalProperties": true,
        +        "description": "Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers.",
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "inputs"
        +    ],
        +    "type": "object"
        +  },
        +  "ManualIssuanceEvent": {
        +    "description": "Escape hatch: issue exact shares for custom arrangements.",
        +    "properties": {
        +      "issuances": {
        +        "items": {
        +          "properties": {
        +            "class": {
        +              "enum": [
        +                "common",
        +                "preferred",
        +                "option-pool",
        +                "warrant"
        +              ]
        +            },
        +            "countMode": {
        +              "description": "Defaults to \"shares\".",
        +              "enum": [
        +                "shares",
        +                "percent"
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "issuePrice": {
        +              "type": "number"
        +            },
        +            "kind": {
        +              "enum": [
        +                "founder",
        +                "employee",
        +                "investor",
        +                "pool"
        +              ]
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "pctBasis": {
        +              "description": "Defaults to \"fully-diluted\".",
        +              "enum": [
        +                "fully-diluted",
        +                "issued"
        +              ]
        +            },
        +            "shares": {
        +              "type": "number"
        +            },
        +            "targetPct": {
        +              "description": "0..1, used when countMode=\"percent\".",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "kind",
        +            "class",
        +            "shares"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "manual_issuance"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "issuances"
        +    ],
        +    "type": "object"
        +  },
        +  "OptionGrantEvent": {
        +    "description": "Grant options to people from one pool (fully-diluted-neutral).",
        +    "properties": {
        +      "grants": {
        +        "items": {
        +          "properties": {
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "shares": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "shares"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "poolId": {
        +        "description": "Pool id to grant from; omit to draw the common pool.",
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "option_grant"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "grants"
        +    ],
        +    "type": "object"
        +  },
        +  "OptionPoolEvent": {
        +    "description": "Create or expand an option pool (shares authorized, not granted).",
        +    "properties": {
        +      "countMode": {
        +        "description": "Defaults to \"shares\".",
        +        "enum": [
        +          "shares",
        +          "percent"
        +        ]
        +      },
        +      "id": {
        +        "description": "Pool id, so an option_grant can name which pool it draws from.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "shares": {
        +        "type": "number"
        +      },
        +      "strikePrice": {
        +        "type": "number"
        +      },
        +      "targetPct": {
        +        "description": "0..1 of post-event fully diluted, used when countMode=\"percent\".",
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "option_pool"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "shares"
        +    ],
        +    "type": "object"
        +  },
        +  "PricedRoundEvent": {
        +    "description": "A priced equity round: new money buys newly issued preferred.",
        +    "properties": {
        +      "investments": {
        +        "items": {
        +          "properties": {
        +            "amount": {
        +              "type": "number"
        +            },
        +            "antiDilution": {
        +              "enum": [
        +                "weighted-average",
        +                "full-ratchet"
        +              ]
        +            },
        +            "antiDilutionMethod": {
        +              "description": "Defaults to \"conversion-ratio\".",
        +              "enum": [
        +                "conversion-ratio",
        +                "new-shares"
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "proRata": {
        +              "description": "If true, amount is back-solved to hold pre-round ownership; match by id.",
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "amount"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "poolMode": {
        +        "description": "Legacy. Prefer pools[].",
        +        "enum": [
        +          "pre",
        +          "post",
        +          "custom"
        +        ]
        +      },
        +      "poolPostPct": {
        +        "description": "Legacy. Prefer pools[].",
        +        "type": "number"
        +      },
        +      "pools": {
        +        "description": "Option pool top-ups for the round (preferred over the legacy targetPoolPct trio).",
        +        "items": {
        +          "properties": {
        +            "countMode": {
        +              "description": "Defaults to \"percent\".",
        +              "enum": [
        +                "shares",
        +                "percent"
        +              ]
        +            },
        +            "label": {
        +              "type": "string"
        +            },
        +            "mode": {
        +              "description": "\"pre\" dilutes existing only; \"post\" dilutes new money too.",
        +              "enum": [
        +                "pre",
        +                "post"
        +              ]
        +            },
        +            "pct": {
        +              "description": "0..1 of post-money fully diluted, when countMode=\"percent\".",
        +              "type": "number"
        +            },
        +            "poolId": {
        +              "description": "Set to track this pool separately (its own cap-table row).",
        +              "type": "string"
        +            },
        +            "shares": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "mode"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "preMoneyValuation": {
        +        "type": "number"
        +      },
        +      "targetPoolPct": {
        +        "description": "Legacy. Prefer pools[].",
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "priced_round"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "preMoneyValuation",
        +      "investments"
        +    ],
        +    "type": "object"
        +  },
        +  "ResultResponse": {
        +    "properties": {
        +      "data": {
        +        "properties": {
        +          "result": {
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "meta": {
        +        "properties": {
        +          "keyName": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "SecondarySaleEvent": {
        +    "description": "Transfer existing shares from one holder to another.",
        +    "properties": {
        +      "class": {
        +        "description": "Defaults to \"common\".",
        +        "enum": [
        +          "common",
        +          "preferred",
        +          "option-pool",
        +          "warrant"
        +        ]
        +      },
        +      "fromId": {
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "round": {
        +        "description": "Which series the shares come from (e.g. \"Series A\").",
        +        "type": "string"
        +      },
        +      "shares": {
        +        "type": "number"
        +      },
        +      "toId": {
        +        "type": "string"
        +      },
        +      "toName": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "secondary_sale"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "fromId",
        +      "toId",
        +      "toName",
        +      "shares"
        +    ],
        +    "type": "object"
        +  },
        +  "WarrantRoundEvent": {
        +    "description": "Issue warrants (right to buy shares at a set price); counts toward fully diluted now.",
        +    "properties": {
        +      "label": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "warrant_round"
        +      },
        +      "warrants": {
        +        "items": {
        +          "properties": {
        +            "countMode": {
        +              "enum": [
        +                "shares",
        +                "value"
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "parValue": {
        +              "type": "number"
        +            },
        +            "priceDiscount": {
        +              "description": "0..1 discount on the source round price.",
        +              "type": "number"
        +            },
        +            "priceFromRound": {
        +              "description": "Source round label to price off, when variable.",
        +              "type": "string"
        +            },
        +            "purchaseClass": {
        +              "enum": [
        +                "common",
        +                "preferred"
        +              ]
        +            },
        +            "purchasePrice": {
        +              "type": "number"
        +            },
        +            "purchaseRound": {
        +              "description": "For a preferred warrant, the series it targets.",
        +              "type": "string"
        +            },
        +            "shares": {
        +              "description": "When countMode=\"shares\".",
        +              "type": "number"
        +            },
        +            "totalValue": {
        +              "description": "When countMode=\"value\": shares = totalValue / purchasePrice.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "purchaseClass",
        +            "countMode"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "label",
        +      "warrants"
        +    ],
        +    "type": "object"
        +  },
        +  "WaterfallComputeRequest": {
        +    "properties": {
        +      "exitValuation": {
        +        "description": "Total exit proceeds to distribute.",
        +        "type": "number"
        +      },
        +      "model": {
        +        "additionalProperties": true,
        +        "description": "Exit-waterfall model: preferred series, common holders, options, warrants, convertibles.",
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "model",
        +      "exitValuation"
        +    ],
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Optional retry key; reuse only with identical input.",
        +  "type": "string"
        +}
      • addedInput schema / properties / inputs / additionalProperties
        Added value: +true
      • changedInput schema / properties / inputs / description
        Previous value: -"Fund inputs: committed capital, fees, portfolio construction, carry tiers. See list_concepts and the Fund Economics template for fields."New value: +"Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers."
    • Addedget_account_access
    • Addedget_account_usage
  12. 5 tool updates
    • Addedcap_table_compute
    • Addedexit_waterfall_compute
    • Addedfund_economics_compute
    • Addedget_access
    • Addedlist_models
  13. 5 tool updates
    • Changedget_checks1 field changed
      • changedInput schema / properties / template_name / enum
        Previous value: -[
        -  "standard",
        -  "cap_table",
        -  "venture_fund",
        -  "runway",
        -  "all"
        -]New value: +[
        +  "standard",
        +  "cap_table",
        +  "venture_fund",
        +  "venture_fund_quarterly",
        +  "runway",
        +  "saas",
        +  "ecommerce",
        +  "unit_economics",
        +  "fund_economics",
        +  "fund_economics_tool_web",
        +  "venture_valuation",
        +  "all"
        +]
    • Addedget_concept
    • Changedget_context1 field changed
      • changedInput schema / properties / template_name / enum
        Previous value: -[
        -  "standard",
        -  "cap_table",
        -  "venture_fund",
        -  "runway"
        -]New value: +[
        +  "standard",
        +  "cap_table",
        +  "venture_fund",
        +  "venture_fund_quarterly",
        +  "runway",
        +  "saas",
        +  "ecommerce",
        +  "unit_economics",
        +  "fund_economics",
        +  "fund_economics_tool_web",
        +  "venture_valuation"
        +]
    • Changedget_prompts1 field changed
      • changedInput schema / properties / template_name / enum
        Previous value: -[
        -  "standard",
        -  "cap_table",
        -  "venture_fund",
        -  "runway"
        -]New value: +[
        +  "standard",
        +  "cap_table",
        +  "venture_fund",
        +  "venture_fund_quarterly",
        +  "runway",
        +  "saas",
        +  "ecommerce",
        +  "unit_economics",
        +  "fund_economics",
        +  "fund_economics_tool_web",
        +  "venture_valuation"
        +]
    • Addedlist_concepts
  14. 4 tool updates
    • First observedget_best_practices
    • First observedget_checks
    • First observedget_context
    • First observedget_prompts

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables synthesis of multi-tab financial models with circular-reference detection, formula dependency DAG compilation (SUMIFS, XLOOKUP, CAGR, NPV), and deterministic preview cell matrix evaluation through MCP.
    7
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server that provides tools, resources, and prompts for financial analysis using the Financial Modeling Prep API.
    51
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables agents to synthesize multi-tab enterprise spreadsheet financial models, detect circular references, compile formula dependency DAGs with functions like SUMIFS/XLOOKUP/CAGR/NPV, and evaluate deterministic preview cell matrices.
    7
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to perform multi-stage residual income projections, discounting, and enterprise value bridging analysis using standardized financial data inputs.
    1
    37 PyPI
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources