propose_captable_import
Imports a cap table from a CSV of holders (a spreadsheet saved as CSV), WRITING NOTHING to the schema — files a reviewable proposal (change_proposals, same pattern as propose_changes) that a human then accepts or refuses, row by row, on the review screen. This is the repository's doctrine for any financial data: no direct write. The column mapping (name/shares/type/round…) is guessed automatically from the headers; mapping corrects it. The response carries the review link, meant for the user: nothing is applied without their action on that link.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| csv | Yes | Raw CSV content (a spreadsheet's "Save as CSV" export — a single sheet, not a multi-sheet workbook). | |
| title | No | Title of the proposal (default: "Import cap table (CSV)"). | |
| mapping | No | Column → role mapping, to correct the automatic guess — one entry per column to correct (`column` = 0-based index). Omitted = guessed from the headers, like the web screen. | |
| idempotencyKey | Yes | REQUIRED. A stable key derived from the file (e.g. its name + its date). Replaying with the same key returns the proposal ALREADY created instead of creating a second one. | |
| 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. |