crm_advance_stage
Advance a deal to the next stage in the pipeline, with an optional note.
Input schema
{
"type": "object",
"properties": {
"deal_id": { "type": "string" },
"to_stage": { "type": "string", "enum": ["qualified", "proposal", "won", "lost"] },
"note": { "type": "string" }
},
"required": ["deal_id", "to_stage"]
}
Output schema
{
"type": "object",
"properties": {
"deal_id": { "type": "string" },
"from_stage": { "type": "string" },
"to_stage": { "type": "string" },
"updated_at": { "type": "string", "format": "date-time" }
}
}
Example invocation
{
"tool": "crm_advance_stage",
"arguments": {
"deal_id": "D-2026-00084",
"to_stage": "proposal",
"note": "Pricing sent 2026-04-25, two-week follow-up window."
}
}
Example response
{
"deal_id": "D-2026-00084",
"from_stage": "qualified",
"to_stage": "proposal",
"updated_at": "2026-04-25T08:41:00Z"
}
State transitions are logged on the deal and in run_ledger. Transitions to won or lost are terminal — reopen via crm_upsert_contact + a new deal, not an advance call.