@sellable/mcp 0.1.188 → 0.1.190
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.
- package/agents/post-find-leads-message-scout.md +8 -7
- package/agents/registry.json +2 -2
- package/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/server.js +22 -0
- package/dist/tools/campaign-processing.d.ts +383 -0
- package/dist/tools/campaign-processing.js +304 -0
- package/dist/tools/leads.d.ts +63 -19
- package/dist/tools/leads.js +59 -8
- package/dist/tools/prompts.js +2 -2
- package/dist/tools/registry.d.ts +289 -37
- package/dist/tools/registry.js +2 -0
- package/package.json +1 -1
- package/skills/create-campaign/SKILL.md +17 -12
- package/skills/create-campaign-v2/SKILL.md +23 -25
- package/skills/create-campaign-v2/SOUL.md +11 -4
- package/skills/create-campaign-v2/core/flow.v2.json +1 -1
- package/skills/create-campaign-v2/core/policy.md +3 -3
- package/skills/create-campaign-v2/references/approval-gate-framing.md +5 -5
- package/skills/create-campaign-v2/references/filter-leads.md +5 -3
- package/skills/create-campaign-v2/references/parallel-critique-protocol.md +2 -2
- package/skills/create-campaign-v2/references/sample-validation-loop.md +46 -66
- package/skills/create-campaign-v2/references/step-15-re-cascade.md +20 -13
- package/skills/create-campaign-v2-tail/SKILL.md +52 -65
- package/skills/find-leads/SKILL.md +2 -1
- package/skills/generate-messages/SKILL.md +11 -0
- package/skills/generate-messages-compact/SKILL.md +100 -0
- package/skills/generate-messages-compact/references/examples-critique-revision.md +37 -0
- package/skills/providers/signal-discovery.md +9 -3
package/dist/tools/registry.d.ts
CHANGED
|
@@ -853,6 +853,278 @@ export declare const allTools: ({
|
|
|
853
853
|
required: string[];
|
|
854
854
|
additionalProperties?: undefined;
|
|
855
855
|
};
|
|
856
|
+
} | {
|
|
857
|
+
name: string;
|
|
858
|
+
description: string;
|
|
859
|
+
inputSchema: {
|
|
860
|
+
type: string;
|
|
861
|
+
properties: {
|
|
862
|
+
campaignId: {
|
|
863
|
+
type: string;
|
|
864
|
+
description: string;
|
|
865
|
+
};
|
|
866
|
+
timeoutMs: {
|
|
867
|
+
type: string;
|
|
868
|
+
description: string;
|
|
869
|
+
};
|
|
870
|
+
intervalMs: {
|
|
871
|
+
type: string;
|
|
872
|
+
description: string;
|
|
873
|
+
};
|
|
874
|
+
requireRows: {
|
|
875
|
+
type: string;
|
|
876
|
+
description: string;
|
|
877
|
+
};
|
|
878
|
+
flowVersion: {
|
|
879
|
+
type: string;
|
|
880
|
+
enum: string[];
|
|
881
|
+
description: string;
|
|
882
|
+
};
|
|
883
|
+
leadListId?: undefined;
|
|
884
|
+
campaignOfferId?: undefined;
|
|
885
|
+
provider?: undefined;
|
|
886
|
+
jobId?: undefined;
|
|
887
|
+
targetLeadCount?: undefined;
|
|
888
|
+
requireComplete?: undefined;
|
|
889
|
+
};
|
|
890
|
+
required: string[];
|
|
891
|
+
additionalProperties: boolean;
|
|
892
|
+
};
|
|
893
|
+
} | {
|
|
894
|
+
name: string;
|
|
895
|
+
description: string;
|
|
896
|
+
inputSchema: {
|
|
897
|
+
type: string;
|
|
898
|
+
properties: {
|
|
899
|
+
campaignId: {
|
|
900
|
+
type: string;
|
|
901
|
+
};
|
|
902
|
+
tableId: {
|
|
903
|
+
type: string;
|
|
904
|
+
};
|
|
905
|
+
columnRole?: undefined;
|
|
906
|
+
rowSelector?: undefined;
|
|
907
|
+
limit?: undefined;
|
|
908
|
+
forceRerun?: undefined;
|
|
909
|
+
reason?: undefined;
|
|
910
|
+
minPassedCount?: undefined;
|
|
911
|
+
minGeneratedMessages?: undefined;
|
|
912
|
+
templateRevision?: undefined;
|
|
913
|
+
timeoutMs?: undefined;
|
|
914
|
+
intervalMs?: undefined;
|
|
915
|
+
templateMarkdown?: undefined;
|
|
916
|
+
approvedMessageTemplate?: undefined;
|
|
917
|
+
};
|
|
918
|
+
additionalProperties: boolean;
|
|
919
|
+
required?: undefined;
|
|
920
|
+
};
|
|
921
|
+
} | {
|
|
922
|
+
name: string;
|
|
923
|
+
description: string;
|
|
924
|
+
inputSchema: {
|
|
925
|
+
type: string;
|
|
926
|
+
properties: {
|
|
927
|
+
campaignId: {
|
|
928
|
+
type: string;
|
|
929
|
+
};
|
|
930
|
+
tableId: {
|
|
931
|
+
type: string;
|
|
932
|
+
};
|
|
933
|
+
columnRole: {
|
|
934
|
+
type: string;
|
|
935
|
+
enum: string[];
|
|
936
|
+
};
|
|
937
|
+
rowSelector: {
|
|
938
|
+
type: string;
|
|
939
|
+
properties: {
|
|
940
|
+
type: {
|
|
941
|
+
type: string;
|
|
942
|
+
enum: string[];
|
|
943
|
+
};
|
|
944
|
+
basisHash: {
|
|
945
|
+
type: string;
|
|
946
|
+
};
|
|
947
|
+
rowIds: {
|
|
948
|
+
type: string;
|
|
949
|
+
items: {
|
|
950
|
+
type: string;
|
|
951
|
+
};
|
|
952
|
+
};
|
|
953
|
+
limit: {
|
|
954
|
+
type: string;
|
|
955
|
+
};
|
|
956
|
+
};
|
|
957
|
+
required: string[];
|
|
958
|
+
additionalProperties: boolean;
|
|
959
|
+
};
|
|
960
|
+
limit: {
|
|
961
|
+
type: string;
|
|
962
|
+
};
|
|
963
|
+
forceRerun?: undefined;
|
|
964
|
+
reason?: undefined;
|
|
965
|
+
minPassedCount?: undefined;
|
|
966
|
+
minGeneratedMessages?: undefined;
|
|
967
|
+
templateRevision?: undefined;
|
|
968
|
+
timeoutMs?: undefined;
|
|
969
|
+
intervalMs?: undefined;
|
|
970
|
+
templateMarkdown?: undefined;
|
|
971
|
+
approvedMessageTemplate?: undefined;
|
|
972
|
+
};
|
|
973
|
+
required: string[];
|
|
974
|
+
additionalProperties: boolean;
|
|
975
|
+
};
|
|
976
|
+
} | {
|
|
977
|
+
name: string;
|
|
978
|
+
description: string;
|
|
979
|
+
inputSchema: {
|
|
980
|
+
type: string;
|
|
981
|
+
properties: {
|
|
982
|
+
campaignId: {
|
|
983
|
+
type: string;
|
|
984
|
+
};
|
|
985
|
+
tableId: {
|
|
986
|
+
type: string;
|
|
987
|
+
};
|
|
988
|
+
columnRole: {
|
|
989
|
+
type: string;
|
|
990
|
+
enum: string[];
|
|
991
|
+
};
|
|
992
|
+
rowSelector: {
|
|
993
|
+
type: string;
|
|
994
|
+
properties: {
|
|
995
|
+
type: {
|
|
996
|
+
type: string;
|
|
997
|
+
enum: string[];
|
|
998
|
+
};
|
|
999
|
+
basisHash: {
|
|
1000
|
+
type: string;
|
|
1001
|
+
};
|
|
1002
|
+
rowIds: {
|
|
1003
|
+
type: string;
|
|
1004
|
+
items: {
|
|
1005
|
+
type: string;
|
|
1006
|
+
};
|
|
1007
|
+
};
|
|
1008
|
+
limit: {
|
|
1009
|
+
type: string;
|
|
1010
|
+
};
|
|
1011
|
+
};
|
|
1012
|
+
required: string[];
|
|
1013
|
+
additionalProperties: boolean;
|
|
1014
|
+
};
|
|
1015
|
+
forceRerun: {
|
|
1016
|
+
type: string;
|
|
1017
|
+
};
|
|
1018
|
+
limit: {
|
|
1019
|
+
type: string;
|
|
1020
|
+
};
|
|
1021
|
+
reason: {
|
|
1022
|
+
type: string;
|
|
1023
|
+
};
|
|
1024
|
+
minPassedCount?: undefined;
|
|
1025
|
+
minGeneratedMessages?: undefined;
|
|
1026
|
+
templateRevision?: undefined;
|
|
1027
|
+
timeoutMs?: undefined;
|
|
1028
|
+
intervalMs?: undefined;
|
|
1029
|
+
templateMarkdown?: undefined;
|
|
1030
|
+
approvedMessageTemplate?: undefined;
|
|
1031
|
+
};
|
|
1032
|
+
required: string[];
|
|
1033
|
+
additionalProperties: boolean;
|
|
1034
|
+
};
|
|
1035
|
+
} | {
|
|
1036
|
+
name: string;
|
|
1037
|
+
description: string;
|
|
1038
|
+
inputSchema: {
|
|
1039
|
+
type: string;
|
|
1040
|
+
properties: {
|
|
1041
|
+
campaignId: {
|
|
1042
|
+
type: string;
|
|
1043
|
+
};
|
|
1044
|
+
tableId: {
|
|
1045
|
+
type: string;
|
|
1046
|
+
};
|
|
1047
|
+
minPassedCount: {
|
|
1048
|
+
type: string;
|
|
1049
|
+
};
|
|
1050
|
+
minGeneratedMessages: {
|
|
1051
|
+
type: string;
|
|
1052
|
+
};
|
|
1053
|
+
templateRevision: {
|
|
1054
|
+
type: string;
|
|
1055
|
+
description: string;
|
|
1056
|
+
};
|
|
1057
|
+
timeoutMs: {
|
|
1058
|
+
type: string;
|
|
1059
|
+
};
|
|
1060
|
+
intervalMs: {
|
|
1061
|
+
type: string;
|
|
1062
|
+
};
|
|
1063
|
+
columnRole?: undefined;
|
|
1064
|
+
rowSelector?: undefined;
|
|
1065
|
+
limit?: undefined;
|
|
1066
|
+
forceRerun?: undefined;
|
|
1067
|
+
reason?: undefined;
|
|
1068
|
+
templateMarkdown?: undefined;
|
|
1069
|
+
approvedMessageTemplate?: undefined;
|
|
1070
|
+
};
|
|
1071
|
+
additionalProperties: boolean;
|
|
1072
|
+
required?: undefined;
|
|
1073
|
+
};
|
|
1074
|
+
} | {
|
|
1075
|
+
name: string;
|
|
1076
|
+
description: string;
|
|
1077
|
+
inputSchema: {
|
|
1078
|
+
type: string;
|
|
1079
|
+
properties: {
|
|
1080
|
+
campaignId: {
|
|
1081
|
+
type: string;
|
|
1082
|
+
};
|
|
1083
|
+
tableId: {
|
|
1084
|
+
type: string;
|
|
1085
|
+
};
|
|
1086
|
+
templateMarkdown: {
|
|
1087
|
+
type: string;
|
|
1088
|
+
};
|
|
1089
|
+
approvedMessageTemplate: {
|
|
1090
|
+
type: string;
|
|
1091
|
+
};
|
|
1092
|
+
rowSelector: {
|
|
1093
|
+
type: string;
|
|
1094
|
+
properties: {
|
|
1095
|
+
type: {
|
|
1096
|
+
type: string;
|
|
1097
|
+
enum: string[];
|
|
1098
|
+
};
|
|
1099
|
+
rowIds: {
|
|
1100
|
+
type: string;
|
|
1101
|
+
items: {
|
|
1102
|
+
type: string;
|
|
1103
|
+
};
|
|
1104
|
+
};
|
|
1105
|
+
limit: {
|
|
1106
|
+
type: string;
|
|
1107
|
+
};
|
|
1108
|
+
basisHash?: undefined;
|
|
1109
|
+
};
|
|
1110
|
+
required: string[];
|
|
1111
|
+
additionalProperties: boolean;
|
|
1112
|
+
};
|
|
1113
|
+
limit: {
|
|
1114
|
+
type: string;
|
|
1115
|
+
};
|
|
1116
|
+
columnRole?: undefined;
|
|
1117
|
+
forceRerun?: undefined;
|
|
1118
|
+
reason?: undefined;
|
|
1119
|
+
minPassedCount?: undefined;
|
|
1120
|
+
minGeneratedMessages?: undefined;
|
|
1121
|
+
templateRevision?: undefined;
|
|
1122
|
+
timeoutMs?: undefined;
|
|
1123
|
+
intervalMs?: undefined;
|
|
1124
|
+
};
|
|
1125
|
+
required: string[];
|
|
1126
|
+
additionalProperties: boolean;
|
|
1127
|
+
};
|
|
856
1128
|
} | {
|
|
857
1129
|
name: string;
|
|
858
1130
|
description: string;
|
|
@@ -1282,43 +1554,6 @@ export declare const allTools: ({
|
|
|
1282
1554
|
};
|
|
1283
1555
|
required: never[];
|
|
1284
1556
|
};
|
|
1285
|
-
} | {
|
|
1286
|
-
name: string;
|
|
1287
|
-
description: string;
|
|
1288
|
-
inputSchema: {
|
|
1289
|
-
type: string;
|
|
1290
|
-
properties: {
|
|
1291
|
-
campaignId: {
|
|
1292
|
-
type: string;
|
|
1293
|
-
description: string;
|
|
1294
|
-
};
|
|
1295
|
-
timeoutMs: {
|
|
1296
|
-
type: string;
|
|
1297
|
-
description: string;
|
|
1298
|
-
};
|
|
1299
|
-
intervalMs: {
|
|
1300
|
-
type: string;
|
|
1301
|
-
description: string;
|
|
1302
|
-
};
|
|
1303
|
-
requireRows: {
|
|
1304
|
-
type: string;
|
|
1305
|
-
description: string;
|
|
1306
|
-
};
|
|
1307
|
-
flowVersion: {
|
|
1308
|
-
type: string;
|
|
1309
|
-
enum: string[];
|
|
1310
|
-
description: string;
|
|
1311
|
-
};
|
|
1312
|
-
leadListId?: undefined;
|
|
1313
|
-
campaignOfferId?: undefined;
|
|
1314
|
-
provider?: undefined;
|
|
1315
|
-
jobId?: undefined;
|
|
1316
|
-
targetLeadCount?: undefined;
|
|
1317
|
-
requireComplete?: undefined;
|
|
1318
|
-
};
|
|
1319
|
-
required: string[];
|
|
1320
|
-
additionalProperties: boolean;
|
|
1321
|
-
};
|
|
1322
1557
|
} | {
|
|
1323
1558
|
name: string;
|
|
1324
1559
|
description: string;
|
|
@@ -1393,6 +1628,7 @@ export declare const allTools: ({
|
|
|
1393
1628
|
jobId?: undefined;
|
|
1394
1629
|
reviewBatchLimit?: undefined;
|
|
1395
1630
|
allowPartialSourceList?: undefined;
|
|
1631
|
+
includeRawImportResult?: undefined;
|
|
1396
1632
|
selections?: undefined;
|
|
1397
1633
|
selectionMode?: undefined;
|
|
1398
1634
|
};
|
|
@@ -1570,6 +1806,7 @@ export declare const allTools: ({
|
|
|
1570
1806
|
jobId?: undefined;
|
|
1571
1807
|
reviewBatchLimit?: undefined;
|
|
1572
1808
|
allowPartialSourceList?: undefined;
|
|
1809
|
+
includeRawImportResult?: undefined;
|
|
1573
1810
|
selections?: undefined;
|
|
1574
1811
|
selectionMode?: undefined;
|
|
1575
1812
|
};
|
|
@@ -1646,6 +1883,7 @@ export declare const allTools: ({
|
|
|
1646
1883
|
jobId?: undefined;
|
|
1647
1884
|
reviewBatchLimit?: undefined;
|
|
1648
1885
|
allowPartialSourceList?: undefined;
|
|
1886
|
+
includeRawImportResult?: undefined;
|
|
1649
1887
|
selections?: undefined;
|
|
1650
1888
|
selectionMode?: undefined;
|
|
1651
1889
|
};
|
|
@@ -1794,6 +2032,7 @@ export declare const allTools: ({
|
|
|
1794
2032
|
jobId?: undefined;
|
|
1795
2033
|
reviewBatchLimit?: undefined;
|
|
1796
2034
|
allowPartialSourceList?: undefined;
|
|
2035
|
+
includeRawImportResult?: undefined;
|
|
1797
2036
|
selections?: undefined;
|
|
1798
2037
|
selectionMode?: undefined;
|
|
1799
2038
|
};
|
|
@@ -1884,6 +2123,7 @@ export declare const allTools: ({
|
|
|
1884
2123
|
jobId?: undefined;
|
|
1885
2124
|
reviewBatchLimit?: undefined;
|
|
1886
2125
|
allowPartialSourceList?: undefined;
|
|
2126
|
+
includeRawImportResult?: undefined;
|
|
1887
2127
|
selections?: undefined;
|
|
1888
2128
|
selectionMode?: undefined;
|
|
1889
2129
|
};
|
|
@@ -1983,6 +2223,7 @@ export declare const allTools: ({
|
|
|
1983
2223
|
jobId?: undefined;
|
|
1984
2224
|
reviewBatchLimit?: undefined;
|
|
1985
2225
|
allowPartialSourceList?: undefined;
|
|
2226
|
+
includeRawImportResult?: undefined;
|
|
1986
2227
|
selections?: undefined;
|
|
1987
2228
|
selectionMode?: undefined;
|
|
1988
2229
|
};
|
|
@@ -2064,6 +2305,7 @@ export declare const allTools: ({
|
|
|
2064
2305
|
jobId?: undefined;
|
|
2065
2306
|
reviewBatchLimit?: undefined;
|
|
2066
2307
|
allowPartialSourceList?: undefined;
|
|
2308
|
+
includeRawImportResult?: undefined;
|
|
2067
2309
|
selections?: undefined;
|
|
2068
2310
|
selectionMode?: undefined;
|
|
2069
2311
|
};
|
|
@@ -2684,6 +2926,7 @@ export declare const allTools: ({
|
|
|
2684
2926
|
jobId?: undefined;
|
|
2685
2927
|
reviewBatchLimit?: undefined;
|
|
2686
2928
|
allowPartialSourceList?: undefined;
|
|
2929
|
+
includeRawImportResult?: undefined;
|
|
2687
2930
|
selections?: undefined;
|
|
2688
2931
|
selectionMode?: undefined;
|
|
2689
2932
|
};
|
|
@@ -2817,6 +3060,7 @@ export declare const allTools: ({
|
|
|
2817
3060
|
jobId?: undefined;
|
|
2818
3061
|
reviewBatchLimit?: undefined;
|
|
2819
3062
|
allowPartialSourceList?: undefined;
|
|
3063
|
+
includeRawImportResult?: undefined;
|
|
2820
3064
|
selections?: undefined;
|
|
2821
3065
|
selectionMode?: undefined;
|
|
2822
3066
|
};
|
|
@@ -2938,6 +3182,7 @@ export declare const allTools: ({
|
|
|
2938
3182
|
jobId?: undefined;
|
|
2939
3183
|
reviewBatchLimit?: undefined;
|
|
2940
3184
|
allowPartialSourceList?: undefined;
|
|
3185
|
+
includeRawImportResult?: undefined;
|
|
2941
3186
|
selections?: undefined;
|
|
2942
3187
|
selectionMode?: undefined;
|
|
2943
3188
|
};
|
|
@@ -3017,6 +3262,7 @@ export declare const allTools: ({
|
|
|
3017
3262
|
jobId?: undefined;
|
|
3018
3263
|
reviewBatchLimit?: undefined;
|
|
3019
3264
|
allowPartialSourceList?: undefined;
|
|
3265
|
+
includeRawImportResult?: undefined;
|
|
3020
3266
|
selections?: undefined;
|
|
3021
3267
|
selectionMode?: undefined;
|
|
3022
3268
|
};
|
|
@@ -3068,6 +3314,10 @@ export declare const allTools: ({
|
|
|
3068
3314
|
type: string;
|
|
3069
3315
|
description: string;
|
|
3070
3316
|
};
|
|
3317
|
+
includeRawImportResult: {
|
|
3318
|
+
type: string;
|
|
3319
|
+
description: string;
|
|
3320
|
+
};
|
|
3071
3321
|
provider?: undefined;
|
|
3072
3322
|
searchMode?: undefined;
|
|
3073
3323
|
organization_num_employees_ranges?: undefined;
|
|
@@ -3230,6 +3480,7 @@ export declare const allTools: ({
|
|
|
3230
3480
|
jobId?: undefined;
|
|
3231
3481
|
reviewBatchLimit?: undefined;
|
|
3232
3482
|
allowPartialSourceList?: undefined;
|
|
3483
|
+
includeRawImportResult?: undefined;
|
|
3233
3484
|
};
|
|
3234
3485
|
required: string[];
|
|
3235
3486
|
};
|
|
@@ -3311,6 +3562,7 @@ export declare const allTools: ({
|
|
|
3311
3562
|
jobId?: undefined;
|
|
3312
3563
|
reviewBatchLimit?: undefined;
|
|
3313
3564
|
allowPartialSourceList?: undefined;
|
|
3565
|
+
includeRawImportResult?: undefined;
|
|
3314
3566
|
selections?: undefined;
|
|
3315
3567
|
selectionMode?: undefined;
|
|
3316
3568
|
};
|
package/dist/tools/registry.js
CHANGED
|
@@ -2,6 +2,7 @@ import { authToolDefinitions } from "./auth.js";
|
|
|
2
2
|
import { blueprintCommitToolDefinitions } from "./blueprint-commit.js";
|
|
3
3
|
import { bootstrapToolDefinitions } from "./bootstrap.js";
|
|
4
4
|
import { campaignToolDefinitions } from "./campaigns.js";
|
|
5
|
+
import { campaignProcessingToolDefinitions } from "./campaign-processing.js";
|
|
5
6
|
import { cellToolDefinitions } from "./cells.js";
|
|
6
7
|
import { startCliLoginToolDef, waitForCliLoginToolDef } from "./cli-login.js";
|
|
7
8
|
import { contextToolDefinitions } from "./context.js";
|
|
@@ -28,6 +29,7 @@ import { verifyRowToolDefinitions } from "./verify-row.js";
|
|
|
28
29
|
import { workspaceToolDefinitions } from "./workspaces.js";
|
|
29
30
|
export const allTools = [
|
|
30
31
|
...campaignToolDefinitions,
|
|
32
|
+
...campaignProcessingToolDefinitions,
|
|
31
33
|
...authToolDefinitions,
|
|
32
34
|
startCliLoginToolDef,
|
|
33
35
|
waitForCliLoginToolDef,
|
package/package.json
CHANGED
|
@@ -36,7 +36,11 @@ allowed-tools:
|
|
|
36
36
|
- mcp__sellable__check_rubric
|
|
37
37
|
- mcp__sellable__create_campaign
|
|
38
38
|
- mcp__sellable__save_rubrics
|
|
39
|
-
-
|
|
39
|
+
- mcp__sellable__get_campaign_table_schema
|
|
40
|
+
- mcp__sellable__select_campaign_cells
|
|
41
|
+
- mcp__sellable__queue_campaign_cells
|
|
42
|
+
- mcp__sellable__wait_for_campaign_processing
|
|
43
|
+
- mcp__sellable__revise_message_template_and_rerun
|
|
40
44
|
- mcp__sellable__update_campaign_brief
|
|
41
45
|
- mcp__sellable__update_campaign
|
|
42
46
|
- mcp__sellable__get_campaign
|
|
@@ -52,7 +56,6 @@ allowed-tools:
|
|
|
52
56
|
- mcp__sellable__get_table_rows
|
|
53
57
|
- mcp__sellable__load_csv_linkedin_leads
|
|
54
58
|
- mcp__sellable__load_csv_domains
|
|
55
|
-
- mcp__sellable__queue_cells
|
|
56
59
|
- mcp__sellable__get_campaign_messages_preview
|
|
57
60
|
- mcp__sellable__attach_sequence
|
|
58
61
|
- mcp__sellable__attach_recommended_sequence
|
|
@@ -132,9 +135,10 @@ label it explicitly as not estimated from this run.
|
|
|
132
135
|
Before any provider prompt, search, source scout, or signal-discovery call, show
|
|
133
136
|
one source-plan gate and ask for approval. Write this like a fifth grader could
|
|
134
137
|
understand it: short sentences, no internal labels, and no GTM shorthand. The
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
+
order is strict: first show the plan in chat, then open the approval question.
|
|
139
|
+
Do not open a generic approval first and reuse it after the plan. This first
|
|
140
|
+
approval only authorizes finding the best places to look for buyers. It does
|
|
141
|
+
not add anyone to the campaign yet. The gate should say:
|
|
138
142
|
|
|
139
143
|
- the buyer groups or places we could check
|
|
140
144
|
- the best place to start
|
|
@@ -183,9 +187,11 @@ instead and explain it in plain words once. Do not call `search_signals`,
|
|
|
183
187
|
`fetch_post_engagers`, or provider-scoped subagents until the user approves this
|
|
184
188
|
source plan or explicitly chooses a different source.
|
|
185
189
|
|
|
186
|
-
If the user
|
|
187
|
-
that answer satisfies the source-plan gate. Persist the
|
|
188
|
-
run the scouting/search next; do not ask a second
|
|
190
|
+
If the user answers a provider approval such as "Approve Prospeo plan" after
|
|
191
|
+
seeing the source plan, that answer satisfies the source-plan gate. Persist the
|
|
192
|
+
approved provider and run the scouting/search next; do not ask a second
|
|
193
|
+
source-plan approval question. A brief approval, generic "approve plan", or
|
|
194
|
+
provider state from before the visible source plan does not satisfy this gate.
|
|
189
195
|
|
|
190
196
|
For hiring-led campaigns, do not default to Sales Nav just because the target is
|
|
191
197
|
a role search. Prospeo is the primary lane when the brief asks for companies
|
|
@@ -748,10 +754,9 @@ updates.
|
|
|
748
754
|
asset loader so they share the same config.
|
|
749
755
|
3. Follow that prompt and workflow config exactly.
|
|
750
756
|
4. For message generation, use the `post-find-leads-message-scout` agent when
|
|
751
|
-
available. The worker and parent-thread fallback must load
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
until `hasMore=false`. Message review requires Message Draft Builder output:
|
|
757
|
+
available. The worker and parent-thread fallback must load
|
|
758
|
+
`mcp__sellable__get_subskill_prompt({ subskillName: "generate-messages-compact" })`.
|
|
759
|
+
Load lazy examples/critique/revision references only when needed. Message review requires Message Draft Builder output:
|
|
755
760
|
do not draft from a checklist, local markdown artifact, or parent-thread
|
|
756
761
|
intuition. Use campaign state, campaign brief content, selected source state, and
|
|
757
762
|
initial campaign-table execution slice rows as the source of truth; do not read stale local
|
|
@@ -21,7 +21,7 @@ validate-sample tool:
|
|
|
21
21
|
get_subskill_prompt({ subskillName: "create-campaign-v2-tail" })
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
CampaignOffer state and watch link are canonical. Resume,
|
|
24
|
+
CampaignOffer state and the watch link are canonical. Resume, gating, and handoff
|
|
25
25
|
read campaign state first: `campaignId`, `watchUrl`, `campaignBrief`,
|
|
26
26
|
`currentStep`, source/search association, `selectedLeadListId`,
|
|
27
27
|
`workflowTableId`, `leadScoringRubrics`, `approvedMessageTemplate`,
|
|
@@ -164,9 +164,8 @@ does not include `mode`, `workspaceId`, and `token`, recover a fresh link with
|
|
|
164
164
|
`create_campaign({ campaignId })` or `get_campaign` before asking for approval.
|
|
165
165
|
Later normal updates and approval turns must not print `Watch link:`; update
|
|
166
166
|
`currentStep` and `watchNarration` so the already-open app changes live. Reprint
|
|
167
|
-
only if asked or for missing/broken URL recovery. Never call browser-opening
|
|
168
|
-
|
|
169
|
-
link exists.
|
|
167
|
+
only if asked or for missing/broken URL recovery. Never call browser-opening tools,
|
|
168
|
+
Computer Use, shell `open`, or browser automation just because a watch link exists.
|
|
170
169
|
|
|
171
170
|
Every watched step switch must call:
|
|
172
171
|
|
|
@@ -182,16 +181,16 @@ copy.
|
|
|
182
181
|
## Lead Source
|
|
183
182
|
|
|
184
183
|
Default source order when unspecified: LinkedIn post engagement, Sales Nav
|
|
185
|
-
recent activity, broader Sales Nav title search, then Prospeo
|
|
186
|
-
|
|
184
|
+
recent activity, broader Sales Nav title search, then Prospeo. Use that order only
|
|
185
|
+
when not hiring-led. For hiring-by-role signals, start with Prospeo because
|
|
187
186
|
`search_prospeo` supports `company_job_posting_hiring_for` and
|
|
188
|
-
`company_job_posting_quantity`; Sales Nav
|
|
187
|
+
`company_job_posting_quantity`; Sales Nav does not provide hiring-by-role filters.
|
|
189
188
|
|
|
190
189
|
Before any provider prompt/search/scout call, move the watched campaign to
|
|
191
|
-
|
|
192
|
-
`request_user_input`, without repeating the
|
|
193
|
-
|
|
194
|
-
|
|
190
|
+
source selection, show `## Find Buyers Plan`, then open
|
|
191
|
+
`request_user_input`, without repeating the URL. The plan must appear
|
|
192
|
+
before the question. Never ask first and reuse that approval. This only
|
|
193
|
+
authorizes where to look; it does not add anyone yet. Write:
|
|
195
194
|
|
|
196
195
|
- the buyer groups or places we could check
|
|
197
196
|
- the best place to start
|
|
@@ -212,12 +211,12 @@ specific. If LinkedIn engagement is recommended, name the exact post themes in
|
|
|
212
211
|
plain language. Avoid using
|
|
213
212
|
"Signal Discovery", "lead-source scouting", "source scouting", "lane", "provider",
|
|
214
213
|
"precision/scale tradeoff", "evidence quality", "pilot volume", "workflow
|
|
215
|
-
pain", or "ICP" in
|
|
214
|
+
pain", or "ICP" in chat; those are internal labels. If the
|
|
216
215
|
campaign looks unlikely
|
|
217
|
-
to have
|
|
218
|
-
Prospeo path instead and explain it in plain words once.
|
|
219
|
-
|
|
220
|
-
|
|
216
|
+
to have public conversations, recommend the specific Sales Nav or
|
|
217
|
+
Prospeo path instead and explain it in plain words once. Only the approval
|
|
218
|
+
question shown after that visible plan, or an explicit source choice made after
|
|
219
|
+
seeing it, satisfies this gate. Do not ask a second source-plan question. Do not call `search_signals`,
|
|
221
220
|
`search_sales_nav`,
|
|
222
221
|
`search_prospeo`,
|
|
223
222
|
`fetch_post_engagers`, or provider-scoped subagents until the user approves this
|
|
@@ -285,9 +284,9 @@ customer-facing source-choice labels.
|
|
|
285
284
|
|
|
286
285
|
## Post-Lead Workstreams
|
|
287
286
|
|
|
288
|
-
After `confirm_lead_list` copies a non-empty confirmed source into the campaign
|
|
289
|
-
|
|
290
|
-
|
|
287
|
+
After `confirm_lead_list` copies a non-empty confirmed source into the campaign
|
|
288
|
+
and records the compact review batch, ask the filter-choice question
|
|
289
|
+
immediately. Do not call
|
|
291
290
|
`get_post_find_leads_scout_registry`, load filter/message subskill prompts, or
|
|
292
291
|
spawn post-lead workers before that question. The only customer-facing work
|
|
293
292
|
before the question should be a short campaign setup summary and the choice:
|
|
@@ -317,14 +316,13 @@ Run `post-find-leads-message-scout` as the background Message Draft Builder
|
|
|
317
316
|
whenever the host exposes it. It must load:
|
|
318
317
|
|
|
319
318
|
```text
|
|
320
|
-
get_subskill_prompt({ subskillName: "generate-messages"
|
|
319
|
+
get_subskill_prompt({ subskillName: "generate-messages-compact" })
|
|
321
320
|
```
|
|
322
321
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
`messageDraftRecommendation` proves current campaign/table
|
|
327
|
-
`generate-messages` basis.
|
|
322
|
+
Load `generate-messages-compact/references/examples-critique-revision.md` only
|
|
323
|
+
for critique/revision. If the host cannot launch the agent, the parent fallback
|
|
324
|
+
must run the same compact prompt from live campaign state. Do not render message
|
|
325
|
+
review until `messageDraftRecommendation` proves current campaign/table basis.
|
|
328
326
|
|
|
329
327
|
## Hard Gates
|
|
330
328
|
|
|
@@ -243,8 +243,9 @@ call, move the watched campaign to the provider/source page, then give the user
|
|
|
243
243
|
a compact source plan in grade-5 language: "here are the places we could look, I
|
|
244
244
|
recommend starting here, here is why, and here is where I'll look next if this
|
|
245
245
|
is too thin." The order matters: show the plan in normal chat first, then open
|
|
246
|
-
the approval question. Do not
|
|
247
|
-
|
|
246
|
+
the approval question. Do not reuse a brief approval, a generic "approve plan",
|
|
247
|
+
or provider state from before the user saw the plan. Do not reprint the watch
|
|
248
|
+
link during source/provider selection. Ask them to approve that plan or choose a different source. Use plain
|
|
248
249
|
customer language for the boundary: "This only approves me to look for the best
|
|
249
250
|
places to find buyers. I won't add anyone yet." After brief approval, say
|
|
250
251
|
"Brief approved. Next, we'll choose where to find buyers. I won't add anyone
|
|
@@ -302,8 +303,8 @@ surface install status to the customer.
|
|
|
302
303
|
|
|
303
304
|
For post-lead work, call `get_post_find_leads_scout_registry` after
|
|
304
305
|
the user chooses filters, not before the filter-choice question. After
|
|
305
|
-
`confirm_lead_list` copies source rows and
|
|
306
|
-
|
|
306
|
+
`confirm_lead_list` copies source rows and records the first review/process
|
|
307
|
+
sample, ask add-filters vs skip-filters
|
|
307
308
|
immediately. Once the user answers, start `post-find-leads-message-scout` /
|
|
308
309
|
message generation from the same campaign/table basis. If the user chooses
|
|
309
310
|
filters, also start `post-find-leads-filter-scout`, move the browser to Filter
|
|
@@ -353,6 +354,12 @@ At the brief approval gate, do not add a negative list of future steps that are
|
|
|
353
354
|
not approved. Ask approve/revise in plain language, then move to choosing where
|
|
354
355
|
to find buyers.
|
|
355
356
|
|
|
357
|
+
At message review, if the user asks for edits, write the revised template and
|
|
358
|
+
examples before asking approval again. Do not ask whether an unseen revision is
|
|
359
|
+
better. Save to the campaign only after `approve-message`.
|
|
360
|
+
During message generation or revision, do not call `request_user_input` or
|
|
361
|
+
`AskUserQuestion`; render the revised copy first, then enter message review.
|
|
362
|
+
|
|
356
363
|
## What To Avoid
|
|
357
364
|
|
|
358
365
|
- Do not mention MCP namespaces, prompt chunking, plugin cache paths, local skill
|