Skip to main content
Glama

simulate_round

Destructive

Simulates a funding round (Seed / Series A / ...). Computes pricePerShare, newSharesIssued, postMoneyValuation, and the dilution per existing holder. PURE by default: does not modify the schema. Pass persist=true to materialize the round + the investor as new blocks. Use this for what-if scenarios before showing the user a 'shall I formalize?' question.

Input Schema

NameRequiredDescriptionDefault
dateYesDate of the round (YYYY-MM-DD).
persistNoIf true (default false), actually creates the round and the holder in the schema. Otherwise: pure simulation, no persisted change.
roundIdYesID of the future round (UUID or kebab-case).
investorYes
roundNameYesName of the round (e.g. 'Seed', 'Series A').
amountRaisedYesAmount raised.
antiDilutionNoAnti-dilution protection of the earlier preferred on a DOWN-round (round price < their issue price). 'full-ratchet' resets their conversion price to the round price; 'weighted-average' (NVCA default) applies a softer blended adjustment. They give DIFFERENT founder dilutions. REFUSED (explicit error) with esopRefreshPct on a down-round where a ratchet actually applies — the two derive pricePerShare by incompatible formulas; make two separate calls.
poolHolderIdNoID of the pool holder to extend (default: the existing pool, otherwise '<roundId>-esop' is created).
esopRefreshPctNoOption pool refresh, in % of the POST-money, carved out of the PRE-money: it dilutes the founders, NOT the investor (standard term sheet convention). E.g. 10 for a 10% post-money pool. Omit for no pool.
poolHolderNameNoName of the pool if it is created (default 'Option Pool').
expectedProjectIdNoUUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted.
preMoneyValuationYesPre-money valuation in the current currency (e.g. EUR).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed19 schema fields changed
    • changedInput schema / properties / amountRaised / description
      Previous value: -"Montant levé."New value: +"Amount raised."
    • changedInput schema / properties / antiDilution / description
      Previous value: -"Protection anti-dilution des preferred antérieurs sur un DOWN-round (prix du tour < leur prix d'émission). 'full-ratchet' reset leur prix de conversion au prix du tour ; 'weighted-average' (défaut NVCA) applique un ajustement mixte plus doux. Donnent des dilutions fondateur DIFFÉRENTES. REFUSÉ (erreur explicite) avec esopRefreshPct sur un down-round où un ratchet s'applique réellement — les deux dérivent pricePerShare par des formules incompatibles ; fais deux appels séparés."New value: +"Anti-dilution protection of the earlier preferred on a DOWN-round (round price < their issue price). 'full-ratchet' resets their conversion price to the round price; 'weighted-average' (NVCA default) applies a softer blended adjustment. They give DIFFERENT founder dilutions. REFUSED (explicit error) with esopRefreshPct on a down-round where a ratchet actually applies — the two derive pricePerShare by incompatible formulas; make two separate calls."
    • changedInput schema / properties / date / description
      Previous value: -"Date du round (YYYY-MM-DD)."New value: +"Date of the round (YYYY-MM-DD)."
    • changedInput schema / properties / esopRefreshPct / description
      Previous value: -"Refresh du pool d'options, en % du POST-money, creusé dans le PRE-money : il dilue les fondateurs, PAS l'investisseur (convention term sheet standard). Ex: 10 pour un pool de 10% post-money. Omettre pour aucun pool."New value: +"Option pool refresh, in % of the POST-money, carved out of the PRE-money: it dilutes the founders, NOT the investor (standard term sheet convention). E.g. 10 for a 10% post-money pool. Omit for no pool."
    • changedInput schema / properties / expectedProjectId / description
      Previous value: -"UUID du projet visé par CET appel. Cible RÉELLEMENT ce projet au lieu du projet de session. Refusé sans rien modifier si l'accès n'est pas accordé."New value: +"UUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted."
    • changedInput schema / properties / investor / properties / holderType / description
      Previous value: -"Type de holder (défaut 'investor')."New value: +"Type of holder (default 'investor')."
    • changedInput schema / properties / investor / properties / id / description
      Previous value: -"ID de la nouvelle cellule holder à créer pour cet investisseur (kebab-case, ex: 'investor-acme-ventures')."New value: +"ID of the new holder block to create for this investor (kebab-case, e.g. 'investor-acme-ventures')."
    • changedInput schema / properties / investor / properties / liquidationPreference / description
      Previous value: -"Préférence de liquidation (multiplier × montant investi)."New value: +"Liquidation preference (multiplier × amount invested)."
    • changedInput schema / properties / investor / properties / liquidationPreference / properties / dividendRatePct / description
      Previous value: -"Taux de dividende cumulatif, en % annuel (ex: 8 pour 8%/an, défaut NVCA). Court en intérêt SIMPLE sur le montant investi entre la date du round et la date de sortie, ajouté par-dessus la préférence. Omettre pour aucun dividende."New value: +"Cumulative dividend rate, in % per year (e.g. 8 for 8%/year, NVCA default). Accrues at SIMPLE interest on the amount invested between the round date and the exit date, added on top of the preference. Omit for no dividend."
    • changedInput schema / properties / investor / properties / liquidationPreference / properties / multiplier / description
      Previous value: -"Multiple de préférence de liquidation (ex: 1 = 1×, 2 = 2×) — montant récupéré en priorité = multiplier × montant investi."New value: +"Liquidation preference multiple (e.g. 1 = 1×, 2 = 2×) — amount recovered first = multiplier × amount invested."
    • changedInput schema / properties / investor / properties / liquidationPreference / properties / participating / description
      Previous value: -"true = preferred \"participating\" (préférence de liquidation PUIS pro-rata résiduel avec les common) ; false = \"non-participating\" (max entre préférence et conversion pro-rata en common, jamais les deux)."New value: +"true = \"participating\" preferred (liquidation preference THEN residual pro rata with the common) ; false = \"non-participating\" (max of the preference and the pro rata conversion into common, and not both)."
    • changedInput schema / properties / investor / properties / name / description
      Previous value: -"Nom affiché de l'investisseur (ex: 'Acme Ventures')."New value: +"Displayed name of the investor (e.g. 'Acme Ventures')."
    • changedInput schema / properties / investor / properties / securityType / description
      Previous value: -"Type d'instrument émis (défaut 'preferred')."New value: +"Type of instrument issued (default 'preferred')."
    • changedInput schema / properties / persist / description
      Previous value: -"Si true (défaut false), crée effectivement le round et le holder dans le schema. Sinon: simulation pure, aucun changement persisté."New value: +"If true (default false), actually creates the round and the holder in the schema. Otherwise: pure simulation, no persisted change."
    • changedInput schema / properties / poolHolderId / description
      Previous value: -"ID du holder pool à étendre (défaut: le pool existant, sinon '<roundId>-esop' créé)."New value: +"ID of the pool holder to extend (default: the existing pool, otherwise '<roundId>-esop' is created)."
    • changedInput schema / properties / poolHolderName / description
      Previous value: -"Nom du pool s'il est créé (défaut 'Option Pool')."New value: +"Name of the pool if it is created (default 'Option Pool')."
    • changedInput schema / properties / preMoneyValuation / description
      Previous value: -"Valorisation pré-money en monnaie courante (ex: EUR)."New value: +"Pre-money valuation in the current currency (e.g. EUR)."
    • changedInput schema / properties / roundId / description
      Previous value: -"ID du futur round (UUID ou kebab-case)."New value: +"ID of the future round (UUID or kebab-case)."
    • changedInput schema / properties / roundName / description
      Previous value: -"Nom du round (ex: 'Seed', 'Series A')."New value: +"Name of the round (e.g. 'Seed', 'Series A')."
  2. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true; the description adds important nuance that the default is pure and that persist=true creates the round and investor as new blocks. It does not cover refusal/error conditions, but those are documented in the schema.

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

Conciseness5/5

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

The description is front-loaded with the core action and default behavior, then adds only relevant operational context. Every sentence earns its place with no filler.

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

Completeness4/5

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

For a complex 12-parameter tool with nested investor terms and no output schema, the description clarifies the default pure behavior, the persist mutation path, and the key computed metrics. The rich schema covers most remaining detail, though some edge-case rules such as antiDilution/esopRefreshPct refusal are only in the schema.

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 92%, so the input schema already documents nearly all 12 parameters in detail. The description adds context about computed values but does not add parameter-level meaning beyond the schema.

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

Purpose4/5

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

The description gives a specific verb and resource: 'Simulates a funding round' and lists the computed outputs. It clearly separates simulation from formalization via persist=true, though it does not explicitly differentiate itself from the sibling simulate_exit tool.

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

Usage Guidelines4/5

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

It states when to use the tool: 'for what-if scenarios before showing the user a shall I formalize question,' and explains persist=true for materialization. It does not name alternatives or exclusions, so it stops short of a fully explicit routing guide.

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.