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-sequencesrequires aboard_id— always resolve the board first.create-sequencehas a built-in gate system: call it with what you have; if anything's missing the tool returnsCONFIRMATION_REQUIREDwith exact instructions — follow them verbatim, never pre-empt the gates.enroll-item-in-sequencetakesboard_id,sequenceId, anditemIds(array of string IDs).
Tools (MCP)
get-board-sequences— list sequences on a board (needsboard_id).get-sequence-analytics— per-run, level, and step analytics for one sequence.get-contact-journey— all sequences a contact/item is enrolled in (needsboard_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 whencreate-sequencegate 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:
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__searchorget_board_infoto 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:
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_specifiedgate → follow the returned instructions verbatim: usesearchto list boards, present as-is, ask user to pick, retry.steps_not_specifiedgate → follow the returned instructions verbatim: ask user to build steps one at a time or create empty. Never invent steps.connections_not_specifiedgate (triggered whenautomatic_emailsteps need sender/emailColumnId) → resolve viaget-connected-email-accountsfor sender andget_board_infofor the email column, then retry.
On success: "Sequence '<name>' 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
searchorget_board_items_pageto getitem_ids. - Confirm sequence is ACTIVE. If INACTIVE: "'<name>' is currently inactive — new enrollments are blocked. Activate it first? (yes / cancel)"
HITL GATE: "Enroll <N> item(s) in '<sequence name>'?" List the items by name. (yes / cancel)
mcp__monday__enroll-item-in-sequence({ board_id, sequenceId, itemIds: ["<id>", ...] }).- Report: "Enrolled <N> items. Succeeded: <list>. Failed: <list if any>."
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 → "'<name>' is already active."
- Deactivating an INACTIVE sequence → "'<name>' is already inactive."
HITL GATE:
- Activate: "Activate '<name>'? This enables new enrollments. (yes / cancel)"
- Deactivate: "Deactivate '<name>'? New enrollments will be blocked — contacts already enrolled will keep progressing. (yes / cancel)"
mcp__monday__activate-sequence({ sequenceId })ormcp__monday__deactivate-sequence({ sequenceId }).- Report the new state.
Step 7: Execute — Duplicate
- Resolve the sequence (board → list → pick).
HITL GATE: "Duplicate '<name>'? The copy will start as INACTIVE. (yes / cancel)"
mcp__monday__duplicate-sequence({ sequenceId }).- Report: "Created '<new name>' (INACTIVE). Activate it? (yes / later)"
Step 8: Execute — Analyze
- Resolve the sequence (board → list → pick).
mcp__monday__get-sequence-analytics({ sequenceId }).- Format:
- 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:
- If empty: "<item name> 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
Completion criteria
- Step 0 connector check passed.
- Intent correctly classified and executed.
- Board resolved before any
board_id-requiring tool call. - All writes (create, enroll, activate, deactivate, duplicate) went through HITL confirmation.
-
create-sequencegates followed verbatim; no pre-emption. - No sequence editing attempted (hard rail — redirect to UI).
- Analytics formatted with level + per-step breakdown and drop-off flags.
- Errors surfaced with actionable guidance.

