One of the most common War Room jobs: after a call or a message, you want to add context to a contact (a note + tags) and move their opportunity into the correct pipeline and stage. You describe it in plain English — Ambrose resolves the contact, looks up the pipeline/stage IDs by name, writes the context, and moves the card.
What to type
Take contact Maria Lopez. She just finished her ACA enrollment call and is ready to enroll.
Add a note summarizing the call, tag her "aca-ready", and move her opportunity into the
"Enrollment" pipeline at the "Application Started" stage.
What happens
- Ambrose routes to Jordan (CRO).
- Resolve the contact —
ghl_contact_searchby name (or use the contact_id directly if you have it) → Maria's contactId. - Read current state —
ghl_contact_get+ghl_opportunities_listfind her existing opportunity, if any. - Resolve pipeline + stage by name —
ghl_pipelines_listmaps "Enrollment" → pipelineId and "Application Started" → stageId. You name them in plain English; the spoke does the ID lookup so you never paste raw IDs. - Write the context —
ghl_contact_add_note(the call summary) andghl_contact_add_tags("aca-ready"). - Move the card —
ghl_opportunity_move_stagewith the resolved pipelineId + stageId. If she has no opportunity yet, Jordan creates one in the target pipeline/stage withghl_opportunity_createinstead. - (Optional) set status —
ghl_opportunity_set_status(open / won / lost / abandoned).
Approval — nothing moves without you
Stage moves and writes are write actions, so by default they stage for approval right in the War Room with Allow / Deny / Always Allow buttons. Click Approve and the change lands in GHL. If you do this constantly, set those tools to Allow on the Tools page so they run without prompting.
Sample output
Maria Lopez (contact 8aF…21)
✓ Note added: "ACA enrollment call 6/11 — ready to enroll, wants a Silver HMO,
confirmed income $40k, household of 2."
✓ Tag added: aca-ready
✓ Opportunity "Maria Lopez — ACA 2026" moved:
Pipeline: New Leads → Enrollment
Stage: Contacted → Application Started
Status: open
Move many at once
Move every contact tagged "called-today" who replied that they're ready into the
Enrollment pipeline at "Application Started", add a one-line note on each, and give me a list.
Jordan lists the matching contacts and opportunities, resolves the pipeline + stage once, then loops the note + move per contact. Each write still respects your Allow/Ask setting, and you get a summary table at the end.
Other context moves you can ask for
- "Move everyone in Application Started who hasn't replied in 7 days back to Follow-up and tag them
stale." →ghl_opportunities_list+ghl_opportunity_move_stage+ghl_contact_add_tags. - "Mark Maria's opportunity won and add a note with her policy number." →
ghl_opportunity_set_status+ghl_contact_add_note. - "Create an opportunity for John Park in the Medicare pipeline at New Lead, value $0, and assign it to me." →
ghl_opportunity_create.
Tools used
ghl_contact_search, ghl_contact_get, ghl_pipelines_list, ghl_opportunities_list, ghl_opportunity_create, ghl_opportunity_move_stage, ghl_opportunity_set_status, ghl_contact_add_note, ghl_contact_add_tags.
Wiring
GHL integration with a PIT that has Opportunities, Contacts, and Notes scope. The same flow works against a user-installed GHL MCP — call its opportunities_* tools instead.