Hemrock MCP
Server Details
Hemrock financial modeling prompts: context primers, task prompts, checks, and best practices.
- Status
- Healthy
- Uptime
- 100.0% over 48 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 13 tools
The three compute tools target distinct financial domains, and the knowledge tools map to separate layers (context, prompts, checks, concepts). The main ambiguity is among access/pricing tools: get_access, get_account_access, and list_models overlap slightly on price/checkout information, though the descriptions clarify their different scopes.
All names use snake_case, and most retrieval tools follow a clear get_/list_ pattern. The compute tools use noun_compute instead of verb_noun, creating two mild naming families, but the convention is still predictable and readable.
With 13 tools, the set is well-scoped: three compute engines, three access/usage tools, and seven knowledge/context tools. Each tool appears to earn its place and the count stays within a reasonable range for the server's purpose.
The server covers its stated domain well: cap table, exit waterfall, and fund economics calculations, plus access checks, usage reporting, concepts, prompts, best practices, checks, and models. No obvious lifecycle gap or dead end is apparent for a calculation-and-guidance MCP.
Available Tools
13 toolscap_table_computeCompute a cap tableARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | ||
| idempotency_key | No | Optional retry key; reuse only with identical input. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint=true the description discloses the monetization model ($20/yr), that the 6,000-calculation allowance is shared with exit_waterfall_compute, the action_required outcome (not signed in, no purchase, allowance used) and the required response to it ('relay it with its links and offer to retry; never skip silently'). These auth/quota behaviors cannot be inferred from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger and the outcome, then supporting rationale, then payment/error handling. Dense but each sentence carries actionable information; only slight risk of over-length for a two-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still states the return shape (fully diluted ownership after each event plus the final cap table), the payment/quota context, and the action_required handling, so an agent has everything needed to call and act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; the description enumerates the event categories (founders, pools, rounds, SAFEs, notes, warrants) which maps to the discriminated event types and reinforces chronological ordering, but says nothing about idempotency_key and adds no field-level syntax beyond what the schema already carries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (computes the cap table / fully diluted ownership) and enumerates the exact financing constructs it handles: founder splits, option pools, priced rounds, SAFEs/notes, warrants, pro-rata, dilution. An agent can distinguish it from exit_waterfall_compute and fund_economics_compute without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use trigger ('whenever the user asks who owns what after a financing'), an explicit alternative to avoid ('prefer this over doing the arithmetic yourself'), and a reason (SAFE/note conversion math is error-prone). It also names the sibling whose quota it shares.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exit_waterfall_computeCompute an exit waterfallARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| exitValuation | Yes | ||
| idempotency_key | No | Optional retry key; reuse only with identical input. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses auth requirements (lifetime free credits or paid access), the shared allowance ($20/year, 6,000 calculations), and error-handling behavior (relay action_required with links, offer retry, never skip silently). This adds substantial operational context the annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The primary use case is front-loaded in the first sentence, followed by output, differentiation, and account/error handling. Every sentence earns its place, though the allowance/pricing detail is slightly verbose for a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex nested-input tool with no output schema, the description covers the trigger, the inputs conceptually, the shape of the return (proceeds by holder and class with convert decisions), and the auth/error path. It is nearly complete, with only field-level parameter detail left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 33% schema coverage the description must compensate, and it does map conceptually ("takes the cap stack and an exit value" → model/exitValuation, plus the field concepts like participation caps and seniority). However it never maps to parameter names or gives format/syntax detail, so the deep nested model remains largely dependent on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (compute an exit waterfall) and the exact scenarios it serves: exit, acquisition, liquidation. It enumerates the concepts covered (liquidation preferences, participating vs non-participating, participation caps, seniority, convert decisions, options/warrants in/out of the money) and states inputs and outputs, which clearly distinguishes it from cap_table_compute and fund_economics_compute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-to-use trigger ("Use whenever the user asks what each holder gets at an exit, acquisition or liquidation") and routes the agent away from hand calculation ("Prefer this over doing it yourself: the convert decision is circular"). There is no explicit when-not or a named sibling alternative, but the usage context is well defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fund_economics_computeCompute fund economicsARead-onlyInspect
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 aggregate capital, fees, investable capital and gross/net multiples. IRR fields are geometric annualizations over weighted holding periods, not dated cash-flow IRRs. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | Yes | ||
| idempotency_key | No | Optional retry key; reuse only with identical input. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds substantial non-obvious behavior: account/entitlement requirements, the action_required contract (not signed in, no purchase, allowance used) with an instruction to relay links and offer retry, and the IRR semantics caveat (geometric annualization over weighted holding periods, NOT dated cash-flow IRR). This is exactly the kind of context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the compute scope, then outputs, then the IRR caveat, then auth/error handling. Every sentence carries information, though the auth/purchase paragraph is dense and slightly long relative to the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex nested-input tool with no output schema, the description covers the key return values (aggregate capital, fees, investable capital, gross/net multiples) and the auth/error paths. It stops short of explaining the full FundResult surface (dpi/tvpi/rvpi, per-tier breakouts), but it is adequate to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema coverage is 50% and the deeply nested inputs object (portfolio, returnTiers, expense lines, mode toggles) is undocumented in both schema and description. The description does add one useful rule for the inputs parameter ('start from the defaults and change only what the user specifies') and lists the outputs computed, but it does not map guidance to specific fields, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('compute fund economics') and enumerates the exact levers handled: fund size, management fees and step-downs, carry, investment period, recycling, reserves, deployment pace, net returns to LPs. This clearly distinguishes it from the sibling compute tools (cap_table_compute, exit_waterfall_compute).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger condition ('Use whenever the user asks how a venture fund's terms play out') and gives the input convention 'start from the defaults and change only what the user specifies.' It does not explicitly name or exclude the sibling compute tools, so the routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accessGet access to a Hemrock modelARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Model key to check access for. |
TDQS
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.
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.
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.
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.
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.
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 accessARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 usageARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Optional UTC end date (YYYY-MM-DD). | |
| from | No | Optional UTC start date (YYYY-MM-DD). |
TDQS
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.
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.
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.
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.
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.
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 practicesARead-onlyInspect
Returns Hemrock's financial modeling best practices and design principles for a given topic. Useful as background context for AI interactions.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Optional topic filter. Returns all best practices if omitted. |
TDQS
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.
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.
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.
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.
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.
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 checksARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| template_name | Yes | The template to get checks for. Use "all" for universal checks only. |
TDQS
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.
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.
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.
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.
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.
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 conceptARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The concept slug, from list_concepts (e.g. "waterfall", "anti-dilution"). |
TDQS
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.
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.
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.
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.
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.
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 contextARead-onlyInspect
Returns the universal context-setting primer for Hemrock models, plus an optional template-specific addendum. Always run this first before any other prompts.
| Name | Required | Description | Default |
|---|---|---|---|
| template_name | No | Optional. If provided, appends a template-specific primer to the universal context. |
TDQS
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.
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.
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.
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.
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.
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 promptsARead-onlyInspect
Returns task-specific Layer 2 prompts for a given template and task type. These are ready-to-use prompts for common modeling tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| task_type | No | Optional task type filter. | |
| template_name | Yes | The Hemrock template being used. |
TDQS
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.
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.
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.
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.
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.
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.
list_conceptsList Hemrock modeling conceptsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional. Filter to concepts whose tags contain this string (e.g. "cap tables"). | |
| template_name | No | Optional. Filter to concepts relevant to a specific Hemrock template. |
TDQS
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.
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.
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.
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.
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.
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 enginesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
cap_table_compute7 fields changed- added
Input schema / definitions / ProductAccess / properties / active / descriptionAdded value: +"Active paid term; use state/freeRemaining for trial access." - added
Input schema / definitions / ProductAccess / properties / freeRemainingAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Input schema / definitions / ProductAccess / properties / nextActionAdded value: +{ + "type": "string" +} - added
Input schema / definitions / ProductAccess / properties / paidExpirationAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Input schema / definitions / ProductAccess / properties / paidRemainingAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Input schema / definitions / ProductAccess / properties / sourceAdded value: +{ + "enum": [ + "free", + "paid" + ], + "type": "string" +} - added
Input schema / definitions / ProductAccess / properties / stateAdded value: +{ + "enum": [ + "free_available", + "free_exhausted", + "paid_active", + "paid_expired", + "paid_quota_exhausted" + ], + "type": "string" +}
- Changed
exit_waterfall_compute7 fields changed- added
Input schema / definitions / ProductAccess / properties / active / descriptionAdded value: +"Active paid term; use state/freeRemaining for trial access." - added
Input schema / definitions / ProductAccess / properties / freeRemainingAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Input schema / definitions / ProductAccess / properties / nextActionAdded value: +{ + "type": "string" +} - added
Input schema / definitions / ProductAccess / properties / paidExpirationAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Input schema / definitions / ProductAccess / properties / paidRemainingAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Input schema / definitions / ProductAccess / properties / sourceAdded value: +{ + "enum": [ + "free", + "paid" + ], + "type": "string" +} - added
Input schema / definitions / ProductAccess / properties / stateAdded value: +{ + "enum": [ + "free_available", + "free_exhausted", + "paid_active", + "paid_expired", + "paid_quota_exhausted" + ], + "type": "string" +}
- Changed
fund_economics_compute7 fields changed- added
Input schema / definitions / ProductAccess / properties / active / descriptionAdded value: +"Active paid term; use state/freeRemaining for trial access." - added
Input schema / definitions / ProductAccess / properties / freeRemainingAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Input schema / definitions / ProductAccess / properties / nextActionAdded value: +{ + "type": "string" +} - added
Input schema / definitions / ProductAccess / properties / paidExpirationAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Input schema / definitions / ProductAccess / properties / paidRemainingAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Input schema / definitions / ProductAccess / properties / sourceAdded value: +{ + "enum": [ + "free", + "paid" + ], + "type": "string" +} - added
Input schema / definitions / ProductAccess / properties / stateAdded value: +{ + "enum": [ + "free_available", + "free_exhausted", + "paid_active", + "paid_expired", + "paid_quota_exhausted" + ], + "type": "string" +}
3 tool updates
- Changed
cap_table_compute50 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / definitions / AccessResponseAdded 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" +} - removed
Input schema / definitions / ApiKeyRemoved 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" -} - removed
Input schema / definitions / CapTableEventRemoved 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" - } - ] -} - added
Input schema / definitions / CapTableSnapshotAdded 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" +} - added
Input schema / definitions / ComputeRequest / additionalPropertiesAdded value: +false - removed
Input schema / definitions / ComputeRequest / properties / events / descriptionRemoved value: -"Ordered list of cap-table events to fold." - removed
Input schema / definitions / ComputeRequest / properties / events / items / $refRemoved value: -"#/definitions/CapTableEvent" - added
Input schema / definitions / ComputeRequest / properties / events / items / descriptionAdded value: +"One cap-table event, discriminated by `type`. Pass events in chronological order." - added
Input schema / definitions / ComputeRequest / properties / events / items / discriminatorAdded 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" +} - added
Input schema / definitions / ComputeRequest / properties / events / items / oneOfAdded 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" + } +] - added
Input schema / definitions / ComputeRequest / properties / events / maxItemsAdded value: +200 - added
Input schema / definitions / ComputeResponse / properties / data / properties / final / $refAdded value: +"#/definitions/CapTableSnapshot" - removed
Input schema / definitions / ComputeResponse / properties / data / properties / final / descriptionRemoved value: -"The final cap-table state." - removed
Input schema / definitions / ComputeResponse / properties / data / properties / final / typeRemoved value: -"object" - added
Input schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / $refAdded value: +"#/definitions/CapTableSnapshot" - removed
Input schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / typeRemoved value: -"object" - removed
Input schema / definitions / CreateKeyRequestRemoved value: -{ - "properties": { - "name": { - "description": "Label for the key, written into the audit trail.", - "type": "string" - } - }, - "type": "object" -} - added
Input schema / definitions / DailyUsageAdded 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" +} - changed
Input schema / definitions / Error / properties / error / properties / code / enumPrevious 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" +] - added
Input schema / definitions / FundComputeRequest / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / definitions / FundComputeRequest / additionalPropertiesAdded value: +false - changed
Input schema / definitions / FundComputeRequest / properties / inputs / additionalPropertiesPrevious value: -trueNew value: +false - removed
Input schema / definitions / FundComputeRequest / properties / inputs / descriptionRemoved value: -"Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers." - added
Input schema / definitions / FundComputeRequest / properties / inputs / propertiesAdded 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" + } +} - added
Input schema / definitions / FundComputeRequest / properties / inputs / requiredAdded value: +[ + "committedCapital", + "gpCommitPct", + "gpCommitCountedTowardInvested", + "organizationalExpenses", + "operationalExpensesAnnual", + "mgmtFeePct", + "recycledCapitalPct", + "carryPct", + "newInvestmentPeriodYears", + "mgmtFeesPeriodYears", + "portfolio", + "returnTiers" +] - added
Input schema / definitions / FundResultAdded 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" +} - added
Input schema / definitions / LineTotalsAdded value: +{ + "properties": { + "gp": { + "type": "number" + }, + "lp": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "total", + "lp", + "gp" + ], + "type": "object" +} - added
Input schema / definitions / MonthlyUsageAdded 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" +} - added
Input schema / definitions / ProductAccessAdded 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" +} - added
Input schema / definitions / ResultResponse / properties / data / properties / result / oneOfAdded value: +[ + { + "$ref": "#/definitions/WaterfallResult" + }, + { + "$ref": "#/definitions/FundResult" + } +] - removed
Input schema / definitions / ResultResponse / properties / data / properties / result / typeRemoved value: -"object" - added
Input schema / definitions / UsagePeriodAdded 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" +} - added
Input schema / definitions / WaterfallComputeRequest / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / definitions / WaterfallComputeRequest / additionalPropertiesAdded value: +false - removed
Input schema / definitions / WaterfallComputeRequest / properties / exitValuation / descriptionRemoved value: -"Total exit proceeds to distribute." - added
Input schema / definitions / WaterfallComputeRequest / properties / exitValuation / maximumAdded value: +1000000000000000 - added
Input schema / definitions / WaterfallComputeRequest / properties / exitValuation / minimumAdded value: +0 - changed
Input schema / definitions / WaterfallComputeRequest / properties / model / additionalPropertiesPrevious value: -trueNew value: +false - removed
Input schema / definitions / WaterfallComputeRequest / properties / model / descriptionRemoved value: -"Exit-waterfall model: preferred series, common holders, options, warrants, convertibles." - added
Input schema / definitions / WaterfallComputeRequest / properties / model / propertiesAdded 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" + } +} - added
Input schema / definitions / WaterfallComputeRequest / properties / model / requiredAdded value: +[ + "common", + "preferred" +] - changed
Input schema / definitions / WaterfallComputeRequest / requiredPrevious value: -[ - "model", - "exitValuation" -]New value: +[ + "exitValuation", + "model" +] - added
Input schema / definitions / WaterfallResultAdded 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" +} - removed
Input schema / properties / events / descriptionRemoved value: -"Ordered list of cap-table events to fold." - removed
Input schema / properties / events / items / $refRemoved value: -"#/definitions/CapTableEvent" - added
Input schema / properties / events / items / descriptionAdded value: +"One cap-table event, discriminated by `type`. Pass events in chronological order." - added
Input schema / properties / events / items / discriminatorAdded 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" +} - added
Input schema / properties / events / items / oneOfAdded 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" + } +] - added
Input schema / properties / events / maxItemsAdded value: +200
- Changed
exit_waterfall_compute53 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / definitions / AccessResponseAdded 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" +} - removed
Input schema / definitions / ApiKeyRemoved 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" -} - removed
Input schema / definitions / CapTableEventRemoved 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" - } - ] -} - added
Input schema / definitions / CapTableSnapshotAdded 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" +} - added
Input schema / definitions / ComputeRequest / additionalPropertiesAdded value: +false - removed
Input schema / definitions / ComputeRequest / properties / events / descriptionRemoved value: -"Ordered list of cap-table events to fold." - removed
Input schema / definitions / ComputeRequest / properties / events / items / $refRemoved value: -"#/definitions/CapTableEvent" - added
Input schema / definitions / ComputeRequest / properties / events / items / descriptionAdded value: +"One cap-table event, discriminated by `type`. Pass events in chronological order." - added
Input schema / definitions / ComputeRequest / properties / events / items / discriminatorAdded 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" +} - added
Input schema / definitions / ComputeRequest / properties / events / items / oneOfAdded 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" + } +] - added
Input schema / definitions / ComputeRequest / properties / events / maxItemsAdded value: +200 - added
Input schema / definitions / ComputeResponse / properties / data / properties / final / $refAdded value: +"#/definitions/CapTableSnapshot" - removed
Input schema / definitions / ComputeResponse / properties / data / properties / final / descriptionRemoved value: -"The final cap-table state." - removed
Input schema / definitions / ComputeResponse / properties / data / properties / final / typeRemoved value: -"object" - added
Input schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / $refAdded value: +"#/definitions/CapTableSnapshot" - removed
Input schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / typeRemoved value: -"object" - removed
Input schema / definitions / CreateKeyRequestRemoved value: -{ - "properties": { - "name": { - "description": "Label for the key, written into the audit trail.", - "type": "string" - } - }, - "type": "object" -} - added
Input schema / definitions / DailyUsageAdded 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" +} - changed
Input schema / definitions / Error / properties / error / properties / code / enumPrevious 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" +] - added
Input schema / definitions / FundComputeRequest / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / definitions / FundComputeRequest / additionalPropertiesAdded value: +false - changed
Input schema / definitions / FundComputeRequest / properties / inputs / additionalPropertiesPrevious value: -trueNew value: +false - removed
Input schema / definitions / FundComputeRequest / properties / inputs / descriptionRemoved value: -"Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers." - added
Input schema / definitions / FundComputeRequest / properties / inputs / propertiesAdded 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" + } +} - added
Input schema / definitions / FundComputeRequest / properties / inputs / requiredAdded value: +[ + "committedCapital", + "gpCommitPct", + "gpCommitCountedTowardInvested", + "organizationalExpenses", + "operationalExpensesAnnual", + "mgmtFeePct", + "recycledCapitalPct", + "carryPct", + "newInvestmentPeriodYears", + "mgmtFeesPeriodYears", + "portfolio", + "returnTiers" +] - added
Input schema / definitions / FundResultAdded 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" +} - added
Input schema / definitions / LineTotalsAdded value: +{ + "properties": { + "gp": { + "type": "number" + }, + "lp": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "total", + "lp", + "gp" + ], + "type": "object" +} - added
Input schema / definitions / MonthlyUsageAdded 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" +} - added
Input schema / definitions / ProductAccessAdded 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" +} - added
Input schema / definitions / ResultResponse / properties / data / properties / result / oneOfAdded value: +[ + { + "$ref": "#/definitions/WaterfallResult" + }, + { + "$ref": "#/definitions/FundResult" + } +] - removed
Input schema / definitions / ResultResponse / properties / data / properties / result / typeRemoved value: -"object" - added
Input schema / definitions / UsagePeriodAdded 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" +} - added
Input schema / definitions / WaterfallComputeRequest / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / definitions / WaterfallComputeRequest / additionalPropertiesAdded value: +false - removed
Input schema / definitions / WaterfallComputeRequest / properties / exitValuation / descriptionRemoved value: -"Total exit proceeds to distribute." - added
Input schema / definitions / WaterfallComputeRequest / properties / exitValuation / maximumAdded value: +1000000000000000 - added
Input schema / definitions / WaterfallComputeRequest / properties / exitValuation / minimumAdded value: +0 - changed
Input schema / definitions / WaterfallComputeRequest / properties / model / additionalPropertiesPrevious value: -trueNew value: +false - removed
Input schema / definitions / WaterfallComputeRequest / properties / model / descriptionRemoved value: -"Exit-waterfall model: preferred series, common holders, options, warrants, convertibles." - added
Input schema / definitions / WaterfallComputeRequest / properties / model / propertiesAdded 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" + } +} - added
Input schema / definitions / WaterfallComputeRequest / properties / model / requiredAdded value: +[ + "common", + "preferred" +] - changed
Input schema / definitions / WaterfallComputeRequest / requiredPrevious value: -[ - "model", - "exitValuation" -]New value: +[ + "exitValuation", + "model" +] - added
Input schema / definitions / WaterfallResultAdded 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" +} - removed
Input schema / properties / exitValuation / descriptionRemoved value: -"Total exit proceeds to distribute." - added
Input schema / properties / exitValuation / maximumAdded value: +1000000000000000 - added
Input schema / properties / exitValuation / minimumAdded value: +0 - changed
Input schema / properties / model / additionalPropertiesPrevious value: -trueNew value: +false - removed
Input schema / properties / model / descriptionRemoved value: -"Exit-waterfall model: preferred series, common holders, options, warrants, convertibles." - added
Input schema / properties / model / propertiesAdded 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" + } +} - added
Input schema / properties / model / requiredAdded value: +[ + "common", + "preferred" +] - changed
Input schema / requiredPrevious value: -[ - "model", - "exitValuation" -]New value: +[ + "exitValuation", + "model" +]
- Changed
fund_economics_compute49 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / definitions / AccessResponseAdded 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" +} - removed
Input schema / definitions / ApiKeyRemoved 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" -} - removed
Input schema / definitions / CapTableEventRemoved 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" - } - ] -} - added
Input schema / definitions / CapTableSnapshotAdded 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" +} - added
Input schema / definitions / ComputeRequest / additionalPropertiesAdded value: +false - removed
Input schema / definitions / ComputeRequest / properties / events / descriptionRemoved value: -"Ordered list of cap-table events to fold." - removed
Input schema / definitions / ComputeRequest / properties / events / items / $refRemoved value: -"#/definitions/CapTableEvent" - added
Input schema / definitions / ComputeRequest / properties / events / items / descriptionAdded value: +"One cap-table event, discriminated by `type`. Pass events in chronological order." - added
Input schema / definitions / ComputeRequest / properties / events / items / discriminatorAdded 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" +} - added
Input schema / definitions / ComputeRequest / properties / events / items / oneOfAdded 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" + } +] - added
Input schema / definitions / ComputeRequest / properties / events / maxItemsAdded value: +200 - added
Input schema / definitions / ComputeResponse / properties / data / properties / final / $refAdded value: +"#/definitions/CapTableSnapshot" - removed
Input schema / definitions / ComputeResponse / properties / data / properties / final / descriptionRemoved value: -"The final cap-table state." - removed
Input schema / definitions / ComputeResponse / properties / data / properties / final / typeRemoved value: -"object" - added
Input schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / $refAdded value: +"#/definitions/CapTableSnapshot" - removed
Input schema / definitions / ComputeResponse / properties / data / properties / snapshots / items / typeRemoved value: -"object" - removed
Input schema / definitions / CreateKeyRequestRemoved value: -{ - "properties": { - "name": { - "description": "Label for the key, written into the audit trail.", - "type": "string" - } - }, - "type": "object" -} - added
Input schema / definitions / DailyUsageAdded 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" +} - changed
Input schema / definitions / Error / properties / error / properties / code / enumPrevious 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" +] - added
Input schema / definitions / FundComputeRequest / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / definitions / FundComputeRequest / additionalPropertiesAdded value: +false - changed
Input schema / definitions / FundComputeRequest / properties / inputs / additionalPropertiesPrevious value: -trueNew value: +false - removed
Input schema / definitions / FundComputeRequest / properties / inputs / descriptionRemoved value: -"Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers." - added
Input schema / definitions / FundComputeRequest / properties / inputs / propertiesAdded 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" + } +} - added
Input schema / definitions / FundComputeRequest / properties / inputs / requiredAdded value: +[ + "committedCapital", + "gpCommitPct", + "gpCommitCountedTowardInvested", + "organizationalExpenses", + "operationalExpensesAnnual", + "mgmtFeePct", + "recycledCapitalPct", + "carryPct", + "newInvestmentPeriodYears", + "mgmtFeesPeriodYears", + "portfolio", + "returnTiers" +] - added
Input schema / definitions / FundResultAdded 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" +} - added
Input schema / definitions / LineTotalsAdded value: +{ + "properties": { + "gp": { + "type": "number" + }, + "lp": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "total", + "lp", + "gp" + ], + "type": "object" +} - added
Input schema / definitions / MonthlyUsageAdded 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" +} - added
Input schema / definitions / ProductAccessAdded 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" +} - added
Input schema / definitions / ResultResponse / properties / data / properties / result / oneOfAdded value: +[ + { + "$ref": "#/definitions/WaterfallResult" + }, + { + "$ref": "#/definitions/FundResult" + } +] - removed
Input schema / definitions / ResultResponse / properties / data / properties / result / typeRemoved value: -"object" - added
Input schema / definitions / UsagePeriodAdded 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" +} - added
Input schema / definitions / WaterfallComputeRequest / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / definitions / WaterfallComputeRequest / additionalPropertiesAdded value: +false - removed
Input schema / definitions / WaterfallComputeRequest / properties / exitValuation / descriptionRemoved value: -"Total exit proceeds to distribute." - added
Input schema / definitions / WaterfallComputeRequest / properties / exitValuation / maximumAdded value: +1000000000000000 - added
Input schema / definitions / WaterfallComputeRequest / properties / exitValuation / minimumAdded value: +0 - changed
Input schema / definitions / WaterfallComputeRequest / properties / model / additionalPropertiesPrevious value: -trueNew value: +false - removed
Input schema / definitions / WaterfallComputeRequest / properties / model / descriptionRemoved value: -"Exit-waterfall model: preferred series, common holders, options, warrants, convertibles." - added
Input schema / definitions / WaterfallComputeRequest / properties / model / propertiesAdded 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" + } +} - added
Input schema / definitions / WaterfallComputeRequest / properties / model / requiredAdded value: +[ + "common", + "preferred" +] - changed
Input schema / definitions / WaterfallComputeRequest / requiredPrevious value: -[ - "model", - "exitValuation" -]New value: +[ + "exitValuation", + "model" +] - added
Input schema / definitions / WaterfallResultAdded 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" +} - changed
Input schema / properties / inputs / additionalPropertiesPrevious value: -trueNew value: +false - removed
Input schema / properties / inputs / descriptionRemoved value: -"Fund Economics inputs: committed capital, fees, portfolio construction, carry tiers." - added
Input schema / properties / inputs / propertiesAdded 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" + } +} - added
Input schema / properties / inputs / requiredAdded value: +[ + "committedCapital", + "gpCommitPct", + "gpCommitCountedTowardInvested", + "organizationalExpenses", + "operationalExpensesAnnual", + "mgmtFeePct", + "recycledCapitalPct", + "carryPct", + "newInvestmentPeriodYears", + "mgmtFeesPeriodYears", + "portfolio", + "returnTiers" +]
5 tool updates
- Changed
cap_table_compute5 fields changed- added
Input schema / definitionsAdded 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" + } +} - changed
Input schema / properties / events / descriptionPrevious 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." - added
Input schema / properties / events / items / $refAdded value: +"#/definitions/CapTableEvent" - removed
Input schema / properties / events / items / typeRemoved value: -"object" - added
Input schema / properties / idempotency_keyAdded value: +{ + "description": "Optional retry key; reuse only with identical input.", + "type": "string" +}
- Changed
exit_waterfall_compute4 fields changed- added
Input schema / definitionsAdded 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" + } +} - added
Input schema / properties / idempotency_keyAdded value: +{ + "description": "Optional retry key; reuse only with identical input.", + "type": "string" +} - added
Input schema / properties / model / additionalPropertiesAdded value: +true - changed
Input schema / properties / model / descriptionPrevious 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."
- Changed
fund_economics_compute4 fields changed- added
Input schema / definitionsAdded 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" + } +} - added
Input schema / properties / idempotency_keyAdded value: +{ + "description": "Optional retry key; reuse only with identical input.", + "type": "string" +} - added
Input schema / properties / inputs / additionalPropertiesAdded value: +true - changed
Input schema / properties / inputs / descriptionPrevious 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."
- Added
get_account_access - Added
get_account_usage
5 tool updates
- Added
cap_table_compute - Added
exit_waterfall_compute - Added
fund_economics_compute - Added
get_access - Added
list_models
5 tool updates
- Changed
get_checks1 field changed- changed
Input schema / properties / template_name / enumPrevious 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" +]
- Added
get_concept - Changed
get_context1 field changed- changed
Input schema / properties / template_name / enumPrevious 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" +]
- Changed
get_prompts1 field changed- changed
Input schema / properties / template_name / enumPrevious 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" +]
- Added
list_concepts
4 tool updates
- First observed
get_best_practices - First observed
get_checks - First observed
get_context - First observed
get_prompts
Related MCP Connectors
Deterministic company valuation and corporate finance tools for AI agents — IRR, NPV, MOIC, DCF, WACC, enterprise value, EV multiples, CAPM, beta and sensitivity analysis via Model Context Protocol. Useful for financial analysis, equity analysis, quantitative analysis, financial projections, financial formulas and financial modeling.
Structured financial modeling for AI agents: build, version, audit models, export to Excel.
SEC & financial-data MCP: filings, financials, ownership, factors, fund letters, prompts.
Deterministic finance tools for AI agents — IRR, NPV, MOIC, DCF, WACC and sensitivity.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables 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.7MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that provides tools, resources, and prompts for financial analysis using the Financial Modeling Prep API.51MIT
- AlicenseNot gradedqualityBmaintenanceEnables 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.7MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to perform multi-stage residual income projections, discounting, and enterprise value bridging analysis using standardized financial data inputs.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.