Skip to main content
Glama

Lovie Company Formation

Simulate Cap Table Dilution

cap_table_simulate_cap_table_dilution
Read-only

SimulateCapTableDilution runs the SAME engine as CloseCapTableRound against the company's current stakeholders and its outstanding SAFEs, for a raise that does not exist yet — no round, nothing persisted. CALL THIS for "what happens if we raise X at Y", "model dilution", "how much do the founders keep", or any post-money ownership question. Do NOT work the answer out yourself, even when the arithmetic looks simple: two implementations of SAFE conversion produce two different founder percentages and only one of them is right, and a hand-computed cap table presented as fact is the failure this tool exists to prevent. It reads each outstanding SAFE's own valuation cap, discount and MFN from the record — do not ask the user for a cap, and do not offer hypothetical caps; they are already stored. Nor do you need share counts first. Use this for a raise that has no round yet. PreviewCloseCapTableRound requires an existing round and cannot answer the same question.

Input Schema

NameRequiredDescriptionDefault
companyIdYesUUID value wrapper.
newMoneyRaiseNo
optionPoolBasisNo
preMoneyValuationNo
targetOptionPoolPctNo

Output Schema

NameRequiredDescriptionDefault
resultNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / optionPoolBasis
      Added value: +{
      +  "enum": [
      +    "CAP_TABLE_OPTION_POOL_BASIS_UNSPECIFIED",
      +    "CAP_TABLE_OPTION_POOL_BASIS_POST_ROUND",
      +    "CAP_TABLE_OPTION_POOL_BASIS_PRE_MONEY"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / result / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "convertedSafes": {
      -        "items": {
      -          "properties": {
      -            "conversionPrice": {
      -              "type": "string"
      -            },
      -            "effectiveCap": {
      -              "type": "string"
      -            },
      -            "effectiveDiscount": {
      -              "type": "string"
      -            },
      -            "investorId": {
      -              "anyOf": [
      -                {
      -                  "description": "UUID value wrapper.",
      -                  "properties": {
      -                    "value": {
      -                      "format": "uuid",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "method": {
      -              "enum": [
      -                "CAP_TABLE_CONVERSION_METHOD_UNSPECIFIED",
      -                "CAP_TABLE_CONVERSION_METHOD_CAP",
      -                "CAP_TABLE_CONVERSION_METHOD_DISCOUNT",
      -                "CAP_TABLE_CONVERSION_METHOD_BETTER_OF_CAP",
      -                "CAP_TABLE_CONVERSION_METHOD_BETTER_OF_DISCOUNT",
      -                "CAP_TABLE_CONVERSION_METHOD_MFN_ADJUSTED",
      -                "CAP_TABLE_CONVERSION_METHOD_ROUND_PRICE"
      -              ],
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "ownershipPct": {
      -              "type": "string"
      -            },
      -            "shares": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "investorId"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "invariantsHold": {
      -        "type": "boolean"
      -      },
      -      "investorShares": {
      -        "type": "string"
      -      },
      -      "optionPool": {
      -        "anyOf": [
      -          {
      -            "properties": {
      -              "netNewPoolShares": {
      -                "type": "string"
      -              },
      -              "poolPct": {
      -                "type": "string"
      -              },
      -              "poolShares": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "postMoneyValuation": {
      -        "type": "string"
      -      },
      -      "postRoundFdsc": {
      -        "type": "string"
      -      },
      -      "preInvestmentFdsc": {
      -        "type": "string"
      -      },
      -      "preInvestmentShares": {
      -        "type": "string"
      -      },
      -      "pricePerShare": {
      -        "type": "string"
      -      },
      -      "roundId": {
      -        "anyOf": [
      -          {
      -            "description": "UUID value wrapper.",
      -            "properties": {
      -              "value": {
      -                "format": "uuid",
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "snapshots": {
      -        "items": {
      -          "properties": {
      -            "conversionDilution": {
      -              "type": "string"
      -            },
      -            "fullyDilutedShares": {
      -              "type": "string"
      -            },
      -            "ownershipPct": {
      -              "type": "string"
      -            },
      -            "shares": {
      -              "type": "string"
      -            },
      -            "shuffleDilution": {
      -              "type": "string"
      -            },
      -            "stakeholderId": {
      -              "anyOf": [
      -                {
      -                  "description": "UUID value wrapper.",
      -                  "properties": {
      -                    "value": {
      -                      "format": "uuid",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "stakeholderName": {
      -              "type": "string"
      -            },
      -            "stakeholderType": {
      -              "type": "string"
      -            },
      -            "totalRoundDilution": {
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "warnings": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "roundId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "assumptions": {
      +        "items": {
      +          "properties": {
      +            "code": {
      +              "type": "string"
      +            },
      +            "detail": {
      +              "type": "string"
      +            },
      +            "holder": {
      +              "type": "string"
      +            },
      +            "holdingId": {
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "convertedSafes": {
      +        "items": {
      +          "properties": {
      +            "conversionPrice": {
      +              "type": "string"
      +            },
      +            "effectiveCap": {
      +              "type": "string"
      +            },
      +            "effectiveDiscount": {
      +              "type": "string"
      +            },
      +            "investorId": {
      +              "anyOf": [
      +                {
      +                  "description": "UUID value wrapper.",
      +                  "properties": {
      +                    "value": {
      +                      "format": "uuid",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "method": {
      +              "enum": [
      +                "CAP_TABLE_CONVERSION_METHOD_UNSPECIFIED",
      +                "CAP_TABLE_CONVERSION_METHOD_CAP",
      +                "CAP_TABLE_CONVERSION_METHOD_DISCOUNT",
      +                "CAP_TABLE_CONVERSION_METHOD_BETTER_OF_CAP",
      +                "CAP_TABLE_CONVERSION_METHOD_BETTER_OF_DISCOUNT",
      +                "CAP_TABLE_CONVERSION_METHOD_MFN_ADJUSTED",
      +                "CAP_TABLE_CONVERSION_METHOD_ROUND_PRICE"
      +              ],
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "ownershipPct": {
      +              "type": "string"
      +            },
      +            "shares": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "investorId"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "invariantsHold": {
      +        "type": "boolean"
      +      },
      +      "investorShares": {
      +        "type": "string"
      +      },
      +      "optionPool": {
      +        "anyOf": [
      +          {
      +            "properties": {
      +              "netNewPoolShares": {
      +                "type": "string"
      +              },
      +              "poolPct": {
      +                "type": "string"
      +              },
      +              "poolShares": {
      +                "type": "string"
      +              },
      +              "postRoundPoolPct": {
      +                "type": "string"
      +              },
      +              "preMoneyPoolPct": {
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "postMoneyValuation": {
      +        "type": "string"
      +      },
      +      "postRoundFdsc": {
      +        "type": "string"
      +      },
      +      "preInvestmentFdsc": {
      +        "type": "string"
      +      },
      +      "preInvestmentShares": {
      +        "type": "string"
      +      },
      +      "pricePerShare": {
      +        "type": "string"
      +      },
      +      "roundId": {
      +        "anyOf": [
      +          {
      +            "description": "UUID value wrapper.",
      +            "properties": {
      +              "value": {
      +                "format": "uuid",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "snapshots": {
      +        "items": {
      +          "properties": {
      +            "conversionDilution": {
      +              "type": "string"
      +            },
      +            "fullyDilutedShares": {
      +              "type": "string"
      +            },
      +            "ownershipPct": {
      +              "type": "string"
      +            },
      +            "shares": {
      +              "type": "string"
      +            },
      +            "shuffleDilution": {
      +              "type": "string"
      +            },
      +            "stakeholderId": {
      +              "anyOf": [
      +                {
      +                  "description": "UUID value wrapper.",
      +                  "properties": {
      +                    "value": {
      +                      "format": "uuid",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "stakeholderName": {
      +              "type": "string"
      +            },
      +            "stakeholderType": {
      +              "type": "string"
      +            },
      +            "totalRoundDilution": {
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "warnings": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "roundId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/destructiveHint=false, and the description reinforces this with "no round, nothing persisted." It adds genuine context beyond the annotations: SAFE valuation caps, discounts, and MFN are read from stored records, so the user must not be asked for them, and no prior share counts are needed.

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

Conciseness5/5

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

Dense but front-loaded: purpose and mechanism come first, then call triggers, then the anti-hand-computation warning, then the sibling distinction. Every sentence addresses a real decision or failure mode rather than restating structured fields.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. The description is complete for selection and safe invocation of a complex simulation tool; the only gap is coverage of the less-obvious input parameters, which would round it out.

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

Parameters3/5

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

Schema description coverage is low (20%), so the description carries more burden. The "raise X at Y" framing loosely maps to newMoneyRaise and preMoneyValuation, but optionPoolBasis and targetOptionPoolPct are never addressed, nor are the numeric string formats or the required companyId wrapper.

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

Purpose5/5

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

States a specific verb (simulate) and resource (cap table dilution), and grounds it in a concrete mechanism: it runs the same engine as CloseCapTableRound over current stakeholders and outstanding SAFEs for a raise that does not yet exist. It explicitly distinguishes itself from the round-based sibling, so an agent can separate the two without opening either schema.

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

Usage Guidelines5/5

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

Provides explicit call triggers ("what happens if we raise X at Y", "model dilution", "how much do the founders keep"), a when-not (raise with no round yet), and an alternative with its limitation (PreviewCloseCapTableRound requires an existing round and cannot answer the same question). It even instructs against hand-computing the answer, naming the failure mode it prevents.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.