crm_advance_stage

Advance a deal to the next stage in the pipeline, with an optional note.

Category
CRM
Stability
Beta
Version
v1
Auth
cf-access

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.