Run Sequence
Flow: Trigger → Detect intent → Resolve board/sequence/contact → Execute → Confirm + report.
Input
- Optional: action + target via argument (e.g., "enroll Acme in welcome sequence").
- If no argument: ask what they want to do.
Output
- List: sequences on a board with status, step count, enrollment counts, analytics.
- Create: new sequence scaffolded via the tool's built-in gate flow (board → steps → email sender if needed), starts INACTIVE.
- Enroll: one or more CRM items enrolled in a sequence; returns succeeded/failed counts.
- Activate/Deactivate: sequence state toggled with confirmation. Deactivate does NOT stop existing enrollments — only blocks new ones.
- Duplicate: copy of a sequence created in INACTIVE state.
- Analyze: per-run + level + step funnel (reply rate, open rate, click-through).
- Contact journey: all sequences a contact is enrolled in, sorted by most recent.
Knowledge
- Sequence states: ACTIVE (enrolling + running), INACTIVE (not enrolling; existing runs continue).
deactivate-sequence ≠ pause — enrolled contacts keep progressing; only new enrollments are blocked.
- No sequence editing tool exists — steps cannot be added/modified via MCP. Direct users to Tools → Sequences in the UI.
get-board-sequences requires a board_id — always resolve the board first.
create-sequence has a built-in gate system: call it with what you have; if anything's missing the tool returns CONFIRMATION_REQUIRED with exact instructions — follow them verbatim, never pre-empt the gates.
enroll-item-in-sequence takes board_id, sequenceId, and itemIds (array of string IDs).
Tools (MCP)
get-board-sequences — list sequences on a board (needs board_id).
get-sequence-analytics — per-run, level, and step analytics for one sequence.
get-contact-journey — all sequences a contact/item is enrolled in (needs board_id + item_id).
enroll-item-in-sequence — enroll one or more items in a sequence.
activate-sequence — INACTIVE → ACTIVE.
deactivate-sequence — ACTIVE → INACTIVE (existing enrollments continue).
duplicate-sequence — copy a sequence; new copy starts INACTIVE.
create-sequence — create a new sequence; call directly with whatever args you have.
get-connected-email-accounts — list linked Gmail/Outlook accounts; used when create-sequence gate requires a sender.
get_user_context — user identity + account.
search / get_board_info / get_board_items_page — resolve boards and items by name.
Cross-skill handoffs
- From daily-briefing: brief can surface sequences with low engagement → suggest
/monday-crm:run-sequence analytics for <name>.
- From meeting-to-opportunity: after logging a new lead, suggest enrolling them in an onboarding sequence.
- To log-activity: after enrolling a contact in a sequence whose first step is a manual call, suggest logging the call outcome.
Step 0: Connector check
- Try
mcp__monday__get_user_context. On error → print install prompt, stop.
- This skill does not pre-check sequence tools — if a sequence tool fails with a permission error in later steps, print: "Sequences may not be enabled on your account. Check Tools → Sequences in monday CRM."
Step 1: Detect intent
Parse the argument/prompt to classify:
| Intent |
Trigger signals |
| list |
"what sequences", "show sequences", "list", no argument |
| create |
"create", "set up", "build", "new sequence", "drip campaign" |
| enroll |
"enroll", "add to sequence", "put in sequence", "start on sequence" |
| activate |
"activate", "turn on", "enable sequence" |
| deactivate |
"deactivate", "turn off", "disable sequence", "stop new enrollments" |
| duplicate |
"duplicate", "copy sequence", "clone" |
| analyze |
"analytics", "how is", "performance", "open rate", "funnel", "reply rate" |
| contact-journey |
"what sequences is", "sequence history for", "enrolled in", "contact journey" |
If ambiguous, ask once:
"What would you like to do with sequences? (list / create / enroll / activate or deactivate / duplicate / analyze / check a contact's history)"
Step 2: Resolve board
Required for: list, enroll, contact-journey. Optional for create (let the gate handle it).
- If user named a board →
mcp__monday__search or get_board_info to resolve it. On ambiguity, present top results and ask.
- If no board named:
- For list: ask "Which board's sequences do you want to see?"
- For create: proceed to Step 4 and let the tool's gate request it.
- For enroll: ask "Which board is this contact/lead on?"
- For contact-journey: ask "Which board is this contact on?"
Step 3: Execute — List
mcp__monday__get-board-sequences({ board_id }).
Format as table:
Sequences on Leads board:
| # | Name | Status | Steps | Enrolled | Reply Rate |
|---|------|--------|-------|----------|------------|
| 1 | Cold outreach Q2 | ACTIVE | 5 | 120 | 12.4% |
| 2 | Welcome — new leads | INACTIVE | 3 | 0 | — |
If empty: "No sequences on this board yet."
Step 4: Execute — Create
Call mcp__monday__create-sequence directly with whatever you have from the user's message. The tool's built-in gates handle missing fields:
board_not_specified gate → follow the returned instructions verbatim: use search to list boards, present as-is, ask user to pick, retry.
steps_not_specified gate → follow the returned instructions verbatim: ask user to build steps one at a time or create empty. Never invent steps.
connections_not_specified gate (triggered when automatic_email steps need sender/emailColumnId) → resolve via get-connected-email-accounts for sender and get_board_info for the email column, then retry.
On success: "Sequence '' created (INACTIVE). Activate it? (yes / later)". If yes → activate-sequence.
Important: Never pre-empt the gates by asking all questions upfront. Call the tool first.
Step 5: Execute — Enroll
- Resolve the sequence:
mcp__monday__get-board-sequences({ board_id }) → present list, ask which sequence if not named.
- Resolve the items: extract from the argument (company/contact names) or ask "Which contacts or leads do you want to enroll?". Use
search or get_board_items_page to get item_ids.
- Confirm sequence is ACTIVE. If INACTIVE: "'' is currently inactive — new enrollments are blocked. Activate it first? (yes / cancel)"
HITL GATE: "Enroll item(s) in ''?" List the items by name. (yes / cancel)
mcp__monday__enroll-item-in-sequence({ board_id, sequenceId, itemIds: ["<id>", ...] }).
- Report: "Enrolled items. Succeeded: . Failed: ."
Step 6: Execute — Activate / Deactivate
- Resolve the sequence (board →
get-board-sequences → pick by name).
- Check current state. Warn on no-ops:
- Activating an ACTIVE sequence → "'' is already active."
- Deactivating an INACTIVE sequence → "'' is already inactive."
HITL GATE:
- Activate: "Activate ''? This enables new enrollments. (yes / cancel)"
- Deactivate: "Deactivate ''? New enrollments will be blocked — contacts already enrolled will keep progressing. (yes / cancel)"
mcp__monday__activate-sequence({ sequenceId }) or mcp__monday__deactivate-sequence({ sequenceId }).
- Report the new state.
Step 7: Execute — Duplicate
- Resolve the sequence (board → list → pick).
HITL GATE: "Duplicate ''? The copy will start as INACTIVE. (yes / cancel)"
mcp__monday__duplicate-sequence({ sequenceId }).
- Report: "Created '' (INACTIVE). Activate it? (yes / later)"
Step 8: Execute — Analyze
- Resolve the sequence (board → list → pick).
mcp__monday__get-sequence-analytics({ sequenceId }).
- Format:
Sequence: "Cold outreach Q2" (ACTIVE)
Level: 450 events · 69% open rate · 23% reply rate · 5.6% click-through
Per-step:
| Step | Sent | Open % | Reply % | CTR % |
|------|------|--------|---------|-------|
| 1 — Email | 450 | 69% | 10% | 2.7% |
| 2 — Email | 405 | 66% | 9.4% | 2.0% |
| 3 — Email | 360 | 55% | 6.1% | 1.4% |
Runs: 12 active · 380 completed · 58 terminated
- Flag drop-offs: if open rate drops >15pp between consecutive email steps, surface it.
- If analytics are empty: "No analytics yet — this sequence hasn't sent any messages."
Step 9: Execute — Contact journey
- Resolve the contact item (search by name →
item_id; ask for board if unclear).
mcp__monday__get-contact-journey({ board_id, item_id }).
- Format:
Sequence history for Acme Corp:
| Sequence | Status | Steps done | Enrolled | Termination |
|----------|--------|-----------|----------|-------------|
| Welcome Q2 | Completed | 5/5 | Jun 10 | Replied |
| Cold outreach | Active | 2/5 | Jun 20 | — |
- If empty: " isn't enrolled in any sequences."
Shared patterns
- HITL gates on all writes (create, enroll, activate, deactivate, duplicate).
- No sequence editing via MCP. If asked to add/edit/remove steps, say: "Step editing isn't available through MCP yet — go to Tools → Sequences in the monday CRM UI."
- Board-first for list/enroll/journey. Always resolve the board before calling tools that need
board_id.
- Follow create-sequence gates verbatim. Call first, handle gates as they come.
Error handling reference
| Failure |
Behavior |
| Connector missing |
Step 0 stops; print install link. |
| Permission error on sequence tools |
Suggest checking CRM Sequences is enabled in account settings. |
| Board not found |
Broaden search; ask user to confirm board name. |
| Sequence not found |
List all on board; ask user to pick. |
| Enroll — sequence INACTIVE |
Offer to activate first. |
| Enroll — partial failure |
Report succeeded and failed item IDs. |
| Analytics empty |
Inform no sends yet. |
| Tool unavailable on connector |
"Sequence tools aren't on the connector yet — check back or use the monday UI." |
| Edit/add-step request |
Redirect to UI; no MCP tool exists for this. |
Completion criteria
1---2name: run-sequence3description: Manage CRM sequences end-to-end — list, create, enroll contacts, activate/deactivate, duplicate, and track performance. Use when someone says "what sequences do I have", "create a welcome sequence", "enroll this contact in a sequence", "add these leads to my nurture sequence", "deactivate the cold outreach sequence", "activate my new sequence", "how is my nurture sequence doing", "show me sequence analytics", "create a drip campaign", "who is enrolled in", "duplicate this sequence", "set up a new outreach flow", "check this contact's sequence history", or "what sequences is this lead in".4---56# Run Sequence78Flow: **Trigger → Detect intent → Resolve board/sequence/contact → Execute → Confirm + report**.910## Input11- Optional: action + target via argument (e.g., "enroll Acme in welcome sequence").12- If no argument: ask what they want to do.1314## Output15- **List:** sequences on a board with status, step count, enrollment counts, analytics.16- **Create:** new sequence scaffolded via the tool's built-in gate flow (board → steps → email sender if needed), starts INACTIVE.17- **Enroll:** one or more CRM items enrolled in a sequence; returns succeeded/failed counts.18- **Activate/Deactivate:** sequence state toggled with confirmation. Deactivate does NOT stop existing enrollments — only blocks new ones.19- **Duplicate:** copy of a sequence created in INACTIVE state.20- **Analyze:** per-run + level + step funnel (reply rate, open rate, click-through).21- **Contact journey:** all sequences a contact is enrolled in, sorted by most recent.2223## Knowledge24- Sequence states: ACTIVE (enrolling + running), INACTIVE (not enrolling; existing runs continue).25- `deactivate-sequence` ≠ pause — enrolled contacts keep progressing; only new enrollments are blocked.26- No sequence editing tool exists — steps cannot be added/modified via MCP. Direct users to Tools → Sequences in the UI.27- `get-board-sequences` requires a `board_id` — always resolve the board first.28- `create-sequence` has a built-in gate system: call it with what you have; if anything's missing the tool returns `CONFIRMATION_REQUIRED` with exact instructions — follow them verbatim, never pre-empt the gates.29- `enroll-item-in-sequence` takes `board_id`, `sequenceId`, and `itemIds` (array of string IDs).3031## Tools (MCP)32- `get-board-sequences` — list sequences on a board (needs `board_id`).33- `get-sequence-analytics` — per-run, level, and step analytics for one sequence.34- `get-contact-journey` — all sequences a contact/item is enrolled in (needs `board_id` + `item_id`).35- `enroll-item-in-sequence` — enroll one or more items in a sequence.36- `activate-sequence` — INACTIVE → ACTIVE.37- `deactivate-sequence` — ACTIVE → INACTIVE (existing enrollments continue).38- `duplicate-sequence` — copy a sequence; new copy starts INACTIVE.39- `create-sequence` — create a new sequence; call directly with whatever args you have.40- `get-connected-email-accounts` — list linked Gmail/Outlook accounts; used when `create-sequence` gate requires a sender.41- `get_user_context` — user identity + account.42- `search` / `get_board_info` / `get_board_items_page` — resolve boards and items by name.4344## Cross-skill handoffs45- **From daily-briefing:** brief can surface sequences with low engagement → suggest `/monday-crm:run-sequence analytics for <name>`.46- **From meeting-to-opportunity:** after logging a new lead, suggest enrolling them in an onboarding sequence.47- **To log-activity:** after enrolling a contact in a sequence whose first step is a manual call, suggest logging the call outcome.4849---5051## Step 0: Connector check52531. Try `mcp__monday__get_user_context`. On error → print install prompt, stop.542. This skill does not pre-check sequence tools — if a sequence tool fails with a permission error in later steps, print: *"Sequences may not be enabled on your account. Check Tools → Sequences in monday CRM."*5556---5758## Step 1: Detect intent5960Parse the argument/prompt to classify:6162| Intent | Trigger signals |63|---|---|64| **list** | "what sequences", "show sequences", "list", no argument |65| **create** | "create", "set up", "build", "new sequence", "drip campaign" |66| **enroll** | "enroll", "add to sequence", "put in sequence", "start on sequence" |67| **activate** | "activate", "turn on", "enable sequence" |68| **deactivate** | "deactivate", "turn off", "disable sequence", "stop new enrollments" |69| **duplicate** | "duplicate", "copy sequence", "clone" |70| **analyze** | "analytics", "how is", "performance", "open rate", "funnel", "reply rate" |71| **contact-journey** | "what sequences is", "sequence history for", "enrolled in", "contact journey" |7273If ambiguous, ask once:74> *"What would you like to do with sequences? (list / create / enroll / activate or deactivate / duplicate / analyze / check a contact's history)"*7576---7778## Step 2: Resolve board7980**Required for:** list, enroll, contact-journey. Optional for create (let the gate handle it).81821. If user named a board → `mcp__monday__search` or `get_board_info` to resolve it. On ambiguity, present top results and ask.832. If no board named:84 - For **list**: ask *"Which board's sequences do you want to see?"*85 - For **create**: proceed to Step 4 and let the tool's gate request it.86 - For **enroll**: ask *"Which board is this contact/lead on?"*87 - For **contact-journey**: ask *"Which board is this contact on?"*8889---9091## Step 3: Execute — List9293`mcp__monday__get-board-sequences({ board_id })`.9495Format as table:9697```98Sequences on Leads board:99100| # | Name | Status | Steps | Enrolled | Reply Rate |101|---|------|--------|-------|----------|------------|102| 1 | Cold outreach Q2 | ACTIVE | 5 | 120 | 12.4% |103| 2 | Welcome — new leads | INACTIVE | 3 | 0 | — |104```105106If empty: *"No sequences on this board yet."*107108---109110## Step 4: Execute — Create111112Call `mcp__monday__create-sequence` directly with whatever you have from the user's message. The tool's built-in gates handle missing fields:113114- **`board_not_specified`** gate → follow the returned instructions verbatim: use `search` to list boards, present as-is, ask user to pick, retry.115- **`steps_not_specified`** gate → follow the returned instructions verbatim: ask user to build steps one at a time or create empty. Never invent steps.116- **`connections_not_specified`** gate (triggered when `automatic_email` steps need sender/emailColumnId) → resolve via `get-connected-email-accounts` for sender and `get_board_info` for the email column, then retry.117118On success: *"Sequence '<name>' created (INACTIVE). Activate it? (yes / later)"*. If yes → `activate-sequence`.119120> **Important:** Never pre-empt the gates by asking all questions upfront. Call the tool first.121122---123124## Step 5: Execute — Enroll1251261. Resolve the sequence: `mcp__monday__get-board-sequences({ board_id })` → present list, ask which sequence if not named.1272. Resolve the items: extract from the argument (company/contact names) or ask *"Which contacts or leads do you want to enroll?"*. Use `search` or `get_board_items_page` to get `item_id`s.1283. Confirm sequence is ACTIVE. If INACTIVE: *"'<name>' is currently inactive — new enrollments are blocked. Activate it first? (yes / cancel)"*129130> **HITL GATE:** *"Enroll <N> item(s) in '<sequence name>'?"* List the items by name. *(yes / cancel)*1311324. `mcp__monday__enroll-item-in-sequence({ board_id, sequenceId, itemIds: ["<id>", ...] })`.1335. Report: *"Enrolled <N> items. Succeeded: <list>. Failed: <list if any>."*134135---136137## Step 6: Execute — Activate / Deactivate1381391. Resolve the sequence (board → `get-board-sequences` → pick by name).1402. Check current state. Warn on no-ops:141 - Activating an ACTIVE sequence → *"'<name>' is already active."*142 - Deactivating an INACTIVE sequence → *"'<name>' is already inactive."*143144> **HITL GATE:**145> - Activate: *"Activate '<name>'? This enables new enrollments. (yes / cancel)"*146> - Deactivate: *"Deactivate '<name>'? New enrollments will be blocked — contacts already enrolled will keep progressing. (yes / cancel)"*1471483. `mcp__monday__activate-sequence({ sequenceId })` or `mcp__monday__deactivate-sequence({ sequenceId })`.1494. Report the new state.150151---152153## Step 7: Execute — Duplicate1541551. Resolve the sequence (board → list → pick).156157> **HITL GATE:** *"Duplicate '<name>'? The copy will start as INACTIVE. (yes / cancel)"*1581592. `mcp__monday__duplicate-sequence({ sequenceId })`.1603. Report: *"Created '<new name>' (INACTIVE). Activate it? (yes / later)"*161162---163164## Step 8: Execute — Analyze1651661. Resolve the sequence (board → list → pick).1672. `mcp__monday__get-sequence-analytics({ sequenceId })`.1683. Format:169170```171Sequence: "Cold outreach Q2" (ACTIVE)172173Level: 450 events · 69% open rate · 23% reply rate · 5.6% click-through174175Per-step:176| Step | Sent | Open % | Reply % | CTR % |177|------|------|--------|---------|-------|178| 1 — Email | 450 | 69% | 10% | 2.7% |179| 2 — Email | 405 | 66% | 9.4% | 2.0% |180| 3 — Email | 360 | 55% | 6.1% | 1.4% |181182Runs: 12 active · 380 completed · 58 terminated183```1841854. Flag drop-offs: if open rate drops >15pp between consecutive email steps, surface it.1865. If analytics are empty: *"No analytics yet — this sequence hasn't sent any messages."*187188---189190## Step 9: Execute — Contact journey1911921. Resolve the contact item (search by name → `item_id`; ask for board if unclear).1932. `mcp__monday__get-contact-journey({ board_id, item_id })`.1943. Format:195196```197Sequence history for Acme Corp:198199| Sequence | Status | Steps done | Enrolled | Termination |200|----------|--------|-----------|----------|-------------|201| Welcome Q2 | Completed | 5/5 | Jun 10 | Replied |202| Cold outreach | Active | 2/5 | Jun 20 | — |203```2042054. If empty: *"<item name> isn't enrolled in any sequences."*206207---208209## Shared patterns210211- **HITL gates on all writes** (create, enroll, activate, deactivate, duplicate).212- **No sequence editing via MCP.** If asked to add/edit/remove steps, say: *"Step editing isn't available through MCP yet — go to Tools → Sequences in the monday CRM UI."*213- **Board-first for list/enroll/journey.** Always resolve the board before calling tools that need `board_id`.214- **Follow create-sequence gates verbatim.** Call first, handle gates as they come.215216---217218## Error handling reference219220| Failure | Behavior |221|---|---|222| Connector missing | Step 0 stops; print install link. |223| Permission error on sequence tools | Suggest checking CRM Sequences is enabled in account settings. |224| Board not found | Broaden search; ask user to confirm board name. |225| Sequence not found | List all on board; ask user to pick. |226| Enroll — sequence INACTIVE | Offer to activate first. |227| Enroll — partial failure | Report succeeded and failed item IDs. |228| Analytics empty | Inform no sends yet. |229| Tool unavailable on connector | *"Sequence tools aren't on the connector yet — check back or use the monday UI."* |230| Edit/add-step request | Redirect to UI; no MCP tool exists for this. |231232---233234## Completion criteria235236- [ ] Step 0 connector check passed.237- [ ] Intent correctly classified and executed.238- [ ] Board resolved before any `board_id`-requiring tool call.239- [ ] All writes (create, enroll, activate, deactivate, duplicate) went through HITL confirmation.240- [ ] `create-sequence` gates followed verbatim; no pre-emption.241- [ ] No sequence editing attempted (hard rail — redirect to UI).242- [ ] Analytics formatted with level + per-step breakdown and drop-off flags.243- [ ] Errors surfaced with actionable guidance.