@sellable/mcp 0.1.511 → 0.1.512

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.
@@ -236,7 +236,7 @@ export declare const allTools: ({
236
236
  properties: {
237
237
  subskillName: {
238
238
  type: string;
239
- enum: readonly ["building-gtm-tables", "content", "create-ab-test", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-evergreen-campaigns", "create-post", "create-rubric", "engage", "enrich-prospects", "fill-send-horizon", "find-leads", "foundation", "generate-messages", "interview", "load-voice", "refresh-sender-engagement", "refill-sends", "refill-sends-workflow", "research", "research-prospect", "research-sender", "weekly-campaign-summary", "workflow-sequences"];
239
+ enum: readonly ["building-gtm-tables", "content", "create-ab-test", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-evergreen-campaigns", "create-post", "create-rubric", "engage", "enrich-prospects", "fill-send-horizon", "find-leads", "foundation", "generate-messages", "interview", "load-voice", "refresh-sender-engagement", "refill-sends", "refill-sends-evergreen", "refill-sends-evergreen-workflow", "refill-sends-workflow", "research", "research-prospect", "research-sender", "weekly-campaign-summary", "workflow-sequences"];
240
240
  description: string;
241
241
  };
242
242
  offset: {
@@ -271,7 +271,7 @@ export declare const allTools: ({
271
271
  properties: {
272
272
  subskillName: {
273
273
  type: string;
274
- enum: readonly ["building-gtm-tables", "content", "create-ab-test", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-evergreen-campaigns", "create-post", "create-rubric", "engage", "enrich-prospects", "fill-send-horizon", "find-leads", "foundation", "generate-messages", "interview", "load-voice", "refresh-sender-engagement", "refill-sends", "refill-sends-workflow", "research", "research-prospect", "research-sender", "weekly-campaign-summary", "workflow-sequences"];
274
+ enum: readonly ["building-gtm-tables", "content", "create-ab-test", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-evergreen-campaigns", "create-post", "create-rubric", "engage", "enrich-prospects", "fill-send-horizon", "find-leads", "foundation", "generate-messages", "interview", "load-voice", "refresh-sender-engagement", "refill-sends", "refill-sends-evergreen", "refill-sends-evergreen-workflow", "refill-sends-workflow", "research", "research-prospect", "research-sender", "weekly-campaign-summary", "workflow-sequences"];
275
275
  description: string;
276
276
  };
277
277
  assetPath: {
@@ -474,39 +474,6 @@ export declare const allTools: ({
474
474
  required: string[];
475
475
  additionalProperties: boolean;
476
476
  };
477
- } | {
478
- name: string;
479
- description: string;
480
- inputSchema: {
481
- type: string;
482
- properties: {
483
- intent: {
484
- type: string;
485
- enum: string[];
486
- description: string;
487
- };
488
- campaignId: {
489
- type: string;
490
- description: string;
491
- };
492
- tableId: {
493
- type: string;
494
- description: string;
495
- };
496
- limit: {
497
- type: string;
498
- minimum: number;
499
- maximum: number;
500
- description: string;
501
- };
502
- workspaceId: {
503
- type: string;
504
- description: string;
505
- };
506
- };
507
- required: string[];
508
- additionalProperties: boolean;
509
- };
510
477
  } | {
511
478
  name: string;
512
479
  description: string;
@@ -624,45 +591,6 @@ export declare const allTools: ({
624
591
  inputSchema: {
625
592
  type: string;
626
593
  properties: {
627
- capacityRequests: {
628
- type: string;
629
- minItems: number;
630
- items: {
631
- type: string;
632
- properties: {
633
- senderId: {
634
- type: string;
635
- description: string;
636
- };
637
- actionType: {
638
- type: string;
639
- enum: string[];
640
- description: string;
641
- };
642
- cellId: {
643
- type: string;
644
- description: string;
645
- };
646
- columnId: {
647
- type: string;
648
- description: string;
649
- };
650
- };
651
- required: string[];
652
- additionalProperties: boolean;
653
- };
654
- description: string;
655
- };
656
- targetDate: {
657
- type: string;
658
- pattern: string;
659
- description: string;
660
- };
661
- mode: {
662
- type: string;
663
- enum: string[];
664
- description: string;
665
- };
666
594
  workspaceId: {
667
595
  type: string;
668
596
  description: string;
@@ -2381,24 +2309,6 @@ export declare const allTools: ({
2381
2309
  };
2382
2310
  required: string[];
2383
2311
  };
2384
- } | {
2385
- name: string;
2386
- description: string;
2387
- inputSchema: {
2388
- type: string;
2389
- properties: {
2390
- senderId: {
2391
- type: string;
2392
- description: string;
2393
- };
2394
- workspaceId: {
2395
- type: string;
2396
- description: string;
2397
- };
2398
- };
2399
- required: string[];
2400
- additionalProperties: boolean;
2401
- };
2402
2312
  } | {
2403
2313
  name: string;
2404
2314
  description: string;
@@ -3031,6 +2941,7 @@ export declare const allTools: ({
3031
2941
  previewOnly?: undefined;
3032
2942
  companySearchToken?: undefined;
3033
2943
  selectedCompanyIds?: undefined;
2944
+ workspaceId?: undefined;
3034
2945
  domainFilterId?: undefined;
3035
2946
  type?: undefined;
3036
2947
  profileUrl?: undefined;
@@ -3227,6 +3138,7 @@ export declare const allTools: ({
3227
3138
  previewOnly?: undefined;
3228
3139
  companySearchToken?: undefined;
3229
3140
  selectedCompanyIds?: undefined;
3141
+ workspaceId?: undefined;
3230
3142
  domainFilterId?: undefined;
3231
3143
  type?: undefined;
3232
3144
  profileUrl?: undefined;
@@ -3322,6 +3234,7 @@ export declare const allTools: ({
3322
3234
  previewOnly?: undefined;
3323
3235
  companySearchToken?: undefined;
3324
3236
  selectedCompanyIds?: undefined;
3237
+ workspaceId?: undefined;
3325
3238
  domainFilterId?: undefined;
3326
3239
  type?: undefined;
3327
3240
  profileUrl?: undefined;
@@ -3489,6 +3402,7 @@ export declare const allTools: ({
3489
3402
  previewOnly?: undefined;
3490
3403
  companySearchToken?: undefined;
3491
3404
  selectedCompanyIds?: undefined;
3405
+ workspaceId?: undefined;
3492
3406
  domainFilterId?: undefined;
3493
3407
  type?: undefined;
3494
3408
  profileUrl?: undefined;
@@ -3598,6 +3512,7 @@ export declare const allTools: ({
3598
3512
  previewOnly?: undefined;
3599
3513
  companySearchToken?: undefined;
3600
3514
  selectedCompanyIds?: undefined;
3515
+ workspaceId?: undefined;
3601
3516
  domainFilterId?: undefined;
3602
3517
  type?: undefined;
3603
3518
  profileUrl?: undefined;
@@ -3716,6 +3631,7 @@ export declare const allTools: ({
3716
3631
  previewOnly?: undefined;
3717
3632
  companySearchToken?: undefined;
3718
3633
  selectedCompanyIds?: undefined;
3634
+ workspaceId?: undefined;
3719
3635
  domainFilterId?: undefined;
3720
3636
  type?: undefined;
3721
3637
  profileUrl?: undefined;
@@ -3823,6 +3739,7 @@ export declare const allTools: ({
3823
3739
  previewOnly?: undefined;
3824
3740
  companySearchToken?: undefined;
3825
3741
  selectedCompanyIds?: undefined;
3742
+ workspaceId?: undefined;
3826
3743
  domainFilterId?: undefined;
3827
3744
  type?: undefined;
3828
3745
  profileUrl?: undefined;
@@ -3935,6 +3852,7 @@ export declare const allTools: ({
3935
3852
  previewOnly?: undefined;
3936
3853
  companySearchToken?: undefined;
3937
3854
  selectedCompanyIds?: undefined;
3855
+ workspaceId?: undefined;
3938
3856
  domainFilterId?: undefined;
3939
3857
  type?: undefined;
3940
3858
  profileUrl?: undefined;
@@ -4035,6 +3953,7 @@ export declare const allTools: ({
4035
3953
  previewOnly?: undefined;
4036
3954
  companySearchToken?: undefined;
4037
3955
  selectedCompanyIds?: undefined;
3956
+ workspaceId?: undefined;
4038
3957
  domainFilterId?: undefined;
4039
3958
  type?: undefined;
4040
3959
  profileUrl?: undefined;
@@ -4927,6 +4846,7 @@ export declare const allTools: ({
4927
4846
  exclude?: undefined;
4928
4847
  companySearchToken?: undefined;
4929
4848
  selectedCompanyIds?: undefined;
4849
+ workspaceId?: undefined;
4930
4850
  domainFilterId?: undefined;
4931
4851
  type?: undefined;
4932
4852
  profileUrl?: undefined;
@@ -5036,6 +4956,7 @@ export declare const allTools: ({
5036
4956
  seedDomains?: undefined;
5037
4957
  sort?: undefined;
5038
4958
  previewOnly?: undefined;
4959
+ workspaceId?: undefined;
5039
4960
  domainFilterId?: undefined;
5040
4961
  type?: undefined;
5041
4962
  profileUrl?: undefined;
@@ -6022,6 +5943,10 @@ export declare const allTools: ({
6022
5943
  type: string;
6023
5944
  description: string;
6024
5945
  };
5946
+ workspaceId: {
5947
+ type: string;
5948
+ description: string;
5949
+ };
6025
5950
  searchName: {
6026
5951
  type: string;
6027
5952
  description: string;
@@ -6246,6 +6171,7 @@ export declare const allTools: ({
6246
6171
  previewOnly?: undefined;
6247
6172
  companySearchToken?: undefined;
6248
6173
  selectedCompanyIds?: undefined;
6174
+ workspaceId?: undefined;
6249
6175
  domainFilterId?: undefined;
6250
6176
  sourceLeadListId?: undefined;
6251
6177
  targetLeadCount?: undefined;
@@ -6278,6 +6204,10 @@ export declare const allTools: ({
6278
6204
  type: string;
6279
6205
  description: string;
6280
6206
  };
6207
+ workspaceId: {
6208
+ type: string;
6209
+ description: string;
6210
+ };
6281
6211
  provider: {
6282
6212
  type: string;
6283
6213
  enum: string[];
@@ -6421,6 +6351,10 @@ export declare const allTools: ({
6421
6351
  type: string;
6422
6352
  description: string;
6423
6353
  };
6354
+ workspaceId: {
6355
+ type: string;
6356
+ description: string;
6357
+ };
6424
6358
  tableId: {
6425
6359
  type: string;
6426
6360
  description: string;
@@ -6519,6 +6453,10 @@ export declare const allTools: ({
6519
6453
  type: string;
6520
6454
  description: string;
6521
6455
  };
6456
+ workspaceId: {
6457
+ type: string;
6458
+ description: string;
6459
+ };
6522
6460
  sourceLeadListId: {
6523
6461
  type: string;
6524
6462
  description: string;
@@ -6751,6 +6689,7 @@ export declare const allTools: ({
6751
6689
  previewOnly?: undefined;
6752
6690
  companySearchToken?: undefined;
6753
6691
  selectedCompanyIds?: undefined;
6692
+ workspaceId?: undefined;
6754
6693
  domainFilterId?: undefined;
6755
6694
  type?: undefined;
6756
6695
  profileUrl?: undefined;
@@ -6848,6 +6787,7 @@ export declare const allTools: ({
6848
6787
  previewOnly?: undefined;
6849
6788
  companySearchToken?: undefined;
6850
6789
  selectedCompanyIds?: undefined;
6790
+ workspaceId?: undefined;
6851
6791
  domainFilterId?: undefined;
6852
6792
  type?: undefined;
6853
6793
  profileUrl?: undefined;
@@ -33,6 +33,8 @@ import { onDemandToolDefinitions } from "./one-off.js";
33
33
  import { processingToolDefinitions } from "./processing.js";
34
34
  import { promptToolDefinitions } from "./prompts.js";
35
35
  import { readinessToolDefinitions } from "./readiness.js";
36
+ import { evergreenRefillPlanToolDefinitions } from "./evergreen-refill-plan.js";
37
+ import { refillSendsEvergreenToolDefinitions } from "./refill-sends-evergreen.js";
36
38
  import { refillTargetPlanToolDefinitions } from "./refill-target-plan.js";
37
39
  import { refillSendsToolDefinitions } from "./refill-sends.js";
38
40
  import { rowToolDefinitions } from "./rows.js";
@@ -52,9 +54,11 @@ export const allTools = [
52
54
  ...campaignAbTestToolDefinitions,
53
55
  ...campaignFillRoutingToolDefinitions,
54
56
  ...campaignRefillStateToolDefinitions,
57
+ ...evergreenRefillPlanToolDefinitions,
55
58
  ...refillTargetPlanToolDefinitions,
56
59
  ...schedulerFillCapacityToolDefinitions,
57
60
  ...refillSendsToolDefinitions,
61
+ ...refillSendsEvergreenToolDefinitions,
58
62
  ...setupEvergreenCampaignsToolDefinitions,
59
63
  ...campaignHorizonFillToolDefinitions,
60
64
  ...campaignMessagePreparationToolDefinitions,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.511",
3
+ "version": "0.1.512",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: refill-sends-evergreen
3
+ description: Plan evergreen waterfall send refill work through the Phase 85 dry-run workflow.
4
+ visibility: public
5
+ allowed-tools:
6
+ - mcp__sellable__refill_sends_evergreen
7
+ - mcp__sellable__get_evergreen_refill_plan
8
+ - mcp__sellable__get_subskill_prompt
9
+ - mcp__sellable__get_subskill_asset
10
+ - mcp__sellable__get_auth_status
11
+ - mcp__sellable__get_active_workspace
12
+ - mcp__sellable__list_workspaces
13
+ - mcp__sellable__get_workspace
14
+ ---
15
+
16
+ # Refill Sends Evergreen
17
+
18
+ Use this public command wrapper for evergreen waterfall refill requests such as
19
+ "refill evergreen", "fill evergreen senders", "load evergreen lanes", or
20
+ "plan evergreen refill".
21
+
22
+ Host command names:
23
+
24
+ - Claude Code: `/sellable:refill-sends-evergreen`
25
+ - Codex: `$sellable:refill-sends-evergreen`
26
+
27
+ Phase 85 is read-only, dry-run, zero mutations. It plans the deterministic
28
+ waterfall-ladder refill packet and writes a local dry-run journal, but it does
29
+ not prepare messages, approve messages, start campaigns, schedule sends, send
30
+ messages, refresh paid InMail credit facts, create campaigns, or change source
31
+ configuration. Execution ships in the follow-up phase.
32
+
33
+ ## Entry
34
+
35
+ Resolve the explicit `workspaceId` from the request, automation config, or
36
+ active workspace readback. Scheduled or autonomous usage must carry
37
+ `workspaceId` on every tool call. If the workspace is missing or ambiguous, stop
38
+ with `WORKSPACE_REQUIRED`; do not switch the shared active workspace.
39
+
40
+ Start with the command contract:
41
+
42
+ ```text
43
+ refill_sends_evergreen({ workspaceId })
44
+ ```
45
+
46
+ Then load the internal workflow prompt and flow asset:
47
+
48
+ ```text
49
+ get_subskill_prompt({ subskillName: "refill-sends-evergreen-workflow" })
50
+ get_subskill_asset({ subskillName: "refill-sends-evergreen-workflow", assetPath: "core/flow.v1.json" })
51
+ ```
52
+
53
+ Continue both loads until `hasMore:false`; parse the flow JSON and verify
54
+ `workflow:"refill-sends-evergreen-workflow"` with a `v1` version before the
55
+ planner call.
56
+
57
+ Call the dry-run planner with the explicit workspace id:
58
+
59
+ ```text
60
+ get_evergreen_refill_plan({ workspaceId, senderIds?, runState?, journal?, journalNote? })
61
+ ```
62
+
63
+ Use `senderIds` only when the user scoped the request to exact senders. Use
64
+ `runState` only for an explicit what-if dry run; otherwise let the MCP read
65
+ local lane memory hints. Leave `journal` enabled unless the user specifically
66
+ asked for no local journal.
67
+
68
+ ## Report
69
+
70
+ Review the returned packet before giving a recommendation:
71
+
72
+ - `planRevision` starts with `pr1:`.
73
+ - `stateRevision` identifies the current readback.
74
+ - `packet` is the operator-facing facts receipt.
75
+ - `plans[]` contains per-sender lane decisions and itinerary details.
76
+ - `globalActionQueue[]` is a dry-run sequence only in Phase 85.
77
+ - `evergreen.enumeratedRungs` and each action's `evergreenRung` map to the
78
+ locked ladder from the workflow asset.
79
+ - `journalPath` points to the dry-run markdown journal written by the MCP.
80
+ - `sideEffects` must be all false.
81
+
82
+ Report campaign names and sender names first, ids second. Include the chosen
83
+ rung, the itinerary, the plan revision, the journal path, and any blockers or
84
+ warnings. Stop after the report; do not execute the action queue in Phase 85.
@@ -0,0 +1,107 @@
1
+ ---
2
+ name: refill-sends-evergreen-workflow
3
+ description: Internal read-only workflow for evergreen waterfall refill dry-run planning.
4
+ visibility: internal
5
+ allowed-tools:
6
+ - mcp__sellable__refill_sends_evergreen
7
+ - mcp__sellable__get_evergreen_refill_plan
8
+ - mcp__sellable__get_subskill_prompt
9
+ - mcp__sellable__get_subskill_asset
10
+ - mcp__sellable__get_auth_status
11
+ - mcp__sellable__get_active_workspace
12
+ - mcp__sellable__list_workspaces
13
+ - mcp__sellable__get_workspace
14
+ ---
15
+
16
+ # Refill Sends Evergreen Workflow
17
+
18
+ This internal workflow is the Phase 85 plan surface for evergreen waterfall
19
+ refill. It is read-only, dry-run, zero mutations. The workflow has three gates:
20
+ bootstrap, plan, and report.
21
+
22
+ Runtime flow asset: after loading this prompt, load
23
+ `get_subskill_asset({ subskillName: "refill-sends-evergreen-workflow", assetPath: "core/flow.v1.json" })`
24
+ through MCP, continue chunks until `hasMore:false`, parse the JSON, and verify
25
+ `workflow:"refill-sends-evergreen-workflow"` with a `v1` version before any
26
+ planner call. If the asset cannot load or parse, stop with
27
+ `blocked:evergreen_refill_workflow_asset_unavailable`; do not emulate it from
28
+ local files or memory.
29
+
30
+ ## G0 Bootstrap Facts
31
+
32
+ Resolve the request-scoped `workspaceId` using read-only auth and workspace
33
+ tools. Scheduled or autonomous runs must not rely on implicit workspace state.
34
+ Call `refill_sends_evergreen({ workspaceId })` first to receive the command
35
+ contract, then call `get_evergreen_refill_plan({ workspaceId })` for the dry-run
36
+ packet.
37
+
38
+ Optional inputs:
39
+
40
+ - `senderIds`: exact sender scope when the user named senders.
41
+ - `runState`: synthetic v1 lane memory for what-if dry runs. Use it only when
42
+ the user intentionally wants a hypothetical cursor, pin, or cooldown state.
43
+ - `journal:false`: skip the local journal only when explicitly requested.
44
+ - `journalNote`: append operator context to the dry-run terminal section.
45
+
46
+ ## G1 Evergreen Ladder
47
+
48
+ The planner chooses from this locked rung order:
49
+
50
+ 1. `start_campaign`: a paused selected lane has scheduler-ready supply but must
51
+ be live before the scheduler can pick it up.
52
+ 2. `approve_messages`: generated rows are ready for a bounded approval step.
53
+ 3. `wait_for_active_work`: enrichment, generation, import, or preparation is
54
+ already active, so the next honest action is to wait for that work to finish.
55
+ 4. `enrich_more`: exact-set enrichment can close the current ready gap.
56
+ 5. `reconcile_source_copy`: same-source rows exist and can be copied without
57
+ changing source family or source fingerprint.
58
+ 6. `add_leads_same_source`: the same source path can add bounded new supply.
59
+ 7. `paid_lane_fallback`: paid InMail is blocked or below threshold, so the same
60
+ waterfall can fall back to an existing supported lane.
61
+ 8. `next_campaign`: the current lane is exhausted, cooling down, pinned away, or
62
+ unsafe, and the next surviving campaign lane should be inspected.
63
+ 9. `wait_for_scheduler`: ready or projected supply covers the target, and only
64
+ scheduler pickup remains.
65
+ 10. `done`: the sender or lane is complete for the selected target window, or a
66
+ scheduler cap makes additional preparation unnecessary.
67
+
68
+ Forward-only lane rule: a lane can move to a later rung or a later surviving
69
+ campaign, but the dry-run packet must not jump backward to invent work that the
70
+ facts do not support. Pinned-campaign rule: a pinned campaign stays selected
71
+ until the planner proves a blocker, cooldown, exhaustion, or safer next lane.
72
+ Capped-is-complete rule: when scheduler capacity is lower than the requested
73
+ target and ready/projected coverage satisfies that cap, report `done` with the
74
+ cap reason. Honest-itinerary rule: show what was checked, what was skipped, and
75
+ why; never hide uncertainty behind a confident source recommendation.
76
+
77
+ Guardrails inherited from the Phase 83 evergreen workflow: no campaign creation,
78
+ no provider-family switch, no threshold lowering, no scheduler writes, no
79
+ launch/send/archive/delete, no brief/filter/message/sequence/sender mutation,
80
+ no message preparation, no message approval, no paid InMail credit refresh, no
81
+ source mutation, no row queueing, and no campaign status change.
82
+
83
+ ## Journal
84
+
85
+ `get_evergreen_refill_plan` writes a local dry-run journal unless
86
+ `journal:false` is passed. Read the returned `journalPath` from the tool result
87
+ and include it in the report. The journal contains bootstrap, plan, and terminal
88
+ sections plus an index line under the run journal directory. If the tool returns
89
+ `journalPath:null` with a `journalWriteFailed` warning, report the warning and
90
+ continue with the dry-run packet; do not retry by writing local files yourself.
91
+
92
+ ## Report Contract
93
+
94
+ Completion for Phase 85 means packet reviewed and journal written. Merely
95
+ calling `get_evergreen_refill_plan` is not completion proof.
96
+
97
+ Report these facts:
98
+
99
+ - workspace id and selected sender scope;
100
+ - plan revision and state revision;
101
+ - selected campaign and lane per sender;
102
+ - chosen rung and dry-run action queue;
103
+ - itinerary, skipped lanes, blockers, cooldowns, and warnings;
104
+ - journal path;
105
+ - side effects proof, which must show all false values.
106
+
107
+ Stop after the report. The Phase 85 workflow never executes the action queue.