export_takeoff
Exports the complete OpenTakeoff takeoff canvas annotations payload as importable JSON, returning it inline or writing it to a specified file path.
Instructions
The full "opentakeoff.takeoff_canvas.v1" annotations payload — exactly what the app autosaves, importable by it. Returned inline; pass path to also write it to disk as JSON. Coordinates are image px at render scale 2.0: PDF pt × 2, origin top-left, y down (the browser canvas's native space). Sheet payloads carry dims in both px and pt.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "export_takeoff"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | File path to write the payload to | |
| overwrite | No | Replace the file at path even when it is not an OpenTakeoff export. Off by default: re-exporting over a previous export of your own already overwrites without this, so you only need it to deliberately destroy an unrelated file. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rfis | No | Live RFI records; withdrawn tombstones are omitted | |
| units | No | Present only for a metric project; absent means imperial — the app's own diff-only convention | |
| schema | Yes | ||
| shapes | Yes | ||
| sheets | Yes | ||
| markups | Yes | ||
| approvals | No | Approval-family records (#176) — the estimator's APPROVED seals and the agent's verdict marks {id, actor, ts, sheet_id, at:[nx,ny], shape_id?, text?}. Present only when any exist (the canvas payload's own convention), so a verdict-free export stays byte-identical | |
| proposals | No | Proposal batches (#365) — present only when any exist. Shapes reference them by origin.proposal_id; the canvas shows one Accept per batch | |
| conditions | Yes | ||
| last_group | Yes | ||
| sheet_tabs | Yes | ||
| client_info | No | Who the proposal is for (client_name, client_address, reference) — present once set_estimate_settings or an import set it | |
| sheet_group | Yes | ||
| bid_proposal | No | The project's proposal layout and text — present once set | |
| project_name | Yes | ||
| sheet_levels | No | Present only when a sheet carries a level label (the app omits it when empty) | |
| estimate_settings | No | The project's markups (tax_pct, overhead_pct, profit_pct, profit_mode) — present once set | |
| condition_edit_proposals | No | Pending condition-edit diffs (#365) — present only when any exist. Nothing on the condition changes until the estimator accepts in the canvas |