convert_safe
Converts a SAFE holder into preferred at the next priced round. Computes effectivePrice = min(price × (1-discount), cap / preMoneyShares) and sharesIssued = invested / effectivePrice. PURE by default: does not modify the schema. Pass persist=true to update the holder (securityType→preferred, shares ← sharesIssued). Pass roundId to attach the conversion to a round (set as securityRound, as the SAFE conversion built into simulate_round already does) — without it, the converted holder is counted forever in the pre-money base of every later round.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| safeId | Yes | ID of the SAFE-type holder to convert. | |
| persist | No | If true (default false), updates the SAFE holder: securityType→preferred and shares ← sharesIssued (+ securityRound ← roundId if provided). Otherwise: pure simulation. | |
| roundId | No | ID of the round to attach this conversion to — set as-is as kindMetadata.securityRound of the converted holder if persist=true, exactly what the automatic SAFE conversion built into simulate_round already does. OMITTED: the converted holder carries NO securityRound, and is then counted as part of the 'pre-money' base of EVERY later round (whatever the actual date of the conversion) — fill it in as soon as the round this conversion belongs to exists (or will exist) as a captable block. | |
| expectedProjectId | No | 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. | |
| nextRoundPricePerShare | Yes | PricePerShare of the next priced round (in the current currency). |