propose_takeoff
Open a named proposal batch before committing shapes, so related takeoff measurements attach to one identity and the estimator accepts the whole batch with a single decision.
Instructions
Open a PROPOSAL — a named batch of the shapes you are about to commit, with one identity (#365). Every shape you commit from here on (measure_polygon, measure_line, measure_surface, place_count, the sweeps, the derives, cut_out) attaches to it until you open another proposal or withdraw this one; the estimator then sees ONE Accept pill for the whole batch instead of one per shape — a forty-room pass becomes one decision, not forty. Use it BEFORE the work, the way an estimator titles a takeoff before tracing: "Level 2 rooms per finish schedule A-601", "Base derived from CPT-1 rooms". label is what the estimator reads on the pill; rationale is what decided the batch (the schedule row, the sheet, the rule) — both required, neither is a comment. Nothing here commits geometry or changes a total: an empty proposal is just a heading. The batch is what revise_proposal replaces and withdraw_proposal removes; shapes the estimator has already accepted leave the batch and no agent verb reaches them. takeoff_summary carries the ledger (pending / accepted / withdrawn per batch).
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"label": "<label>",
"rationale": "<rationale>"
},
"name": "propose_takeoff"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | The batch's title, as the estimator will read it on the Accept pill | |
| rationale | Yes | What decided the batch — cite the schedule row, sheet, or rule |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | ||
| label | Yes | ||
| rationale | Yes | ||
| proposal_id | Yes |