@sellable/mcp 0.1.335 → 0.1.337

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,48 +1,63 @@
1
1
  ---
2
2
  name: fill-send-horizon
3
- description: Fill campaigns' next N-day send horizon through product-native enrichment, message prep, exact-row approval, and scheduler-owned scheduling proof. Prepared/generated/approved rows are intermediate only; success requires scheduled workflow cells with scheduledFor assigned by the existing scheduler. Never launches campaigns, never spends paid InMail.
3
+ description: Compatibility alias for refill-sends. Plain fill, refill sends, max out sends, load everyone up, and fill horizon sends now route to refill_campaign_sends plan mode first. Legacy fill_campaign_horizon remains evergreen-only lower-level audit/apply.
4
4
  visibility: internal
5
+ allowed-tools:
6
+ - mcp__sellable__refill_campaign_sends
7
+ - mcp__sellable__resolve_campaign_fill_route
8
+ - mcp__sellable__fill_campaign_horizon
5
9
  ---
6
10
 
7
11
  # Fill Send Horizon
8
12
 
9
13
  <role>
10
- You are a campaign operations agent keeping send queues full. Your job: for each target campaign, make sure the next two working days (or the requested horizon) have actual scheduled workflow-table action cells with `scheduledFor` assigned by the existing scheduler path. Enriched, generated, prepared, approved, or `ready_to_schedule` rows are progress only; they are not completion by themselves. Never launch a campaign or send anything yourself.
14
+ This is a compatibility alias. For plain operator language, use the new refill
15
+ command first: `refill_campaign_sends({ mode: "plan", intent: "plain" })`.
16
+ The word "horizon" means send window. Do not use `fill_campaign_horizon` as the
17
+ generic regular-campaign fill path.
11
18
  </role>
12
19
 
13
20
  <inputs>
14
- The invoking prompt (often a scheduled automation) names the targets. Accept any of:
21
+ The invoking prompt (often a scheduled automation) names the targets or gives a
22
+ plain fill request. Route before acting:
15
23
 
16
- - Campaign names or IDs ("fill send horizon for Christian Reyes - Post Engagers")
17
- - Sender names ("…for csreyes92 and thomas") — resolve via `list_senders`, then `get_campaigns` and match campaigns attached to those senders
18
- - Nothing specific ("fill send horizon") operate on all non-archived campaign tables in the active workspace that have a sequence attached (`list_tables({ hasSequence: true })`), skipping ARCHIVED ones
24
+ - Plain fill/load requests ("fill campaigns", "load everyone up", "fill send horizon") first call `refill_campaign_sends({ mode: "plan", intent: "plain" })`.
25
+ - If no `--yolo`, report the plan and stop.
26
+ - If `--yolo`, call plan first, then apply only with the returned `planRevision` and selected `actionIds`.
27
+ - If `refill_campaign_sends` is unavailable in an older install, use `resolve_campaign_fill_route` and read-only diagnostics only, then stop before mutation.
19
28
 
20
29
  Optional inputs: `targetPreparedMessages` (default: leave unset for the adaptive default), an explicit "approve" instruction (see safety rules), and a **waterfall priority order** (see below).
21
30
  </inputs>
22
31
 
23
32
  <objective>
24
- For each target campaign:
25
-
26
- 1. `get_campaign` -> confirm workspace, workflowTableId, campaign status, sender IDs, current stats, and scheduled/ready/approved/prepared counts where the tool exposes them. Skip and report any campaign whose table is ARCHIVED.
27
- 2. If the campaign already has enough scheduled workflow-table action cells with non-null `scheduledFor` for the requested horizon, stop as `already scheduled`.
28
- 3. If there are eligible rows but the horizon is not scheduled, use the product-native fill/prep tools only on the bounded target cohort:
29
- - Prefer `fill_campaign_horizon({ action: "audit" })` then `fill_campaign_horizon({ action: "apply", stateRevision })` when the campaign has a source lead list / Signal Discovery source and needs import plus message prep.
30
- - Use `start_campaign_message_preparation({ campaignId })` when rows already exist and only enrichment/rubric/message prep/approval readiness is needed.
31
- - Omit `maxRowsToCheck` and `batchSize` for the adaptive default unless the invoking prompt sets them.
32
- 4. Poll `get_campaign_message_preparation_status` until the job completes or stops. Read `progress.enrichedRows`, `preparedMessages`, `approvedMessages`, `activeCellCount`, and `stopReason`; never treat `checkedRows` as enriched rows.
33
- 5. After any prep/approval work, re-read campaign/table state. Do not report the horizon as scheduled unless the re-read proves scheduler-owned scheduled cells with non-null `scheduledFor`. If only prepared/approved/ready cells exist, report the exact state as `prepared/approved/ready - awaiting scheduler`, not complete.
34
- 6. If the stop reason is source exhaustion (no more eligible rows), report it as "source thin - needs new leads" and name `refresh-sender-engagement` (for post-engager lanes) or `find-leads` as the refill path. Do not invent leads.
35
- 7. Report per campaign: scheduled count, ready-to-schedule count, prepared count, approved count, remaining horizon gap, and the single next operator action.
33
+ Route result handling:
34
+
35
+ 1. If `refill_campaign_sends` returns regular campaigns, report the ranked plan.
36
+ 2. If it returns evergreen campaigns, report the current-source audit and any legacy evergreen send-window subplan.
37
+ 3. If it returns blockers, report them and stop.
38
+ 4. If `--yolo` is approved, apply only selected immutable actions from the plan.
39
+
40
+ For each active campaign target:
41
+
42
+ 1. Confirm workspace, `workflowTableId`, `campaignStatus:"ACTIVE"`, sender IDs, current stats, and scheduled/ready/approved/prepared counts where available. Skip and report PAUSED/DRAFT/ARCHIVED targets separately.
43
+ 2. Check `get_campaign_message_preparation_status({ campaignId, tableId })` first. If an active prep job exists for the same target, report it and do not start an overlapping job.
44
+ 3. If rows already exist, let `refill_campaign_sends` plan/apply the bounded preparation action. Do not call lower-level preparation manually unless the command is unavailable.
45
+ 4. If source is thin and the user asked to add/fill more leads, source fresh Signal Discovery/post engagement leads only into the same `campaignOfferId`/`campaignId` context. Do not create warm-post-engager side campaigns, on-demand campaigns, or unrelated campaigns.
46
+ 5. Poll `get_campaign_message_preparation_status` until the job completes or stops. Read `progress.enrichedRows`, `preparedMessages`, `approvedMessages`, `activeCellCount`, active prep blockers, and `stopReason`; never treat `checkedRows` as enriched rows.
47
+ 6. After any prep/approval work, re-read campaign/table state. Do not report the horizon as scheduled unless the re-read proves scheduler-owned scheduled cells with non-null `scheduledFor`. If only prepared/approved/ready cells exist, report the exact state as `prepared/approved/ready - awaiting scheduler`, not complete.
48
+ 7. Report appended rows, enriched rows, prepared messages, approved messages, ready-to-schedule rows, scheduler-owned scheduled cells, active preparation jobs, and sender-health blockers such as disconnected Sales Nav, deleted LinkedIn accounts, missing sequence state, or exhausted source rows as separate lines.
36
49
  </objective>
37
50
 
38
51
  <waterfall>
39
52
  ## Campaign hierarchy (waterfall order)
40
53
 
41
- The fill order is **stored workspace state**, not something each automation restates. Resolve it in this precedence:
54
+ Evergreen/horizon fill order is **stored workspace state** returned by
55
+ `resolve_campaign_fill_route`, not something each automation restates. Resolve
56
+ it in this precedence:
42
57
 
43
- 1. **Stored hierarchy (default)**: call `get_campaign_waterfall` first. It returns each waterfall (per sender or shared) with slots in stored priority order campaign offer IDs included. Fill in that order.
58
+ 1. **Stored hierarchy (default)**: the resolver reads the stored managed waterfall and returns slots in priority order with campaign offer IDs included. Fill in that order.
44
59
  2. **Per-invocation override**: if the invoking prompt states an explicit order ("fill in this order: Signal Discovery, Post Engagers"), use it for this run only and say in the report that the stored order was overridden. To change the order durably, use `set_campaign_waterfall_order` — but only when the user/automation explicitly asks to change the hierarchy, never as a side effect of a fill run.
45
- 3. **No stored hierarchy** (tool returns empty evergreen reconcile hasn't run): fall back to the conventional order `<Sender> - Post Engagers` (warmest) `Shared Signal Discovery` `Shared Cold Fallback` (coldest), and note that running `create-evergreen-campaigns` will materialize a stored hierarchy.
60
+ 3. **No stored hierarchy**: resolver returns active targets or ask-create. Do not invent a conventional evergreen waterfall. Ask whether to create normal campaigns or evergreen campaigns only after `ask_create`.
46
61
 
47
62
  Fill mechanics, whatever the source of the order:
48
63
 
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: refill-sends
3
+ description: Plan and optionally apply bounded campaign send refill work. Plain fill, refill sends, max out sends, load everyone up, and fill send window requests route to refill_campaign_sends plan mode first. Apply requires --yolo, a fresh planRevision, and selected actionIds.
4
+ visibility: internal
5
+ allowed-tools:
6
+ - mcp__sellable__refill_campaign_sends
7
+ - mcp__sellable__resolve_campaign_fill_route
8
+ - mcp__sellable__fill_campaign_horizon
9
+ - mcp__sellable__get_campaign
10
+ - mcp__sellable__get_campaign_message_preparation_status
11
+ ---
12
+
13
+ # Refill Sends
14
+
15
+ Use this skill for plain operator requests such as "fill", "refill sends",
16
+ "max out sends", "load everyone up", or "fill horizon sends".
17
+
18
+ ## Default Flow
19
+
20
+ 1. Call `refill_campaign_sends({ mode: "plan", intent: "plain" })`.
21
+ 2. Report the returned plan and stop when the user did not include `--yolo`.
22
+ 3. If the user included `--yolo`, still call plan first. Inspect blockers.
23
+ 4. Apply only by calling `refill_campaign_sends({ mode: "apply", yolo: true, planRevision, actionIds })` with action IDs copied from the fresh plan.
24
+
25
+ Do not manually chain lower-level tools unless `refill_campaign_sends` is
26
+ unavailable. In that fallback case, run read-only diagnostics only, then stop
27
+ before mutation.
28
+
29
+ ## Public Concepts
30
+
31
+ - Regular campaign: a campaign with a brief, source, sequence, senders, and a
32
+ campaign-backed workflow table.
33
+ - Evergreen campaign: a managed always-on send-window lane.
34
+ - Send window: the dates/capacity the operator wants kept full.
35
+
36
+ Do not expose internal direct campaign types as an operator refill path. If the
37
+ plan reports `unsupported_campaign_type`, report it and stop.
38
+
39
+ ## Safety Rules
40
+
41
+ - Default mode is read-only plan.
42
+ - Apply requires `yolo: true`, a fresh stable `planRevision`, and selected immutable `actionIds`.
43
+ - Production yolo/apply requires explicit approval of workspace, campaign/table IDs, selected action IDs, caps/dates, and expected side effects.
44
+ - Never create side campaigns.
45
+ - Never call `start_campaign`, `start_on_demand_campaign`, or `start_direct_campaign`.
46
+ - Never raw-write scheduled fields or sender assignment fields.
47
+ - Scheduled success requires rereading scheduler-owned cells with non-null `scheduledFor`.
48
+ - Generate Message normally happens through downstream propagation from enrichment/prep, not as a standalone action.
49
+
50
+ ## Evergreen Source Ladder
51
+
52
+ For evergreen campaigns, do not move down the source ladder until the plan proves
53
+ the current source is exhausted or cannot produce enough good prospects within
54
+ configured caps. Required evidence includes source ID, target prospect gap,
55
+ cursor/inventory state, dedupe/DNC/provider exclusions, good-prospect yield,
56
+ and scan/import caps.
57
+