@sellable/mcp 0.1.947 → 0.1.949

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.
@@ -10729,115 +10729,157 @@ export declare const allTools: ({
10729
10729
  outputSchema: Readonly<{
10730
10730
  readonly type: "object";
10731
10731
  readonly additionalProperties: false;
10732
- readonly required: readonly ["rows", "durationMs", "observationSideEffects"];
10732
+ readonly required: readonly ["campaigns", "rows", "durationMs", "observationSideEffects"];
10733
10733
  readonly properties: {
10734
- readonly rows: {
10734
+ readonly campaigns: {
10735
10735
  readonly type: "array";
10736
10736
  readonly items: {
10737
10737
  readonly type: "object";
10738
10738
  readonly additionalProperties: false;
10739
- readonly required: readonly ["date", "sender", "lane", "targetSlots", "takenSlots", "remainingTargetGap", "fillableSlotsNow", "blockedGap", "availableSlots", "reason", "activeCampaigns", "inactiveCampaigns"];
10739
+ readonly required: ("name" | "status" | "id" | "evidence" | "activeJob" | "supply" | "leadSourceFamily" | "lanes" | "startEligible")[];
10740
10740
  readonly properties: {
10741
- readonly date: {
10741
+ id: {
10742
10742
  readonly type: "string";
10743
- readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
10743
+ readonly minLength: 1;
10744
10744
  };
10745
- readonly sender: {
10746
- readonly type: "object";
10745
+ name: {
10746
+ readonly type: "string";
10747
+ };
10748
+ status: {
10749
+ readonly type: "string";
10750
+ readonly enum: readonly ["ACTIVE", "PAUSED"];
10751
+ };
10752
+ lanes: {
10753
+ readonly type: "array";
10754
+ readonly minItems: 1;
10755
+ readonly items: {
10756
+ readonly type: "string";
10757
+ readonly enum: readonly ["connection_invite", "paid_inmail"];
10758
+ };
10759
+ };
10760
+ startEligible: {
10761
+ readonly type: "boolean";
10762
+ };
10763
+ activeJob: {
10764
+ readonly type: readonly ["object", "null"];
10747
10765
  readonly additionalProperties: false;
10748
- readonly required: readonly ["id", "name", "timezone"];
10766
+ readonly required: readonly ["id", "kind", "status"];
10749
10767
  readonly properties: {
10750
10768
  readonly id: {
10751
10769
  readonly type: "string";
10752
10770
  readonly minLength: 1;
10753
10771
  };
10754
- readonly name: {
10772
+ readonly kind: {
10755
10773
  readonly type: "string";
10774
+ readonly enum: readonly ["enrichment", "message_generation", "source_expansion", "scheduling"];
10756
10775
  };
10757
- readonly timezone: {
10776
+ readonly status: {
10758
10777
  readonly type: "string";
10759
- readonly minLength: 1;
10778
+ readonly enum: readonly ["queued", "running"];
10760
10779
  };
10761
10780
  };
10762
10781
  };
10763
- readonly lane: {
10764
- readonly type: "string";
10765
- readonly enum: readonly ["connection_invite", "paid_inmail"];
10766
- };
10767
- readonly targetSlots: {
10768
- readonly type: "integer";
10769
- readonly minimum: 0;
10770
- };
10771
- readonly takenSlots: {
10772
- readonly type: "integer";
10773
- readonly minimum: 0;
10774
- };
10775
- readonly remainingTargetGap: {
10776
- readonly type: "integer";
10777
- readonly minimum: 0;
10778
- };
10779
- readonly fillableSlotsNow: {
10780
- readonly type: "integer";
10781
- readonly minimum: 0;
10782
- };
10783
- readonly blockedGap: {
10784
- readonly type: "integer";
10785
- readonly minimum: 0;
10782
+ supply: {
10783
+ readonly type: "object";
10784
+ readonly additionalProperties: false;
10785
+ readonly required: readonly ["readyToSchedule", "readyForApproval", "readyForMessageGeneration", "needsEnrichment"];
10786
+ readonly properties: {
10787
+ readonly readyToSchedule: {
10788
+ readonly type: "integer";
10789
+ readonly minimum: 0;
10790
+ };
10791
+ readonly readyForApproval: {
10792
+ readonly type: "integer";
10793
+ readonly minimum: 0;
10794
+ };
10795
+ readonly readyForMessageGeneration: {
10796
+ readonly type: "integer";
10797
+ readonly minimum: 0;
10798
+ };
10799
+ readonly needsEnrichment: {
10800
+ readonly type: "integer";
10801
+ readonly minimum: 0;
10802
+ };
10803
+ };
10786
10804
  };
10787
- readonly availableSlots: {
10788
- readonly type: "integer";
10789
- readonly minimum: 0;
10805
+ leadSourceFamily: {
10806
+ readonly type: "string";
10807
+ readonly enum: readonly ["post_engager", "signal_discovery", "cold"];
10790
10808
  };
10791
- readonly reason: {
10792
- readonly type: readonly ["object", "null"];
10809
+ evidence: {
10810
+ readonly type: "object";
10793
10811
  readonly additionalProperties: false;
10794
- readonly required: readonly ["kind", "codes", "message"];
10812
+ readonly required: readonly ["evergreen", "lastActualUseAt", "lastScheduledUseAt", "effectiveness", "supplyHealth"];
10795
10813
  readonly properties: {
10796
- readonly kind: {
10797
- readonly type: "string";
10798
- readonly enum: readonly ["unavailable", "retry_required", "invalid_campaign_configuration"];
10814
+ readonly evergreen: {
10815
+ readonly type: "boolean";
10799
10816
  };
10800
- readonly codes: {
10801
- readonly type: "array";
10802
- readonly items: {
10803
- readonly type: "string";
10804
- readonly enum: readonly ["global_cooldown", "connection_cooldown", "paid_inmail_cooldown", "endpoint_temporarily_unavailable", "date_in_past", "no_sending_hours", "sender_disconnected", "sender_limit_reached", "daily_target_met", "no_eligible_campaign", "no_ready_supply", "sales_nav_disconnected", "insufficient_paid_credits", "paid_inmail_connection_health_recheck_required", "paid_inmail_credit_refresh_failed", "invalid_paid_configuration", "campaign_table_missing", "campaign_sequence_invalid", "source_family_unresolved", "campaign_work_in_flight"];
10805
- };
10817
+ readonly createdAt: {
10818
+ readonly type: readonly ["string", "null"];
10806
10819
  };
10807
- readonly message: {
10820
+ readonly lastActualUseAt: {
10821
+ readonly type: readonly ["string", "null"];
10822
+ };
10823
+ readonly lastScheduledUseAt: {
10824
+ readonly type: readonly ["string", "null"];
10825
+ };
10826
+ readonly effectiveness: {
10808
10827
  readonly type: "string";
10828
+ readonly enum: readonly ["unknown", "low", "medium", "high"];
10809
10829
  };
10810
- readonly resumeAt: {
10830
+ readonly supplyHealth: {
10811
10831
  readonly type: "string";
10832
+ readonly enum: readonly ["unknown", "healthy", "thin", "dry"];
10833
+ };
10834
+ readonly engagement: {
10835
+ readonly type: "object";
10836
+ readonly additionalProperties: false;
10837
+ readonly required: readonly ["sends", "accepted", "replied", "acceptRate", "replyRate"];
10838
+ readonly properties: {
10839
+ readonly sends: {
10840
+ readonly type: "number";
10841
+ readonly minimum: 0;
10842
+ };
10843
+ readonly accepted: {
10844
+ readonly type: "number";
10845
+ readonly minimum: 0;
10846
+ };
10847
+ readonly replied: {
10848
+ readonly type: "number";
10849
+ readonly minimum: 0;
10850
+ };
10851
+ readonly acceptRate: {
10852
+ readonly type: "number";
10853
+ readonly minimum: 0;
10854
+ readonly maximum: 100;
10855
+ };
10856
+ readonly replyRate: {
10857
+ readonly type: "number";
10858
+ readonly minimum: 0;
10859
+ readonly maximum: 100;
10860
+ };
10861
+ };
10812
10862
  };
10813
10863
  };
10814
10864
  };
10865
+ };
10866
+ };
10867
+ };
10868
+ readonly rows: {
10869
+ readonly type: "array";
10870
+ readonly items: {
10871
+ readonly properties: {
10815
10872
  readonly activeCampaigns: {
10816
10873
  readonly type: "array";
10817
10874
  readonly items: {
10818
10875
  readonly type: "object";
10819
10876
  readonly additionalProperties: false;
10820
- readonly required: readonly ["id", "name", "status", "lanes", "eligible", "reason", "startEligible", "activeJob", "supply", "leadSourceFamily", "evidence"];
10877
+ readonly required: readonly ["id", "eligible", "reason"];
10821
10878
  readonly properties: {
10822
10879
  readonly id: {
10823
10880
  readonly type: "string";
10824
10881
  readonly minLength: 1;
10825
10882
  };
10826
- readonly name: {
10827
- readonly type: "string";
10828
- };
10829
- readonly status: {
10830
- readonly type: "string";
10831
- readonly enum: readonly ["ACTIVE", "PAUSED"];
10832
- };
10833
- readonly lanes: {
10834
- readonly type: "array";
10835
- readonly minItems: 1;
10836
- readonly items: {
10837
- readonly type: "string";
10838
- readonly enum: readonly ["connection_invite", "paid_inmail"];
10839
- };
10840
- };
10841
10883
  readonly eligible: {
10842
10884
  readonly type: "boolean";
10843
10885
  };
@@ -10865,111 +10907,6 @@ export declare const allTools: ({
10865
10907
  };
10866
10908
  };
10867
10909
  };
10868
- readonly startEligible: {
10869
- readonly type: "boolean";
10870
- };
10871
- readonly activeJob: {
10872
- readonly type: readonly ["object", "null"];
10873
- readonly additionalProperties: false;
10874
- readonly required: readonly ["id", "kind", "status"];
10875
- readonly properties: {
10876
- readonly id: {
10877
- readonly type: "string";
10878
- readonly minLength: 1;
10879
- };
10880
- readonly kind: {
10881
- readonly type: "string";
10882
- readonly enum: readonly ["enrichment", "message_generation", "source_expansion", "scheduling"];
10883
- };
10884
- readonly status: {
10885
- readonly type: "string";
10886
- readonly enum: readonly ["queued", "running"];
10887
- };
10888
- };
10889
- };
10890
- readonly supply: {
10891
- readonly type: "object";
10892
- readonly additionalProperties: false;
10893
- readonly required: readonly ["readyToSchedule", "readyForApproval", "readyForMessageGeneration", "needsEnrichment"];
10894
- readonly properties: {
10895
- readonly readyToSchedule: {
10896
- readonly type: "integer";
10897
- readonly minimum: 0;
10898
- };
10899
- readonly readyForApproval: {
10900
- readonly type: "integer";
10901
- readonly minimum: 0;
10902
- };
10903
- readonly readyForMessageGeneration: {
10904
- readonly type: "integer";
10905
- readonly minimum: 0;
10906
- };
10907
- readonly needsEnrichment: {
10908
- readonly type: "integer";
10909
- readonly minimum: 0;
10910
- };
10911
- };
10912
- };
10913
- readonly leadSourceFamily: {
10914
- readonly type: "string";
10915
- readonly enum: readonly ["post_engager", "signal_discovery", "cold"];
10916
- };
10917
- readonly evidence: {
10918
- readonly type: "object";
10919
- readonly additionalProperties: false;
10920
- readonly required: readonly ["evergreen", "lastActualUseAt", "lastScheduledUseAt", "effectiveness", "supplyHealth"];
10921
- readonly properties: {
10922
- readonly evergreen: {
10923
- readonly type: "boolean";
10924
- };
10925
- readonly createdAt: {
10926
- readonly type: readonly ["string", "null"];
10927
- };
10928
- readonly lastActualUseAt: {
10929
- readonly type: readonly ["string", "null"];
10930
- };
10931
- readonly lastScheduledUseAt: {
10932
- readonly type: readonly ["string", "null"];
10933
- };
10934
- readonly effectiveness: {
10935
- readonly type: "string";
10936
- readonly enum: readonly ["unknown", "low", "medium", "high"];
10937
- };
10938
- readonly supplyHealth: {
10939
- readonly type: "string";
10940
- readonly enum: readonly ["unknown", "healthy", "thin", "dry"];
10941
- };
10942
- readonly engagement: {
10943
- readonly type: "object";
10944
- readonly additionalProperties: false;
10945
- readonly required: readonly ["sends", "accepted", "replied", "acceptRate", "replyRate"];
10946
- readonly properties: {
10947
- readonly sends: {
10948
- readonly type: "number";
10949
- readonly minimum: 0;
10950
- };
10951
- readonly accepted: {
10952
- readonly type: "number";
10953
- readonly minimum: 0;
10954
- };
10955
- readonly replied: {
10956
- readonly type: "number";
10957
- readonly minimum: 0;
10958
- };
10959
- readonly acceptRate: {
10960
- readonly type: "number";
10961
- readonly minimum: 0;
10962
- readonly maximum: 100;
10963
- };
10964
- readonly replyRate: {
10965
- readonly type: "number";
10966
- readonly minimum: 0;
10967
- readonly maximum: 100;
10968
- };
10969
- };
10970
- };
10971
- };
10972
- };
10973
10910
  };
10974
10911
  };
10975
10912
  };
@@ -10978,27 +10915,12 @@ export declare const allTools: ({
10978
10915
  readonly items: {
10979
10916
  readonly type: "object";
10980
10917
  readonly additionalProperties: false;
10981
- readonly required: readonly ["id", "name", "status", "lanes", "eligible", "reason", "startEligible", "activeJob", "supply", "leadSourceFamily", "evidence"];
10918
+ readonly required: readonly ["id", "eligible", "reason"];
10982
10919
  readonly properties: {
10983
10920
  readonly id: {
10984
10921
  readonly type: "string";
10985
10922
  readonly minLength: 1;
10986
10923
  };
10987
- readonly name: {
10988
- readonly type: "string";
10989
- };
10990
- readonly status: {
10991
- readonly type: "string";
10992
- readonly enum: readonly ["ACTIVE", "PAUSED"];
10993
- };
10994
- readonly lanes: {
10995
- readonly type: "array";
10996
- readonly minItems: 1;
10997
- readonly items: {
10998
- readonly type: "string";
10999
- readonly enum: readonly ["connection_invite", "paid_inmail"];
11000
- };
11001
- };
11002
10924
  readonly eligible: {
11003
10925
  readonly type: "boolean";
11004
10926
  };
@@ -11026,112 +10948,81 @@ export declare const allTools: ({
11026
10948
  };
11027
10949
  };
11028
10950
  };
11029
- readonly startEligible: {
11030
- readonly type: "boolean";
11031
- };
11032
- readonly activeJob: {
11033
- readonly type: readonly ["object", "null"];
11034
- readonly additionalProperties: false;
11035
- readonly required: readonly ["id", "kind", "status"];
11036
- readonly properties: {
11037
- readonly id: {
11038
- readonly type: "string";
11039
- readonly minLength: 1;
11040
- };
11041
- readonly kind: {
11042
- readonly type: "string";
11043
- readonly enum: readonly ["enrichment", "message_generation", "source_expansion", "scheduling"];
11044
- };
11045
- readonly status: {
11046
- readonly type: "string";
11047
- readonly enum: readonly ["queued", "running"];
11048
- };
11049
- };
11050
- };
11051
- readonly supply: {
11052
- readonly type: "object";
11053
- readonly additionalProperties: false;
11054
- readonly required: readonly ["readyToSchedule", "readyForApproval", "readyForMessageGeneration", "needsEnrichment"];
11055
- readonly properties: {
11056
- readonly readyToSchedule: {
11057
- readonly type: "integer";
11058
- readonly minimum: 0;
11059
- };
11060
- readonly readyForApproval: {
11061
- readonly type: "integer";
11062
- readonly minimum: 0;
11063
- };
11064
- readonly readyForMessageGeneration: {
11065
- readonly type: "integer";
11066
- readonly minimum: 0;
11067
- };
11068
- readonly needsEnrichment: {
11069
- readonly type: "integer";
11070
- readonly minimum: 0;
11071
- };
11072
- };
11073
- };
11074
- readonly leadSourceFamily: {
10951
+ };
10952
+ };
10953
+ };
10954
+ readonly date: {
10955
+ readonly type: "string";
10956
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
10957
+ };
10958
+ readonly sender: {
10959
+ readonly type: "object";
10960
+ readonly additionalProperties: false;
10961
+ readonly required: readonly ["id", "name", "timezone"];
10962
+ readonly properties: {
10963
+ readonly id: {
10964
+ readonly type: "string";
10965
+ readonly minLength: 1;
10966
+ };
10967
+ readonly name: {
10968
+ readonly type: "string";
10969
+ };
10970
+ readonly timezone: {
10971
+ readonly type: "string";
10972
+ readonly minLength: 1;
10973
+ };
10974
+ };
10975
+ };
10976
+ readonly lane: {
10977
+ readonly type: "string";
10978
+ readonly enum: readonly ["connection_invite", "paid_inmail"];
10979
+ };
10980
+ readonly targetSlots: {
10981
+ readonly type: "integer";
10982
+ readonly minimum: 0;
10983
+ };
10984
+ readonly takenSlots: {
10985
+ readonly type: "integer";
10986
+ readonly minimum: 0;
10987
+ };
10988
+ readonly remainingTargetGap: {
10989
+ readonly type: "integer";
10990
+ readonly minimum: 0;
10991
+ };
10992
+ readonly fillableSlotsNow: {
10993
+ readonly type: "integer";
10994
+ readonly minimum: 0;
10995
+ };
10996
+ readonly blockedGap: {
10997
+ readonly type: "integer";
10998
+ readonly minimum: 0;
10999
+ };
11000
+ readonly availableSlots: {
11001
+ readonly type: "integer";
11002
+ readonly minimum: 0;
11003
+ };
11004
+ readonly reason: {
11005
+ readonly type: readonly ["object", "null"];
11006
+ readonly additionalProperties: false;
11007
+ readonly required: readonly ["kind", "codes", "message"];
11008
+ readonly properties: {
11009
+ readonly kind: {
11010
+ readonly type: "string";
11011
+ readonly enum: readonly ["unavailable", "retry_required", "invalid_campaign_configuration"];
11012
+ };
11013
+ readonly codes: {
11014
+ readonly type: "array";
11015
+ readonly items: {
11075
11016
  readonly type: "string";
11076
- readonly enum: readonly ["post_engager", "signal_discovery", "cold"];
11077
- };
11078
- readonly evidence: {
11079
- readonly type: "object";
11080
- readonly additionalProperties: false;
11081
- readonly required: readonly ["evergreen", "lastActualUseAt", "lastScheduledUseAt", "effectiveness", "supplyHealth"];
11082
- readonly properties: {
11083
- readonly evergreen: {
11084
- readonly type: "boolean";
11085
- };
11086
- readonly createdAt: {
11087
- readonly type: readonly ["string", "null"];
11088
- };
11089
- readonly lastActualUseAt: {
11090
- readonly type: readonly ["string", "null"];
11091
- };
11092
- readonly lastScheduledUseAt: {
11093
- readonly type: readonly ["string", "null"];
11094
- };
11095
- readonly effectiveness: {
11096
- readonly type: "string";
11097
- readonly enum: readonly ["unknown", "low", "medium", "high"];
11098
- };
11099
- readonly supplyHealth: {
11100
- readonly type: "string";
11101
- readonly enum: readonly ["unknown", "healthy", "thin", "dry"];
11102
- };
11103
- readonly engagement: {
11104
- readonly type: "object";
11105
- readonly additionalProperties: false;
11106
- readonly required: readonly ["sends", "accepted", "replied", "acceptRate", "replyRate"];
11107
- readonly properties: {
11108
- readonly sends: {
11109
- readonly type: "number";
11110
- readonly minimum: 0;
11111
- };
11112
- readonly accepted: {
11113
- readonly type: "number";
11114
- readonly minimum: 0;
11115
- };
11116
- readonly replied: {
11117
- readonly type: "number";
11118
- readonly minimum: 0;
11119
- };
11120
- readonly acceptRate: {
11121
- readonly type: "number";
11122
- readonly minimum: 0;
11123
- readonly maximum: 100;
11124
- };
11125
- readonly replyRate: {
11126
- readonly type: "number";
11127
- readonly minimum: 0;
11128
- readonly maximum: 100;
11129
- };
11130
- };
11131
- };
11132
- };
11017
+ readonly enum: readonly ["global_cooldown", "connection_cooldown", "paid_inmail_cooldown", "endpoint_temporarily_unavailable", "date_in_past", "no_sending_hours", "sender_disconnected", "sender_limit_reached", "daily_target_met", "no_eligible_campaign", "no_ready_supply", "sales_nav_disconnected", "insufficient_paid_credits", "paid_inmail_connection_health_recheck_required", "paid_inmail_credit_refresh_failed", "invalid_paid_configuration", "campaign_table_missing", "campaign_sequence_invalid", "source_family_unresolved", "campaign_work_in_flight"];
11133
11018
  };
11134
11019
  };
11020
+ readonly message: {
11021
+ readonly type: "string";
11022
+ };
11023
+ readonly resumeAt: {
11024
+ readonly type: "string";
11025
+ };
11135
11026
  };
11136
11027
  };
11137
11028
  readonly paidCreditEvidence: {
@@ -11180,6 +11071,9 @@ export declare const allTools: ({
11180
11071
  };
11181
11072
  };
11182
11073
  };
11074
+ readonly type: "object";
11075
+ readonly additionalProperties: false;
11076
+ readonly required: readonly ["date", "sender", "lane", "targetSlots", "takenSlots", "remainingTargetGap", "fillableSlotsNow", "blockedGap", "availableSlots", "reason", "activeCampaigns", "inactiveCampaigns"];
11183
11077
  };
11184
11078
  };
11185
11079
  readonly durationMs: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.947",
3
+ "version": "0.1.949",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code, Codex, and Hermes campaign workflows",
6
6
  "main": "dist/index.js",
@@ -44,12 +44,15 @@ the exact wait or outcome.
44
44
  first when it is missing;
45
45
  - healthy supplied campaign: maintain it and stay quiet;
46
46
  - manual pause: respect it;
47
- - missing approval, connection or decision: with `launchConsent.mode: "autopilot"` approve messages that passed the quality check and start or resume the campaign yourself; otherwise retain one exact next step. Ask only for what you cannot do yourself, such as a LinkedIn connection, as one question.
48
- Whatever the outcome, also run canonical Refill Sends with `yolo:true` for the
49
- workspace's next two sender-local days before you finish. It checks capacity
50
- itself and does nothing when queues are full. Keep going until the gap is
51
- filled or a real blocker remains; refill results reach the customer in the
52
- next results update, not as a separate post.
47
+ - missing approval, connection or decision: with `launchConsent.mode: "autopilot"` approve messages that passed the quality check and start or resume the campaign yourself. When `launchConsent` has no answer yet, ask the one-time question instead of asking for approval: "I can approve messages that pass my quality check and launch for you, then keep your sends filled. Reply review first if you would rather approve." Save the answer with `save_context` as Create Campaign's Standing Consent does. With `review_first`, retain one exact next step. Ask only for what you cannot do yourself, such as a LinkedIn connection, as one question.
48
+ A built-in weekday refill job fills sends before this review; do not run
49
+ Refill Sends again unless `refill` is this review's one outcome. Read
50
+ `refill_v3_world_state` for the next two sender-local days: a row whose
51
+ reason names a disconnected sender (`sender_disconnected`), a disconnected
52
+ Sales Navigator (`sales_nav_disconnected`) or
53
+ `paid_inmail_connection_health_recheck_required` is a fix only the customer
54
+ can make. Make it this review's `input`: name the sender and say reconnect
55
+ LinkedIn or reconnect Sales Navigator in Settings.
53
56
  6. Observe the owned operation, then record the outcome against the same review
54
57
  effect and fence. The `record_review_outcome` call contains only its action,
55
58
  effect, fence, review outcome, summary, and optional decision/operation refs;