@sellable/mcp 0.1.254 → 0.1.255

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/dist/server.js CHANGED
@@ -18,7 +18,7 @@ import { copySenderConfigTool, getEngageMemoryTool, migrateFlatConfigsTool, reco
18
18
  import { getEngageStateTool, setEngageStateTool, } from "./tools/engage-state.js";
19
19
  import { bulkEnrichWithProspeo, enrichWithProspeo, getProspeoCredits, } from "./tools/enrichment.js";
20
20
  import { getCampaignFramework } from "./tools/framework.js";
21
- import { cancelLeadImport, confirmProspeoCompanyAccounts, confirmLeadList, getProviderPrompt, importLeads, loadCsvDncEntriesTool, loadCsvDomains, loadCsvLinkedinLeads, lookupSalesNavFilter, saveDomainFilters, searchApollo, searchProspeoCompanies, searchProspeo, searchSalesNav, searchSignals, selectPromisingPosts, setHeadlineICPCriteria, } from "./tools/leads.js";
21
+ import { cancelLeadImport, confirmProspeoCompanyAccounts, confirmLeadList, getProviderPrompt, importLeads, listDncEntriesTool, loadCsvDncEntriesTool, loadCsvDomains, loadCsvLinkedinLeads, lookupSalesNavFilter, saveDomainFilters, searchApollo, searchProspeoCompanies, searchProspeo, searchSalesNav, searchSignals, selectPromisingPosts, setHeadlineICPCriteria, } from "./tools/leads.js";
22
22
  import { fetchCompany, fetchCompanyPosts, fetchLinkedInPosts, fetchLinkedInProfile, fetchPostEngagers, getLinkedInProfile, getUserPosts, } from "./tools/linkedin.js";
23
23
  import { getCampaignNavigationState } from "./tools/navigation.js";
24
24
  import { addOnDemandLeads, createOnDemandCampaign, createOnDemandTable, initOnDemandSequence, pauseOnDemandCampaign, startOnDemandCampaign, } from "./tools/one-off.js";
@@ -366,6 +366,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
366
366
  case "load_csv_dnc_entries":
367
367
  result = await loadCsvDncEntriesTool(args);
368
368
  break;
369
+ case "list_dnc_entries":
370
+ result = await listDncEntriesTool(args);
371
+ break;
369
372
  case "save_domain_filters":
370
373
  result = await saveDomainFilters(args);
371
374
  break;
@@ -1,3 +1,4 @@
1
+ type DncSourceType = "all" | "manual" | "hubspot";
1
2
  type InvalidDncRow = {
2
3
  row: number;
3
4
  column: string | null;
@@ -14,6 +15,41 @@ export type LoadCsvDncEntriesInput = {
14
15
  confirmationToken?: string;
15
16
  confirmed?: boolean;
16
17
  };
18
+ export type ListDncEntriesInput = {
19
+ page?: number;
20
+ limit?: number;
21
+ search?: string;
22
+ listName?: string;
23
+ sourceType?: DncSourceType;
24
+ includeDeleted?: boolean;
25
+ };
26
+ export declare function listDncEntries(input?: ListDncEntriesInput): Promise<{
27
+ ok: boolean;
28
+ workspaceId: string;
29
+ workspaceName: string;
30
+ pagination: {
31
+ total: number;
32
+ page: number;
33
+ limit: number;
34
+ totalPages: number;
35
+ };
36
+ listNames: string[];
37
+ entries: {
38
+ id: string | null;
39
+ type: string;
40
+ domain: string | null;
41
+ linkedin: string | null;
42
+ linkedinUsername: string | null;
43
+ name: string | null;
44
+ source: {
45
+ type: string;
46
+ label: string;
47
+ listName: string | null;
48
+ };
49
+ createdAt: string | null;
50
+ }[];
51
+ guidance: string;
52
+ }>;
17
53
  export declare function loadCsvDncEntries(input: LoadCsvDncEntriesInput): Promise<{
18
54
  guidance: string;
19
55
  createdCount: number;
@@ -14,6 +14,7 @@ const CONFIRMATION_TOKEN_VERSION = "csv-dnc-preview-v1";
14
14
  const confirmationSecret = randomBytes(32).toString("hex");
15
15
  const MAX_DNC_UPLOAD_BYTES = 5 * 1024 * 1024;
16
16
  const MAX_DNC_CANDIDATES = 7500;
17
+ const MAX_DNC_LIST_LIMIT = 100;
17
18
  const STRONG_DOMAIN_HEADER_KEYS = new Set([
18
19
  "domain",
19
20
  "website",
@@ -325,16 +326,84 @@ async function getVerifiedActiveWorkspace() {
325
326
  const config = getConfig();
326
327
  const activeWorkspaceId = config.activeWorkspaceId || config.workspaceId;
327
328
  if (!activeWorkspaceId) {
328
- throw new Error("No active workspace selected. Run list_workspaces then set_active_workspace before importing DNC entries.");
329
+ throw new Error("No active workspace selected. Run list_workspaces then set_active_workspace for the exact workspace whose Sellable DNC list should be read or updated.");
329
330
  }
330
331
  const api = getApi();
331
332
  const { workspaces } = await api.get("/api/v3/workspaces");
332
333
  const match = workspaces.find((workspace) => workspace.id === activeWorkspaceId);
333
334
  if (!match) {
334
- throw new Error(`Active workspace ${activeWorkspaceId} is not in the server access list. Run list_workspaces then set_active_workspace for the workspace that should receive the DNC import.`);
335
+ throw new Error(`Active workspace ${activeWorkspaceId} is not in the server access list. Run list_workspaces then set_active_workspace for the exact workspace whose Sellable DNC list should be read or updated.`);
335
336
  }
336
337
  return match;
337
338
  }
339
+ function clampListPositiveInt(value, fallback, max) {
340
+ const parsed = typeof value === "number"
341
+ ? value
342
+ : Number.parseInt(String(value ?? ""), 10);
343
+ if (!Number.isFinite(parsed) || parsed < 1)
344
+ return fallback;
345
+ return Math.min(Math.floor(parsed), max);
346
+ }
347
+ function normalizeDncSourceType(value) {
348
+ if (value === undefined || value === null || value === "")
349
+ return "all";
350
+ if (value === "all" || value === "manual" || value === "hubspot") {
351
+ return value;
352
+ }
353
+ throw new Error("sourceType must be one of all, manual, or hubspot.");
354
+ }
355
+ function optionalTrimmed(value) {
356
+ return typeof value === "string" && value.trim() ? value.trim() : null;
357
+ }
358
+ function normalizeCreatedAt(value) {
359
+ if (value instanceof Date)
360
+ return value.toISOString();
361
+ return optionalTrimmed(value);
362
+ }
363
+ function compactDncListEntry(entry) {
364
+ const domain = optionalTrimmed(entry.domain);
365
+ const linkedin = optionalTrimmed(entry.normalizedLinkedinUrl);
366
+ const sourceType = optionalTrimmed(entry.sourceType) ?? "manual";
367
+ return {
368
+ id: optionalTrimmed(entry.id),
369
+ type: domain ? "domain" : "linkedin",
370
+ domain,
371
+ linkedin,
372
+ linkedinUsername: optionalTrimmed(entry.linkedinUsername),
373
+ name: optionalTrimmed(entry.name),
374
+ source: {
375
+ type: sourceType,
376
+ label: optionalTrimmed(entry.sourceLabel) ??
377
+ (sourceType === "hubspot" ? "HubSpot" : "Manual"),
378
+ listName: optionalTrimmed(entry.sourceListName),
379
+ },
380
+ createdAt: normalizeCreatedAt(entry.createdAt),
381
+ };
382
+ }
383
+ function buildDncListPath(input) {
384
+ const page = clampListPositiveInt(input.page, 1, Number.MAX_SAFE_INTEGER);
385
+ const limit = clampListPositiveInt(input.limit, 25, MAX_DNC_LIST_LIMIT);
386
+ const sourceType = normalizeDncSourceType(input.sourceType);
387
+ const params = new URLSearchParams({
388
+ page: String(page),
389
+ limit: String(limit),
390
+ });
391
+ const search = optionalTrimmed(input.search);
392
+ const listName = optionalTrimmed(input.listName);
393
+ if (search)
394
+ params.set("search", search);
395
+ if (listName)
396
+ params.set("listName", listName);
397
+ if (sourceType !== "all")
398
+ params.set("sourceType", sourceType);
399
+ if (input.includeDeleted === true)
400
+ params.set("includeDeleted", "true");
401
+ return {
402
+ path: `/api/v3/dnc-list?${params.toString()}`,
403
+ page,
404
+ limit,
405
+ };
406
+ }
338
407
  function makeSignature(payload) {
339
408
  return createHmac("sha256", confirmationSecret)
340
409
  .update(JSON.stringify(payload))
@@ -556,6 +625,29 @@ async function runDncSpotChecks(entries) {
556
625
  }
557
626
  return checks;
558
627
  }
628
+ export async function listDncEntries(input = {}) {
629
+ const workspace = await getVerifiedActiveWorkspace();
630
+ const api = getApi();
631
+ const request = buildDncListPath(input);
632
+ const response = await api.get(request.path);
633
+ const pagination = response.pagination ?? {};
634
+ return {
635
+ ok: true,
636
+ workspaceId: workspace.id,
637
+ workspaceName: workspace.name,
638
+ pagination: {
639
+ total: pagination.total ?? 0,
640
+ page: pagination.page ?? request.page,
641
+ limit: pagination.limit ?? request.limit,
642
+ totalPages: pagination.totalPages ?? 0,
643
+ },
644
+ listNames: Array.isArray(response.listNames) ? response.listNames : [],
645
+ entries: Array.isArray(response.entries)
646
+ ? response.entries.map(compactDncListEntry)
647
+ : [],
648
+ guidance: "This is Sellable's workspace DNC list used by DNC Check.",
649
+ };
650
+ }
559
651
  export async function loadCsvDncEntries(input) {
560
652
  const workspace = await getVerifiedActiveWorkspace();
561
653
  const api = getApi();
@@ -1,4 +1,4 @@
1
- import { type LoadCsvDncEntriesInput } from "./csv-dnc.js";
1
+ import { type ListDncEntriesInput, type LoadCsvDncEntriesInput } from "./csv-dnc.js";
2
2
  export declare const MAX_SIGNAL_DISCOVERY_POSTS = 10;
3
3
  export declare function normalizeTargetLeadCount(targetLeadCount: unknown, maxImportCount: number): number | undefined;
4
4
  type SignalPostForImportSelection = {
@@ -248,6 +248,11 @@ export declare const leadToolDefinitions: ({
248
248
  leadListId?: undefined;
249
249
  leadListName?: undefined;
250
250
  linkedInColumn?: undefined;
251
+ limit?: undefined;
252
+ search?: undefined;
253
+ listName?: undefined;
254
+ sourceType?: undefined;
255
+ includeDeleted?: undefined;
251
256
  csvText?: undefined;
252
257
  rawText?: undefined;
253
258
  name?: undefined;
@@ -255,7 +260,6 @@ export declare const leadToolDefinitions: ({
255
260
  exclude?: undefined;
256
261
  seedCompanies?: undefined;
257
262
  seedDomains?: undefined;
258
- limit?: undefined;
259
263
  sort?: undefined;
260
264
  previewOnly?: undefined;
261
265
  companySearchToken?: undefined;
@@ -436,6 +440,11 @@ export declare const leadToolDefinitions: ({
436
440
  leadListId?: undefined;
437
441
  leadListName?: undefined;
438
442
  linkedInColumn?: undefined;
443
+ limit?: undefined;
444
+ search?: undefined;
445
+ listName?: undefined;
446
+ sourceType?: undefined;
447
+ includeDeleted?: undefined;
439
448
  csvText?: undefined;
440
449
  rawText?: undefined;
441
450
  name?: undefined;
@@ -443,7 +452,6 @@ export declare const leadToolDefinitions: ({
443
452
  exclude?: undefined;
444
453
  seedCompanies?: undefined;
445
454
  seedDomains?: undefined;
446
- limit?: undefined;
447
455
  sort?: undefined;
448
456
  previewOnly?: undefined;
449
457
  companySearchToken?: undefined;
@@ -523,6 +531,11 @@ export declare const leadToolDefinitions: ({
523
531
  leadListId?: undefined;
524
532
  leadListName?: undefined;
525
533
  linkedInColumn?: undefined;
534
+ limit?: undefined;
535
+ search?: undefined;
536
+ listName?: undefined;
537
+ sourceType?: undefined;
538
+ includeDeleted?: undefined;
526
539
  csvText?: undefined;
527
540
  rawText?: undefined;
528
541
  name?: undefined;
@@ -530,7 +543,6 @@ export declare const leadToolDefinitions: ({
530
543
  exclude?: undefined;
531
544
  seedCompanies?: undefined;
532
545
  seedDomains?: undefined;
533
- limit?: undefined;
534
546
  sort?: undefined;
535
547
  previewOnly?: undefined;
536
548
  companySearchToken?: undefined;
@@ -682,6 +694,11 @@ export declare const leadToolDefinitions: ({
682
694
  leadListId?: undefined;
683
695
  leadListName?: undefined;
684
696
  linkedInColumn?: undefined;
697
+ limit?: undefined;
698
+ search?: undefined;
699
+ listName?: undefined;
700
+ sourceType?: undefined;
701
+ includeDeleted?: undefined;
685
702
  csvText?: undefined;
686
703
  rawText?: undefined;
687
704
  name?: undefined;
@@ -689,7 +706,6 @@ export declare const leadToolDefinitions: ({
689
706
  exclude?: undefined;
690
707
  seedCompanies?: undefined;
691
708
  seedDomains?: undefined;
692
- limit?: undefined;
693
709
  sort?: undefined;
694
710
  previewOnly?: undefined;
695
711
  companySearchToken?: undefined;
@@ -783,6 +799,11 @@ export declare const leadToolDefinitions: ({
783
799
  leadListId?: undefined;
784
800
  leadListName?: undefined;
785
801
  linkedInColumn?: undefined;
802
+ limit?: undefined;
803
+ search?: undefined;
804
+ listName?: undefined;
805
+ sourceType?: undefined;
806
+ includeDeleted?: undefined;
786
807
  csvText?: undefined;
787
808
  rawText?: undefined;
788
809
  name?: undefined;
@@ -790,7 +811,6 @@ export declare const leadToolDefinitions: ({
790
811
  exclude?: undefined;
791
812
  seedCompanies?: undefined;
792
813
  seedDomains?: undefined;
793
- limit?: undefined;
794
814
  sort?: undefined;
795
815
  previewOnly?: undefined;
796
816
  companySearchToken?: undefined;
@@ -893,6 +913,11 @@ export declare const leadToolDefinitions: ({
893
913
  query?: undefined;
894
914
  keywords?: undefined;
895
915
  domainColumn?: undefined;
916
+ limit?: undefined;
917
+ search?: undefined;
918
+ listName?: undefined;
919
+ sourceType?: undefined;
920
+ includeDeleted?: undefined;
896
921
  csvText?: undefined;
897
922
  rawText?: undefined;
898
923
  name?: undefined;
@@ -900,7 +925,6 @@ export declare const leadToolDefinitions: ({
900
925
  exclude?: undefined;
901
926
  seedCompanies?: undefined;
902
927
  seedDomains?: undefined;
903
- limit?: undefined;
904
928
  sort?: undefined;
905
929
  previewOnly?: undefined;
906
930
  companySearchToken?: undefined;
@@ -930,6 +954,109 @@ export declare const leadToolDefinitions: ({
930
954
  };
931
955
  required: string[];
932
956
  };
957
+ } | {
958
+ name: string;
959
+ description: string;
960
+ inputSchema: {
961
+ type: string;
962
+ properties: {
963
+ page: {
964
+ type: string;
965
+ description: string;
966
+ };
967
+ limit: {
968
+ type: string;
969
+ description: string;
970
+ };
971
+ search: {
972
+ type: string;
973
+ description: string;
974
+ };
975
+ listName: {
976
+ type: string;
977
+ description: string;
978
+ };
979
+ sourceType: {
980
+ type: string;
981
+ enum: string[];
982
+ description: string;
983
+ };
984
+ includeDeleted: {
985
+ type: string;
986
+ description: string;
987
+ };
988
+ provider?: undefined;
989
+ campaignOfferId?: undefined;
990
+ confirmed?: undefined;
991
+ searchMode?: undefined;
992
+ organization_num_employees_ranges?: undefined;
993
+ organization_locations?: undefined;
994
+ organization_not_locations?: undefined;
995
+ q_organization_keyword_tags?: undefined;
996
+ organization_industry_tag_ids?: undefined;
997
+ latest_funding_amount_min?: undefined;
998
+ latest_funding_amount_max?: undefined;
999
+ organization_revenue_min?: undefined;
1000
+ organization_revenue_max?: undefined;
1001
+ person_titles?: undefined;
1002
+ person_seniorities?: undefined;
1003
+ person_locations?: undefined;
1004
+ include_similar_titles?: undefined;
1005
+ q_keywords?: undefined;
1006
+ filters?: undefined;
1007
+ companyFilters?: undefined;
1008
+ contactFilters?: undefined;
1009
+ searchId?: undefined;
1010
+ searchName?: undefined;
1011
+ companySearchMode?: undefined;
1012
+ uploadedDomains?: undefined;
1013
+ currentStep?: undefined;
1014
+ filterType?: undefined;
1015
+ query?: undefined;
1016
+ keywords?: undefined;
1017
+ filePath?: undefined;
1018
+ domainColumn?: undefined;
1019
+ selectedColumns?: undefined;
1020
+ confirmationToken?: undefined;
1021
+ leadListId?: undefined;
1022
+ leadListName?: undefined;
1023
+ linkedInColumn?: undefined;
1024
+ csvText?: undefined;
1025
+ rawText?: undefined;
1026
+ name?: undefined;
1027
+ include?: undefined;
1028
+ exclude?: undefined;
1029
+ seedCompanies?: undefined;
1030
+ seedDomains?: undefined;
1031
+ sort?: undefined;
1032
+ previewOnly?: undefined;
1033
+ companySearchToken?: undefined;
1034
+ selectedCompanyIds?: undefined;
1035
+ domainFilterId?: undefined;
1036
+ type?: undefined;
1037
+ profileUrl?: undefined;
1038
+ postUrl?: undefined;
1039
+ companyUrl?: undefined;
1040
+ headlineICPCriteria?: undefined;
1041
+ rubricGuidelines?: undefined;
1042
+ sourceLeadListId?: undefined;
1043
+ targetLeadCount?: undefined;
1044
+ mode?: undefined;
1045
+ targetEngagerCount?: undefined;
1046
+ maxPostsToScrape?: undefined;
1047
+ tableId?: undefined;
1048
+ campaignName?: undefined;
1049
+ keepInSync?: undefined;
1050
+ jobId?: undefined;
1051
+ reviewBatchLimit?: undefined;
1052
+ allowPartialSourceList?: undefined;
1053
+ includeRawImportResult?: undefined;
1054
+ selections?: undefined;
1055
+ selectionMode?: undefined;
1056
+ scrapePlanMode?: undefined;
1057
+ };
1058
+ required: never[];
1059
+ };
933
1060
  } | {
934
1061
  name: string;
935
1062
  description: string;
@@ -1000,11 +1127,15 @@ export declare const leadToolDefinitions: ({
1000
1127
  selectedColumns?: undefined;
1001
1128
  leadListId?: undefined;
1002
1129
  leadListName?: undefined;
1130
+ limit?: undefined;
1131
+ search?: undefined;
1132
+ listName?: undefined;
1133
+ sourceType?: undefined;
1134
+ includeDeleted?: undefined;
1003
1135
  include?: undefined;
1004
1136
  exclude?: undefined;
1005
1137
  seedCompanies?: undefined;
1006
1138
  seedDomains?: undefined;
1007
- limit?: undefined;
1008
1139
  sort?: undefined;
1009
1140
  previewOnly?: undefined;
1010
1141
  companySearchToken?: undefined;
@@ -1091,12 +1222,16 @@ export declare const leadToolDefinitions: ({
1091
1222
  leadListId?: undefined;
1092
1223
  leadListName?: undefined;
1093
1224
  linkedInColumn?: undefined;
1225
+ limit?: undefined;
1226
+ search?: undefined;
1227
+ listName?: undefined;
1228
+ sourceType?: undefined;
1229
+ includeDeleted?: undefined;
1094
1230
  csvText?: undefined;
1095
1231
  rawText?: undefined;
1096
1232
  name?: undefined;
1097
1233
  seedCompanies?: undefined;
1098
1234
  seedDomains?: undefined;
1099
- limit?: undefined;
1100
1235
  sort?: undefined;
1101
1236
  previewOnly?: undefined;
1102
1237
  companySearchToken?: undefined;
@@ -1978,6 +2113,10 @@ export declare const leadToolDefinitions: ({
1978
2113
  leadListId?: undefined;
1979
2114
  leadListName?: undefined;
1980
2115
  linkedInColumn?: undefined;
2116
+ search?: undefined;
2117
+ listName?: undefined;
2118
+ sourceType?: undefined;
2119
+ includeDeleted?: undefined;
1981
2120
  csvText?: undefined;
1982
2121
  rawText?: undefined;
1983
2122
  name?: undefined;
@@ -2077,13 +2216,17 @@ export declare const leadToolDefinitions: ({
2077
2216
  leadListId?: undefined;
2078
2217
  leadListName?: undefined;
2079
2218
  linkedInColumn?: undefined;
2219
+ limit?: undefined;
2220
+ search?: undefined;
2221
+ listName?: undefined;
2222
+ sourceType?: undefined;
2223
+ includeDeleted?: undefined;
2080
2224
  csvText?: undefined;
2081
2225
  rawText?: undefined;
2082
2226
  include?: undefined;
2083
2227
  exclude?: undefined;
2084
2228
  seedCompanies?: undefined;
2085
2229
  seedDomains?: undefined;
2086
- limit?: undefined;
2087
2230
  sort?: undefined;
2088
2231
  previewOnly?: undefined;
2089
2232
  domainFilterId?: undefined;
@@ -3114,6 +3257,11 @@ export declare const leadToolDefinitions: ({
3114
3257
  leadListId?: undefined;
3115
3258
  leadListName?: undefined;
3116
3259
  linkedInColumn?: undefined;
3260
+ limit?: undefined;
3261
+ search?: undefined;
3262
+ listName?: undefined;
3263
+ sourceType?: undefined;
3264
+ includeDeleted?: undefined;
3117
3265
  csvText?: undefined;
3118
3266
  rawText?: undefined;
3119
3267
  name?: undefined;
@@ -3121,7 +3269,6 @@ export declare const leadToolDefinitions: ({
3121
3269
  exclude?: undefined;
3122
3270
  seedCompanies?: undefined;
3123
3271
  seedDomains?: undefined;
3124
- limit?: undefined;
3125
3272
  sort?: undefined;
3126
3273
  previewOnly?: undefined;
3127
3274
  companySearchToken?: undefined;
@@ -3264,6 +3411,10 @@ export declare const leadToolDefinitions: ({
3264
3411
  leadListId?: undefined;
3265
3412
  leadListName?: undefined;
3266
3413
  linkedInColumn?: undefined;
3414
+ search?: undefined;
3415
+ listName?: undefined;
3416
+ sourceType?: undefined;
3417
+ includeDeleted?: undefined;
3267
3418
  csvText?: undefined;
3268
3419
  rawText?: undefined;
3269
3420
  name?: undefined;
@@ -3396,6 +3547,11 @@ export declare const leadToolDefinitions: ({
3396
3547
  confirmationToken?: undefined;
3397
3548
  leadListId?: undefined;
3398
3549
  linkedInColumn?: undefined;
3550
+ limit?: undefined;
3551
+ search?: undefined;
3552
+ listName?: undefined;
3553
+ sourceType?: undefined;
3554
+ includeDeleted?: undefined;
3399
3555
  csvText?: undefined;
3400
3556
  rawText?: undefined;
3401
3557
  name?: undefined;
@@ -3403,7 +3559,6 @@ export declare const leadToolDefinitions: ({
3403
3559
  exclude?: undefined;
3404
3560
  seedCompanies?: undefined;
3405
3561
  seedDomains?: undefined;
3406
- limit?: undefined;
3407
3562
  sort?: undefined;
3408
3563
  previewOnly?: undefined;
3409
3564
  companySearchToken?: undefined;
@@ -3480,6 +3635,11 @@ export declare const leadToolDefinitions: ({
3480
3635
  leadListId?: undefined;
3481
3636
  leadListName?: undefined;
3482
3637
  linkedInColumn?: undefined;
3638
+ limit?: undefined;
3639
+ search?: undefined;
3640
+ listName?: undefined;
3641
+ sourceType?: undefined;
3642
+ includeDeleted?: undefined;
3483
3643
  csvText?: undefined;
3484
3644
  rawText?: undefined;
3485
3645
  name?: undefined;
@@ -3487,7 +3647,6 @@ export declare const leadToolDefinitions: ({
3487
3647
  exclude?: undefined;
3488
3648
  seedCompanies?: undefined;
3489
3649
  seedDomains?: undefined;
3490
- limit?: undefined;
3491
3650
  sort?: undefined;
3492
3651
  previewOnly?: undefined;
3493
3652
  companySearchToken?: undefined;
@@ -3600,6 +3759,11 @@ export declare const leadToolDefinitions: ({
3600
3759
  leadListId?: undefined;
3601
3760
  leadListName?: undefined;
3602
3761
  linkedInColumn?: undefined;
3762
+ limit?: undefined;
3763
+ search?: undefined;
3764
+ listName?: undefined;
3765
+ sourceType?: undefined;
3766
+ includeDeleted?: undefined;
3603
3767
  csvText?: undefined;
3604
3768
  rawText?: undefined;
3605
3769
  name?: undefined;
@@ -3607,7 +3771,6 @@ export declare const leadToolDefinitions: ({
3607
3771
  exclude?: undefined;
3608
3772
  seedCompanies?: undefined;
3609
3773
  seedDomains?: undefined;
3610
- limit?: undefined;
3611
3774
  sort?: undefined;
3612
3775
  previewOnly?: undefined;
3613
3776
  companySearchToken?: undefined;
@@ -3725,6 +3888,11 @@ export declare const leadToolDefinitions: ({
3725
3888
  leadListId?: undefined;
3726
3889
  leadListName?: undefined;
3727
3890
  linkedInColumn?: undefined;
3891
+ limit?: undefined;
3892
+ search?: undefined;
3893
+ listName?: undefined;
3894
+ sourceType?: undefined;
3895
+ includeDeleted?: undefined;
3728
3896
  csvText?: undefined;
3729
3897
  rawText?: undefined;
3730
3898
  name?: undefined;
@@ -3732,7 +3900,6 @@ export declare const leadToolDefinitions: ({
3732
3900
  exclude?: undefined;
3733
3901
  seedCompanies?: undefined;
3734
3902
  seedDomains?: undefined;
3735
- limit?: undefined;
3736
3903
  sort?: undefined;
3737
3904
  previewOnly?: undefined;
3738
3905
  companySearchToken?: undefined;
@@ -3814,6 +3981,11 @@ export declare const leadToolDefinitions: ({
3814
3981
  leadListId?: undefined;
3815
3982
  leadListName?: undefined;
3816
3983
  linkedInColumn?: undefined;
3984
+ limit?: undefined;
3985
+ search?: undefined;
3986
+ listName?: undefined;
3987
+ sourceType?: undefined;
3988
+ includeDeleted?: undefined;
3817
3989
  csvText?: undefined;
3818
3990
  rawText?: undefined;
3819
3991
  name?: undefined;
@@ -3821,7 +3993,6 @@ export declare const leadToolDefinitions: ({
3821
3993
  exclude?: undefined;
3822
3994
  seedCompanies?: undefined;
3823
3995
  seedDomains?: undefined;
3824
- limit?: undefined;
3825
3996
  sort?: undefined;
3826
3997
  previewOnly?: undefined;
3827
3998
  companySearchToken?: undefined;
@@ -4162,6 +4333,33 @@ export declare function loadCsvDncEntriesTool(input: LoadCsvDncEntriesInput): Pr
4162
4333
  }[];
4163
4334
  guidance: string;
4164
4335
  }>;
4336
+ export declare function listDncEntriesTool(input?: ListDncEntriesInput): Promise<{
4337
+ ok: boolean;
4338
+ workspaceId: string;
4339
+ workspaceName: string;
4340
+ pagination: {
4341
+ total: number;
4342
+ page: number;
4343
+ limit: number;
4344
+ totalPages: number;
4345
+ };
4346
+ listNames: string[];
4347
+ entries: {
4348
+ id: string | null;
4349
+ type: string;
4350
+ domain: string | null;
4351
+ linkedin: string | null;
4352
+ linkedinUsername: string | null;
4353
+ name: string | null;
4354
+ source: {
4355
+ type: string;
4356
+ label: string;
4357
+ listName: string | null;
4358
+ };
4359
+ createdAt: string | null;
4360
+ }[];
4361
+ guidance: string;
4362
+ }>;
4165
4363
  export declare function saveDomainFilters(input: SaveDomainFiltersInput): Promise<unknown>;
4166
4364
  export declare function lookupSalesNavFilter(input: LookupSalesNavFilterInput): Promise<{
4167
4365
  filterType: string;
@@ -4,7 +4,7 @@ import { getApi, SellableApiError } from "../api.js";
4
4
  import { resolveSkillsDir } from "../skills.js";
5
5
  import { resolveWorkspaceRoot } from "../utils/workspace-root.js";
6
6
  import { buildCsvDomainPreview, matchesConfirmationToken, parseConfirmationToken, projectCsvCarryRows, } from "./csv-domains.js";
7
- import { loadCsvDncEntries, } from "./csv-dnc.js";
7
+ import { listDncEntries, loadCsvDncEntries, } from "./csv-dnc.js";
8
8
  import { buildCsvLinkedinPreview, matchesLinkedinConfirmationToken, parseLinkedinConfirmationToken, uploadCsvLinkedinFile, } from "./csv-linkedin.js";
9
9
  import { assertInteractionApproval } from "./interaction-mode.js";
10
10
  import { assertProviderPromptLoaded, markProviderPromptLoaded, } from "./provider-preflight.js";
@@ -1477,6 +1477,41 @@ export const leadToolDefinitions = [
1477
1477
  required: ["filePath"],
1478
1478
  },
1479
1479
  },
1480
+ {
1481
+ name: "list_dnc_entries",
1482
+ description: "Show the active workspace's current Sellable DNC count, list names, and a compact page of entries through the workspace-scoped DNC endpoint. Use this when the user asks to show/check the current DNC list, count, or first page before importing. This is Sellable DNC used by DNC Check, not provider source-list routing.",
1483
+ inputSchema: {
1484
+ type: "object",
1485
+ properties: {
1486
+ page: {
1487
+ type: "number",
1488
+ description: "Page to read. Defaults to 1.",
1489
+ },
1490
+ limit: {
1491
+ type: "number",
1492
+ description: "Entries per page. Defaults to 25. Backend hard cap is 100.",
1493
+ },
1494
+ search: {
1495
+ type: "string",
1496
+ description: "Optional search across domain, LinkedIn username, or entry name.",
1497
+ },
1498
+ listName: {
1499
+ type: "string",
1500
+ description: "Optional Sellable DNC list name filter.",
1501
+ },
1502
+ sourceType: {
1503
+ type: "string",
1504
+ enum: ["all", "manual", "hubspot"],
1505
+ description: "Optional source filter. Defaults to all Sellable DNC entries.",
1506
+ },
1507
+ includeDeleted: {
1508
+ type: "boolean",
1509
+ description: "Include deleted/disabled source entries when true. Defaults to false.",
1510
+ },
1511
+ },
1512
+ required: [],
1513
+ },
1514
+ },
1480
1515
  {
1481
1516
  name: "load_csv_dnc_entries",
1482
1517
  description: "Preview and confirm pasted text, pasted CSV, or a CSV file of domains and LinkedIn profile URLs, then add the valid entries to the active workspace's Sellable DNC list. This is the blocklist/suppression-list path. It reuses Sellable's workspace-scoped DNC endpoints and the campaign DNC Check column, not provider search filters or source-list workarounds.",
@@ -3384,6 +3419,9 @@ export async function loadCsvLinkedinLeads(input) {
3384
3419
  export async function loadCsvDncEntriesTool(input) {
3385
3420
  return loadCsvDncEntries(input);
3386
3421
  }
3422
+ export async function listDncEntriesTool(input = {}) {
3423
+ return listDncEntries(input);
3424
+ }
3387
3425
  export async function saveDomainFilters(input) {
3388
3426
  const api = getApi();
3389
3427
  return api.post(`/api/v3/prospeo/domain-filters`, {
@@ -1897,6 +1897,11 @@ export declare const allTools: ({
1897
1897
  leadListId?: undefined;
1898
1898
  leadListName?: undefined;
1899
1899
  linkedInColumn?: undefined;
1900
+ limit?: undefined;
1901
+ search?: undefined;
1902
+ listName?: undefined;
1903
+ sourceType?: undefined;
1904
+ includeDeleted?: undefined;
1900
1905
  csvText?: undefined;
1901
1906
  rawText?: undefined;
1902
1907
  name?: undefined;
@@ -1904,7 +1909,6 @@ export declare const allTools: ({
1904
1909
  exclude?: undefined;
1905
1910
  seedCompanies?: undefined;
1906
1911
  seedDomains?: undefined;
1907
- limit?: undefined;
1908
1912
  sort?: undefined;
1909
1913
  previewOnly?: undefined;
1910
1914
  companySearchToken?: undefined;
@@ -2085,6 +2089,11 @@ export declare const allTools: ({
2085
2089
  leadListId?: undefined;
2086
2090
  leadListName?: undefined;
2087
2091
  linkedInColumn?: undefined;
2092
+ limit?: undefined;
2093
+ search?: undefined;
2094
+ listName?: undefined;
2095
+ sourceType?: undefined;
2096
+ includeDeleted?: undefined;
2088
2097
  csvText?: undefined;
2089
2098
  rawText?: undefined;
2090
2099
  name?: undefined;
@@ -2092,7 +2101,6 @@ export declare const allTools: ({
2092
2101
  exclude?: undefined;
2093
2102
  seedCompanies?: undefined;
2094
2103
  seedDomains?: undefined;
2095
- limit?: undefined;
2096
2104
  sort?: undefined;
2097
2105
  previewOnly?: undefined;
2098
2106
  companySearchToken?: undefined;
@@ -2172,6 +2180,11 @@ export declare const allTools: ({
2172
2180
  leadListId?: undefined;
2173
2181
  leadListName?: undefined;
2174
2182
  linkedInColumn?: undefined;
2183
+ limit?: undefined;
2184
+ search?: undefined;
2185
+ listName?: undefined;
2186
+ sourceType?: undefined;
2187
+ includeDeleted?: undefined;
2175
2188
  csvText?: undefined;
2176
2189
  rawText?: undefined;
2177
2190
  name?: undefined;
@@ -2179,7 +2192,6 @@ export declare const allTools: ({
2179
2192
  exclude?: undefined;
2180
2193
  seedCompanies?: undefined;
2181
2194
  seedDomains?: undefined;
2182
- limit?: undefined;
2183
2195
  sort?: undefined;
2184
2196
  previewOnly?: undefined;
2185
2197
  companySearchToken?: undefined;
@@ -2331,6 +2343,11 @@ export declare const allTools: ({
2331
2343
  leadListId?: undefined;
2332
2344
  leadListName?: undefined;
2333
2345
  linkedInColumn?: undefined;
2346
+ limit?: undefined;
2347
+ search?: undefined;
2348
+ listName?: undefined;
2349
+ sourceType?: undefined;
2350
+ includeDeleted?: undefined;
2334
2351
  csvText?: undefined;
2335
2352
  rawText?: undefined;
2336
2353
  name?: undefined;
@@ -2338,7 +2355,6 @@ export declare const allTools: ({
2338
2355
  exclude?: undefined;
2339
2356
  seedCompanies?: undefined;
2340
2357
  seedDomains?: undefined;
2341
- limit?: undefined;
2342
2358
  sort?: undefined;
2343
2359
  previewOnly?: undefined;
2344
2360
  companySearchToken?: undefined;
@@ -2432,6 +2448,11 @@ export declare const allTools: ({
2432
2448
  leadListId?: undefined;
2433
2449
  leadListName?: undefined;
2434
2450
  linkedInColumn?: undefined;
2451
+ limit?: undefined;
2452
+ search?: undefined;
2453
+ listName?: undefined;
2454
+ sourceType?: undefined;
2455
+ includeDeleted?: undefined;
2435
2456
  csvText?: undefined;
2436
2457
  rawText?: undefined;
2437
2458
  name?: undefined;
@@ -2439,7 +2460,6 @@ export declare const allTools: ({
2439
2460
  exclude?: undefined;
2440
2461
  seedCompanies?: undefined;
2441
2462
  seedDomains?: undefined;
2442
- limit?: undefined;
2443
2463
  sort?: undefined;
2444
2464
  previewOnly?: undefined;
2445
2465
  companySearchToken?: undefined;
@@ -2542,6 +2562,11 @@ export declare const allTools: ({
2542
2562
  query?: undefined;
2543
2563
  keywords?: undefined;
2544
2564
  domainColumn?: undefined;
2565
+ limit?: undefined;
2566
+ search?: undefined;
2567
+ listName?: undefined;
2568
+ sourceType?: undefined;
2569
+ includeDeleted?: undefined;
2545
2570
  csvText?: undefined;
2546
2571
  rawText?: undefined;
2547
2572
  name?: undefined;
@@ -2549,7 +2574,6 @@ export declare const allTools: ({
2549
2574
  exclude?: undefined;
2550
2575
  seedCompanies?: undefined;
2551
2576
  seedDomains?: undefined;
2552
- limit?: undefined;
2553
2577
  sort?: undefined;
2554
2578
  previewOnly?: undefined;
2555
2579
  companySearchToken?: undefined;
@@ -2579,6 +2603,109 @@ export declare const allTools: ({
2579
2603
  };
2580
2604
  required: string[];
2581
2605
  };
2606
+ } | {
2607
+ name: string;
2608
+ description: string;
2609
+ inputSchema: {
2610
+ type: string;
2611
+ properties: {
2612
+ page: {
2613
+ type: string;
2614
+ description: string;
2615
+ };
2616
+ limit: {
2617
+ type: string;
2618
+ description: string;
2619
+ };
2620
+ search: {
2621
+ type: string;
2622
+ description: string;
2623
+ };
2624
+ listName: {
2625
+ type: string;
2626
+ description: string;
2627
+ };
2628
+ sourceType: {
2629
+ type: string;
2630
+ enum: string[];
2631
+ description: string;
2632
+ };
2633
+ includeDeleted: {
2634
+ type: string;
2635
+ description: string;
2636
+ };
2637
+ provider?: undefined;
2638
+ campaignOfferId?: undefined;
2639
+ confirmed?: undefined;
2640
+ searchMode?: undefined;
2641
+ organization_num_employees_ranges?: undefined;
2642
+ organization_locations?: undefined;
2643
+ organization_not_locations?: undefined;
2644
+ q_organization_keyword_tags?: undefined;
2645
+ organization_industry_tag_ids?: undefined;
2646
+ latest_funding_amount_min?: undefined;
2647
+ latest_funding_amount_max?: undefined;
2648
+ organization_revenue_min?: undefined;
2649
+ organization_revenue_max?: undefined;
2650
+ person_titles?: undefined;
2651
+ person_seniorities?: undefined;
2652
+ person_locations?: undefined;
2653
+ include_similar_titles?: undefined;
2654
+ q_keywords?: undefined;
2655
+ filters?: undefined;
2656
+ companyFilters?: undefined;
2657
+ contactFilters?: undefined;
2658
+ searchId?: undefined;
2659
+ searchName?: undefined;
2660
+ companySearchMode?: undefined;
2661
+ uploadedDomains?: undefined;
2662
+ currentStep?: undefined;
2663
+ filterType?: undefined;
2664
+ query?: undefined;
2665
+ keywords?: undefined;
2666
+ filePath?: undefined;
2667
+ domainColumn?: undefined;
2668
+ selectedColumns?: undefined;
2669
+ confirmationToken?: undefined;
2670
+ leadListId?: undefined;
2671
+ leadListName?: undefined;
2672
+ linkedInColumn?: undefined;
2673
+ csvText?: undefined;
2674
+ rawText?: undefined;
2675
+ name?: undefined;
2676
+ include?: undefined;
2677
+ exclude?: undefined;
2678
+ seedCompanies?: undefined;
2679
+ seedDomains?: undefined;
2680
+ sort?: undefined;
2681
+ previewOnly?: undefined;
2682
+ companySearchToken?: undefined;
2683
+ selectedCompanyIds?: undefined;
2684
+ domainFilterId?: undefined;
2685
+ type?: undefined;
2686
+ profileUrl?: undefined;
2687
+ postUrl?: undefined;
2688
+ companyUrl?: undefined;
2689
+ headlineICPCriteria?: undefined;
2690
+ rubricGuidelines?: undefined;
2691
+ sourceLeadListId?: undefined;
2692
+ targetLeadCount?: undefined;
2693
+ mode?: undefined;
2694
+ targetEngagerCount?: undefined;
2695
+ maxPostsToScrape?: undefined;
2696
+ tableId?: undefined;
2697
+ campaignName?: undefined;
2698
+ keepInSync?: undefined;
2699
+ jobId?: undefined;
2700
+ reviewBatchLimit?: undefined;
2701
+ allowPartialSourceList?: undefined;
2702
+ includeRawImportResult?: undefined;
2703
+ selections?: undefined;
2704
+ selectionMode?: undefined;
2705
+ scrapePlanMode?: undefined;
2706
+ };
2707
+ required: never[];
2708
+ };
2582
2709
  } | {
2583
2710
  name: string;
2584
2711
  description: string;
@@ -2649,11 +2776,15 @@ export declare const allTools: ({
2649
2776
  selectedColumns?: undefined;
2650
2777
  leadListId?: undefined;
2651
2778
  leadListName?: undefined;
2779
+ limit?: undefined;
2780
+ search?: undefined;
2781
+ listName?: undefined;
2782
+ sourceType?: undefined;
2783
+ includeDeleted?: undefined;
2652
2784
  include?: undefined;
2653
2785
  exclude?: undefined;
2654
2786
  seedCompanies?: undefined;
2655
2787
  seedDomains?: undefined;
2656
- limit?: undefined;
2657
2788
  sort?: undefined;
2658
2789
  previewOnly?: undefined;
2659
2790
  companySearchToken?: undefined;
@@ -2740,12 +2871,16 @@ export declare const allTools: ({
2740
2871
  leadListId?: undefined;
2741
2872
  leadListName?: undefined;
2742
2873
  linkedInColumn?: undefined;
2874
+ limit?: undefined;
2875
+ search?: undefined;
2876
+ listName?: undefined;
2877
+ sourceType?: undefined;
2878
+ includeDeleted?: undefined;
2743
2879
  csvText?: undefined;
2744
2880
  rawText?: undefined;
2745
2881
  name?: undefined;
2746
2882
  seedCompanies?: undefined;
2747
2883
  seedDomains?: undefined;
2748
- limit?: undefined;
2749
2884
  sort?: undefined;
2750
2885
  previewOnly?: undefined;
2751
2886
  companySearchToken?: undefined;
@@ -3627,6 +3762,10 @@ export declare const allTools: ({
3627
3762
  leadListId?: undefined;
3628
3763
  leadListName?: undefined;
3629
3764
  linkedInColumn?: undefined;
3765
+ search?: undefined;
3766
+ listName?: undefined;
3767
+ sourceType?: undefined;
3768
+ includeDeleted?: undefined;
3630
3769
  csvText?: undefined;
3631
3770
  rawText?: undefined;
3632
3771
  name?: undefined;
@@ -3726,13 +3865,17 @@ export declare const allTools: ({
3726
3865
  leadListId?: undefined;
3727
3866
  leadListName?: undefined;
3728
3867
  linkedInColumn?: undefined;
3868
+ limit?: undefined;
3869
+ search?: undefined;
3870
+ listName?: undefined;
3871
+ sourceType?: undefined;
3872
+ includeDeleted?: undefined;
3729
3873
  csvText?: undefined;
3730
3874
  rawText?: undefined;
3731
3875
  include?: undefined;
3732
3876
  exclude?: undefined;
3733
3877
  seedCompanies?: undefined;
3734
3878
  seedDomains?: undefined;
3735
- limit?: undefined;
3736
3879
  sort?: undefined;
3737
3880
  previewOnly?: undefined;
3738
3881
  domainFilterId?: undefined;
@@ -4763,6 +4906,11 @@ export declare const allTools: ({
4763
4906
  leadListId?: undefined;
4764
4907
  leadListName?: undefined;
4765
4908
  linkedInColumn?: undefined;
4909
+ limit?: undefined;
4910
+ search?: undefined;
4911
+ listName?: undefined;
4912
+ sourceType?: undefined;
4913
+ includeDeleted?: undefined;
4766
4914
  csvText?: undefined;
4767
4915
  rawText?: undefined;
4768
4916
  name?: undefined;
@@ -4770,7 +4918,6 @@ export declare const allTools: ({
4770
4918
  exclude?: undefined;
4771
4919
  seedCompanies?: undefined;
4772
4920
  seedDomains?: undefined;
4773
- limit?: undefined;
4774
4921
  sort?: undefined;
4775
4922
  previewOnly?: undefined;
4776
4923
  companySearchToken?: undefined;
@@ -4913,6 +5060,10 @@ export declare const allTools: ({
4913
5060
  leadListId?: undefined;
4914
5061
  leadListName?: undefined;
4915
5062
  linkedInColumn?: undefined;
5063
+ search?: undefined;
5064
+ listName?: undefined;
5065
+ sourceType?: undefined;
5066
+ includeDeleted?: undefined;
4916
5067
  csvText?: undefined;
4917
5068
  rawText?: undefined;
4918
5069
  name?: undefined;
@@ -5045,6 +5196,11 @@ export declare const allTools: ({
5045
5196
  confirmationToken?: undefined;
5046
5197
  leadListId?: undefined;
5047
5198
  linkedInColumn?: undefined;
5199
+ limit?: undefined;
5200
+ search?: undefined;
5201
+ listName?: undefined;
5202
+ sourceType?: undefined;
5203
+ includeDeleted?: undefined;
5048
5204
  csvText?: undefined;
5049
5205
  rawText?: undefined;
5050
5206
  name?: undefined;
@@ -5052,7 +5208,6 @@ export declare const allTools: ({
5052
5208
  exclude?: undefined;
5053
5209
  seedCompanies?: undefined;
5054
5210
  seedDomains?: undefined;
5055
- limit?: undefined;
5056
5211
  sort?: undefined;
5057
5212
  previewOnly?: undefined;
5058
5213
  companySearchToken?: undefined;
@@ -5129,6 +5284,11 @@ export declare const allTools: ({
5129
5284
  leadListId?: undefined;
5130
5285
  leadListName?: undefined;
5131
5286
  linkedInColumn?: undefined;
5287
+ limit?: undefined;
5288
+ search?: undefined;
5289
+ listName?: undefined;
5290
+ sourceType?: undefined;
5291
+ includeDeleted?: undefined;
5132
5292
  csvText?: undefined;
5133
5293
  rawText?: undefined;
5134
5294
  name?: undefined;
@@ -5136,7 +5296,6 @@ export declare const allTools: ({
5136
5296
  exclude?: undefined;
5137
5297
  seedCompanies?: undefined;
5138
5298
  seedDomains?: undefined;
5139
- limit?: undefined;
5140
5299
  sort?: undefined;
5141
5300
  previewOnly?: undefined;
5142
5301
  companySearchToken?: undefined;
@@ -5249,6 +5408,11 @@ export declare const allTools: ({
5249
5408
  leadListId?: undefined;
5250
5409
  leadListName?: undefined;
5251
5410
  linkedInColumn?: undefined;
5411
+ limit?: undefined;
5412
+ search?: undefined;
5413
+ listName?: undefined;
5414
+ sourceType?: undefined;
5415
+ includeDeleted?: undefined;
5252
5416
  csvText?: undefined;
5253
5417
  rawText?: undefined;
5254
5418
  name?: undefined;
@@ -5256,7 +5420,6 @@ export declare const allTools: ({
5256
5420
  exclude?: undefined;
5257
5421
  seedCompanies?: undefined;
5258
5422
  seedDomains?: undefined;
5259
- limit?: undefined;
5260
5423
  sort?: undefined;
5261
5424
  previewOnly?: undefined;
5262
5425
  companySearchToken?: undefined;
@@ -5374,6 +5537,11 @@ export declare const allTools: ({
5374
5537
  leadListId?: undefined;
5375
5538
  leadListName?: undefined;
5376
5539
  linkedInColumn?: undefined;
5540
+ limit?: undefined;
5541
+ search?: undefined;
5542
+ listName?: undefined;
5543
+ sourceType?: undefined;
5544
+ includeDeleted?: undefined;
5377
5545
  csvText?: undefined;
5378
5546
  rawText?: undefined;
5379
5547
  name?: undefined;
@@ -5381,7 +5549,6 @@ export declare const allTools: ({
5381
5549
  exclude?: undefined;
5382
5550
  seedCompanies?: undefined;
5383
5551
  seedDomains?: undefined;
5384
- limit?: undefined;
5385
5552
  sort?: undefined;
5386
5553
  previewOnly?: undefined;
5387
5554
  companySearchToken?: undefined;
@@ -5463,6 +5630,11 @@ export declare const allTools: ({
5463
5630
  leadListId?: undefined;
5464
5631
  leadListName?: undefined;
5465
5632
  linkedInColumn?: undefined;
5633
+ limit?: undefined;
5634
+ search?: undefined;
5635
+ listName?: undefined;
5636
+ sourceType?: undefined;
5637
+ includeDeleted?: undefined;
5466
5638
  csvText?: undefined;
5467
5639
  rawText?: undefined;
5468
5640
  name?: undefined;
@@ -5470,7 +5642,6 @@ export declare const allTools: ({
5470
5642
  exclude?: undefined;
5471
5643
  seedCompanies?: undefined;
5472
5644
  seedDomains?: undefined;
5473
- limit?: undefined;
5474
5645
  sort?: undefined;
5475
5646
  previewOnly?: undefined;
5476
5647
  companySearchToken?: undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.254",
3
+ "version": "0.1.255",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -58,6 +58,7 @@ allowed-tools:
58
58
  - mcp__sellable__get_rows
59
59
  - mcp__sellable__get_rows_minimal
60
60
  - mcp__sellable__get_table_rows
61
+ - mcp__sellable__list_dnc_entries
61
62
  - mcp__sellable__load_csv_dnc_entries
62
63
  - mcp__sellable__load_csv_linkedin_leads
63
64
  - mcp__sellable__load_csv_domains
@@ -101,6 +102,11 @@ are for known-account targeting only, not DNC. Campaign creation already
101
102
  includes a `DNC Check` column that checks domain and LinkedIn profile before
102
103
  message generation.
103
104
 
105
+ If the user asks to show/check the current DNC list, count, list names, or first
106
+ page before importing, call `list_dnc_entries`. Confirm the active workspace
107
+ name and ID in the response before any write. This is Sellable's workspace DNC
108
+ list used by DNC Check.
109
+
104
110
  ## Opening Turn Contract
105
111
 
106
112
  On the first visible response after this skill is invoked, do not narrate
@@ -219,6 +219,8 @@ belong in the recommendation as DNC/suppression instructions outside the rubric
219
219
  DNC imports/suppression lists are handled through `load_csv_dnc_entries` outside
220
220
  `leadScoringRubrics`. The import previews the exact Sellable workspace name and
221
221
  ID, then writes to Sellable's workspace-level DNC list only after confirmation.
222
+ If the user asks to show the current DNC count, list names, or first page before
223
+ import, call `list_dnc_entries` and report the active workspace name and ID.
222
224
  Campaign creation already includes `DNC Check`, which checks domain/profile
223
225
  before message generation. Do not describe provider workarounds, provider
224
226
  search-time limitations, or Prospeo domain filters as the DNC mechanism.
@@ -50,6 +50,8 @@ Supplied-source preview:
50
50
  preview. Preview the exact Sellable workspace name and ID and confirm before
51
51
  writing. This updates Sellable's workspace-level DNC list; it is not a lead
52
52
  source, Prospeo domain filter, or provider workaround.
53
+ If the user asks for the existing DNC count, list names, or first page first,
54
+ call `list_dnc_entries` and report the active workspace name and ID.
53
55
  - `supplied-linkedin-profiles` uses `load_csv_linkedin_leads` before the
54
56
  15-lead import batch only as preview/source attachment. Pre-import calls
55
57
  must omit provider-import parameters. Use `campaignOfferId` only to attach the
@@ -61,7 +61,9 @@ Supported branches:
61
61
  Sellable workspace name and ID, and confirmation writes only to that
62
62
  workspace's Sellable DNC list. This is not a lead source and does not create a
63
63
  `domainFilterId`; campaign rows are protected later by the existing
64
- `DNC Check` column before message generation.
64
+ `DNC Check` column before message generation. If the user asks for the
65
+ current DNC count, list names, or first page before import, call
66
+ `list_dnc_entries` first.
65
67
  - **Supplied LinkedIn profile CSV** — confirm `load_csv_linkedin_leads` only
66
68
  after the user approves that supplied-list source. Batch/materialize the
67
69
  uploaded CSV into a Sellable lead-list table. Persist the returned
@@ -90,6 +90,7 @@ should stay focused on source evidence.
90
90
  - `mcp__sellable__search_prospeo`
91
91
  - `mcp__sellable__search_prospeo_companies`
92
92
  - `mcp__sellable__confirm_prospeo_company_accounts`
93
+ - `mcp__sellable__list_dnc_entries`
93
94
  - `mcp__sellable__load_csv_dnc_entries`
94
95
  - `mcp__sellable__load_csv_domains`
95
96
  - `mcp__sellable__load_csv_linkedin_leads`
@@ -105,6 +106,9 @@ should stay focused on source evidence.
105
106
  list after confirming the exact active workspace. Keep the mechanism to
106
107
  Sellable DNC and `DNC Check`, not provider search work or Prospeo domain
107
108
  filters.
109
+ - If the user asks to see the current DNC count, list names, or first page
110
+ before import, call `list_dnc_entries`. Report the active workspace name and
111
+ ID from the tool response before any DNC write.
108
112
  - Do not infer sender identities from meeting attendance alone. Only treat someone as a sender when the source material explicitly identifies them as a sender or supplies their LinkedIn URL.
109
113
  - Do not ask Layer 1 questions already answered by a transcript, ICP doc, or Layer 0 research.
110
114
  - Do not include Apollo in the explorer set for this phase.
@@ -136,6 +140,8 @@ Execution flow:
136
140
  DNC entries.
137
141
  - Campaign creation already includes `DNC Check`, which checks domain/profile
138
142
  before message generation.
143
+ - If the user wants the existing DNC count or first page first, call
144
+ `list_dnc_entries` before previewing the import.
139
145
  3. If the user has a CSV of LinkedIn profile URLs on disk, call `load_csv_linkedin_leads` first.
140
146
  - Preview, confirm, then review the resulting lead list before `confirm_lead_list`.
141
147
  - Confirmed execution uploads the raw CSV file, starts the server-owned import job, and waits on lead-list readiness before returning.