@superagnt/heyreach-outreach 2.0.6 → 2.0.7

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/README.md CHANGED
@@ -12,9 +12,9 @@ This package is the official **OpenClaw** plugin for the **HeyReach** integratio
12
12
 
13
13
  ## What this plugin contains
14
14
 
15
- A fixed, baked-in toolset for the **HeyReach** endpoints below — nothing else. Calls run on the HeyReach account the user connected in their dashboard; the plugin does not change after install and adds no other platform surface. Where HeyReach supports destructive or outbound operations (deletes, updates, sending as the user), always confirm with the user before performing them.
15
+ A fixed, baked-in toolset for the **HeyReach** endpoints below — nothing else. Calls run on the HeyReach account the user connected in the superagnt app; the plugin does not change after install and adds no other platform surface. Where HeyReach supports destructive or outbound operations (deletes, updates, sending as the user), always confirm with the user before performing them.
16
16
 
17
- Prefer MCP? The `@superagnt/superagnt` plugin connects the workspace MCP server instead, whose tool surface is managed by the user in the dashboard.
17
+ Prefer MCP? The `@superagnt/superagnt` plugin connects the workspace MCP server instead, whose tool surface is managed by the user in the superagnt app.
18
18
 
19
19
  ## Overview
20
20
 
@@ -42,8 +42,8 @@ OpenClaw plugin for HeyReach LinkedIn outreach — manage campaigns, leads, lead
42
42
 
43
43
  ## Prerequisites
44
44
 
45
- 1. A **superagnt API key** — create and manage keys in the [superagnt dashboard](https://app.superagnt.com/dashboard).
46
- 2. A connected **HeyReach** account — configure in the [connections dashboard](https://app.superagnt.com/dashboard/connections).
45
+ 1. A **superagnt API key** — create and manage keys in the [superagnt app](https://app.superagnt.com/dashboard).
46
+ 2. A connected **HeyReach** account — configure on the [Connections page](https://app.superagnt.com/dashboard/connections).
47
47
 
48
48
  ## Authentication
49
49
 
@@ -55,14 +55,14 @@ Set `SUPERAGNT_API_KEY` in your environment, or complete browser login when the
55
55
  | --- | --- |
56
56
  | **Integration** | `heyreach` |
57
57
  | **REST base** | `https://api.superagnt.com/v1/connections/heyreach` |
58
- | **OpenAPI operations** | 59 |
59
- | **OpenClaw tools** | 59 |
58
+ | **OpenAPI operations** | 84 |
59
+ | **OpenClaw tools** | 84 |
60
60
 
61
61
  ## Documentation
62
62
 
63
63
  - [Documentation](https://superagnt.com/docs) — getting started and concepts
64
64
  - [Connection guide (HeyReach)](https://superagnt.com/docs) — setup and endpoints
65
- - [Dashboard](https://app.superagnt.com/dashboard) — API keys and usage
65
+ - [superagnt app](https://app.superagnt.com/dashboard) — API keys and usage
66
66
 
67
67
  ## Related
68
68
 
package/index.js CHANGED
@@ -115,23 +115,23 @@ export default function register(api) {
115
115
  "properties": {
116
116
  "offset": {
117
117
  "type": "integer",
118
- "description": "Zero-based offset into the result set."
118
+ "description": "Number of records to skip."
119
119
  },
120
120
  "limit": {
121
121
  "type": "integer",
122
- "description": "Maximum number of campaigns to return."
122
+ "description": "Page size, at most 100."
123
123
  },
124
124
  "keyword": {
125
125
  "type": "string",
126
- "description": "Optional free-text filter applied to campaign names."
126
+ "description": "Matches campaign names."
127
127
  },
128
128
  "statuses": {
129
129
  "type": "array",
130
- "description": "Optional list of campaign statuses to include."
130
+ "description": "Only campaigns in these statuses."
131
131
  },
132
132
  "accountIds": {
133
133
  "type": "array",
134
- "description": "Optional list of LinkedIn sender account IDs to filter campaigns by."
134
+ "description": "Only campaigns using these sender accounts."
135
135
  }
136
136
  }
137
137
  },
@@ -238,15 +238,39 @@ export default function register(api) {
238
238
  "properties": {
239
239
  "name": {
240
240
  "type": "string",
241
- "description": "Display name for the new campaign."
241
+ "description": "Campaign name, 1-50 characters."
242
242
  },
243
243
  "linkedInUserListId": {
244
244
  "type": "integer",
245
- "description": "ID of the existing lead list (`USER_LIST`) to back the campaign. Omit when the campaign should be created with an empty list to be populated via `/campaign/AddLeadsToCampaignV2`."
245
+ "description": "The lead list (`USER_LIST`) the campaign reads leads from."
246
246
  },
247
247
  "linkedInAccountIds": {
248
248
  "type": "array",
249
- "description": "IDs of the connected LinkedIn sender accounts that should run this campaign."
249
+ "description": "Sender accounts that run the campaign; each must be connected with valid auth."
250
+ },
251
+ "excludeContactedFromOtherCampaigns": {
252
+ "type": "boolean",
253
+ "description": "Skip leads already in any other campaign."
254
+ },
255
+ "excludeHasOtherAccConversations": {
256
+ "type": "boolean",
257
+ "description": "Skip leads who already have a conversation with another sender account."
258
+ },
259
+ "excludeContactedFromSenderInOtherCampaign": {
260
+ "type": "boolean",
261
+ "description": "Skip leads the campaign's senders already contacted from another campaign."
262
+ },
263
+ "excludeListId": {
264
+ "type": "integer",
265
+ "description": "A lead list whose members are always skipped; must differ from `linkedInUserListId`."
266
+ },
267
+ "excludeFromLeadBlacklist": {
268
+ "type": "boolean",
269
+ "description": "Skip leads on the workspace's lead blacklist (`/blacklist/GetLeads`)."
270
+ },
271
+ "excludeFromCompanyBlacklist": {
272
+ "type": "boolean",
273
+ "description": "Skip leads whose company is on the workspace's company blacklist (`/blacklist/GetCompanies`)."
250
274
  },
251
275
  "schedule": {
252
276
  "type": "string",
@@ -259,9 +283,8 @@ export default function register(api) {
259
283
  },
260
284
  "required": [
261
285
  "name",
262
- "linkedInAccountIds",
263
- "schedule",
264
- "sequence"
286
+ "linkedInUserListId",
287
+ "linkedInAccountIds"
265
288
  ]
266
289
  },
267
290
  execute: async (_toolCallId, input) => {
@@ -279,40 +302,49 @@ export default function register(api) {
279
302
  "properties": {
280
303
  "campaignIdForTemplate": {
281
304
  "type": "integer",
282
- "description": "ID of the existing campaign whose schedule/sequence/settings should be cloned."
305
+ "description": "The campaign whose sequence and schedule are copied."
283
306
  },
284
307
  "name": {
285
308
  "type": "string",
286
- "description": "Display name for the new campaign."
309
+ "description": "Campaign name, 1-50 characters."
287
310
  },
288
311
  "linkedInUserListId": {
289
312
  "type": "integer",
290
- "description": "ID of the lead list (`USER_LIST`) to back the new campaign."
313
+ "description": "The lead list (`USER_LIST`) for the new campaign."
291
314
  },
292
315
  "linkedInAcccountIdsForCampaign": {
293
316
  "type": "array",
294
- "description": "IDs of the connected LinkedIn sender accounts that should run the new campaign. (Note: spelling `linkedInAcccountIdsForCampaign` matches the upstream API.)"
317
+ "description": "Sender accounts that run the new campaign. (The triple `c` matches HeyReach's API.)"
295
318
  },
296
319
  "excludeContactedFromOtherCampaigns": {
297
320
  "type": "boolean",
298
- "description": "Skip leads that have been contacted by any other campaign in the workspace."
321
+ "description": "Skip leads already in any other campaign."
299
322
  },
300
323
  "excludeHasOtherAccConversations": {
301
324
  "type": "boolean",
302
- "description": "Skip leads who already have an open conversation with another connected LinkedIn account in the workspace."
325
+ "description": "Skip leads who already have a conversation with another sender account."
303
326
  },
304
327
  "excludeContactedFromSenderInOtherCampaign": {
305
328
  "type": "boolean",
306
- "description": "Skip leads previously contacted by this campaign's sender from any other campaign."
329
+ "description": "Skip leads the campaign's senders already contacted from another campaign."
307
330
  },
308
331
  "excludeListId": {
309
332
  "type": "integer",
310
- "description": "Optional ID of an exclusion list — leads present in this list will be skipped."
333
+ "description": "A lead list whose members are always skipped; must differ from `linkedInUserListId`."
334
+ },
335
+ "excludeFromLeadBlacklist": {
336
+ "type": "boolean",
337
+ "description": "Skip leads on the workspace's lead blacklist (`/blacklist/GetLeads`)."
338
+ },
339
+ "excludeFromCompanyBlacklist": {
340
+ "type": "boolean",
341
+ "description": "Skip leads whose company is on the workspace's company blacklist (`/blacklist/GetCompanies`)."
311
342
  }
312
343
  },
313
344
  "required": [
314
345
  "campaignIdForTemplate",
315
346
  "name",
347
+ "linkedInUserListId",
316
348
  "linkedInAcccountIdsForCampaign"
317
349
  ]
318
350
  },
@@ -331,35 +363,45 @@ export default function register(api) {
331
363
  "properties": {
332
364
  "campaignId": {
333
365
  "type": "integer",
334
- "description": "campaignId"
366
+ "description": "The campaign."
335
367
  },
336
368
  "name": {
337
369
  "type": "string",
338
- "description": "name"
370
+ "description": "Campaign name, 1-50 characters."
339
371
  },
340
372
  "linkedInUserListId": {
341
373
  "type": "integer",
342
- "description": "ID of the lead list backing this campaign."
374
+ "description": "The campaign's lead list (`USER_LIST`); send the current one to keep it."
343
375
  },
344
376
  "excludeContactedFromOtherCampaigns": {
345
377
  "type": "boolean",
346
- "description": "excludeContactedFromOtherCampaigns"
378
+ "description": "Skip leads already in any other campaign."
347
379
  },
348
380
  "excludeHasOtherAccConversations": {
349
381
  "type": "boolean",
350
- "description": "excludeHasOtherAccConversations"
382
+ "description": "Skip leads who already have a conversation with another sender account."
351
383
  },
352
384
  "excludeContactedFromSenderInOtherCampaign": {
353
385
  "type": "boolean",
354
- "description": "excludeContactedFromSenderInOtherCampaign"
386
+ "description": "Skip leads the campaign's senders already contacted from another campaign."
355
387
  },
356
388
  "excludeListId": {
357
389
  "type": "integer",
358
- "description": "Optional exclusion list ID. Pass `null` to clear."
390
+ "description": "A lead list whose members are always skipped; must differ from `linkedInUserListId`."
391
+ },
392
+ "excludeFromLeadBlacklist": {
393
+ "type": "boolean",
394
+ "description": "Skip leads on the workspace's lead blacklist (`/blacklist/GetLeads`)."
395
+ },
396
+ "excludeFromCompanyBlacklist": {
397
+ "type": "boolean",
398
+ "description": "Skip leads whose company is on the workspace's company blacklist (`/blacklist/GetCompanies`)."
359
399
  }
360
400
  },
361
401
  "required": [
362
- "campaignId"
402
+ "campaignId",
403
+ "name",
404
+ "linkedInUserListId"
363
405
  ]
364
406
  },
365
407
  execute: async (_toolCallId, input) => {
@@ -423,6 +465,60 @@ export default function register(api) {
423
465
  },
424
466
  })
425
467
 
468
+ api.registerTool({
469
+ name: 'superagnt_connection_heyreach_campaign_add_accounts',
470
+ description: "Add sender accounts to campaign",
471
+ parameters: {
472
+ "type": "object",
473
+ "properties": {
474
+ "campaignId": {
475
+ "type": "integer",
476
+ "description": "The campaign."
477
+ },
478
+ "linkedInAccountIds": {
479
+ "type": "array",
480
+ "description": "Sender accounts to add."
481
+ }
482
+ },
483
+ "required": [
484
+ "campaignId",
485
+ "linkedInAccountIds"
486
+ ]
487
+ },
488
+ execute: async (_toolCallId, input) => {
489
+ const key = ensureApiKey()
490
+ const params = parseToolInput(input)
491
+ return callSuperagnt(key, 'POST', '/campaign/AddLinkedInAccountsToCampaign', undefined, params)
492
+ },
493
+ })
494
+
495
+ api.registerTool({
496
+ name: 'superagnt_connection_heyreach_campaign_remove_accounts',
497
+ description: "Remove sender accounts from campaign",
498
+ parameters: {
499
+ "type": "object",
500
+ "properties": {
501
+ "campaignId": {
502
+ "type": "integer",
503
+ "description": "The campaign."
504
+ },
505
+ "linkedInAccountIds": {
506
+ "type": "array",
507
+ "description": "Sender accounts to remove."
508
+ }
509
+ },
510
+ "required": [
511
+ "campaignId",
512
+ "linkedInAccountIds"
513
+ ]
514
+ },
515
+ execute: async (_toolCallId, input) => {
516
+ const key = ensureApiKey()
517
+ const params = parseToolInput(input)
518
+ return callSuperagnt(key, 'POST', '/campaign/RemoveLinkedInAccountsFromCampaign', undefined, params)
519
+ },
520
+ })
521
+
426
522
  api.registerTool({
427
523
  name: 'superagnt_connection_heyreach_campaign_update_sequence',
428
524
  description: "Update campaign sequence",
@@ -458,7 +554,7 @@ export default function register(api) {
458
554
  "properties": {
459
555
  "campaignId": {
460
556
  "type": "integer",
461
- "description": "campaignId"
557
+ "description": "The campaign."
462
558
  }
463
559
  },
464
560
  "required": [
@@ -485,6 +581,14 @@ export default function register(api) {
485
581
  "accountLeadPairs": {
486
582
  "type": "array",
487
583
  "description": "List of `{ lead, linkedInAccountId }` pairs. `linkedInAccountId` selects which connected sender account should own the outreach for that lead and must be one of the campaign's assigned sender accounts."
584
+ },
585
+ "resumePausedCampaign": {
586
+ "type": "boolean",
587
+ "description": "When true and the campaign is `PAUSED`, HeyReach resumes the campaign before adding the leads. Send `false` unless the operator asked for a resume."
588
+ },
589
+ "resumeFinishedCampaign": {
590
+ "type": "boolean",
591
+ "description": "When true and the campaign is `FINISHED`, HeyReach resumes it before adding the leads."
488
592
  }
489
593
  },
490
594
  "required": [
@@ -515,11 +619,11 @@ export default function register(api) {
515
619
  },
516
620
  "resumeFinishedCampaign": {
517
621
  "type": "boolean",
518
- "description": "If true and the campaign is `FINISHED`, the API will resume it before appending leads."
622
+ "description": "When true and the campaign is `FINISHED`, HeyReach resumes it before adding the leads."
519
623
  },
520
624
  "resumePausedCampaign": {
521
625
  "type": "boolean",
522
- "description": "If true and the campaign is `PAUSED`, the API will resume it before appending leads."
626
+ "description": "When true and the campaign is `PAUSED`, HeyReach resumes the campaign before adding the leads. Send `false` unless the operator asked for a resume."
523
627
  }
524
628
  },
525
629
  "required": [
@@ -572,7 +676,7 @@ export default function register(api) {
572
676
  "properties": {
573
677
  "campaignId": {
574
678
  "type": "integer",
575
- "description": "campaignId"
679
+ "description": "The campaign."
576
680
  },
577
681
  "offset": {
578
682
  "type": "integer",
@@ -580,7 +684,7 @@ export default function register(api) {
580
684
  },
581
685
  "limit": {
582
686
  "type": "integer",
583
- "description": "limit"
687
+ "description": "Page size, at most 100."
584
688
  },
585
689
  "timeFrom": {
586
690
  "type": "string",
@@ -592,7 +696,7 @@ export default function register(api) {
592
696
  },
593
697
  "timeFilter": {
594
698
  "type": "string",
595
- "description": "Which lead timestamp `timeFrom`/`timeTo` apply to."
699
+ "description": "Which timestamp `timeFrom`/`timeTo` filter: `CreationTime`, `LastActionTakenTime`, `FailedTime`, `LastActionTakenOrFailedTime`, or `Everywhere` (no time filter, the default)."
596
700
  }
597
701
  },
598
702
  "required": [
@@ -641,6 +745,38 @@ export default function register(api) {
641
745
  },
642
746
  })
643
747
 
748
+ api.registerTool({
749
+ name: 'superagnt_connection_heyreach_campaign_update_lead_fields',
750
+ description: "Update a campaign lead's custom fields",
751
+ parameters: {
752
+ "type": "object",
753
+ "properties": {
754
+ "campaignId": {
755
+ "type": "integer",
756
+ "description": "The campaign."
757
+ },
758
+ "leadMemberIdOrUrl": {
759
+ "type": "string",
760
+ "description": "The lead: its LinkedIn member id (`linkedin_id`) or its profile URL."
761
+ },
762
+ "customFields": {
763
+ "type": "object",
764
+ "description": "Field name → value. An existing field is updated, a new one created, and a null or empty value deletes the field. At most 100 fields; names up to 128 characters, values up to 2048."
765
+ }
766
+ },
767
+ "required": [
768
+ "campaignId",
769
+ "leadMemberIdOrUrl",
770
+ "customFields"
771
+ ]
772
+ },
773
+ execute: async (_toolCallId, input) => {
774
+ const key = ensureApiKey()
775
+ const params = parseToolInput(input)
776
+ return callSuperagnt(key, 'PATCH', '/campaign/UpdateLeadCustomFields/campaigns/{campaignId}/leads/custom-fields', undefined, params)
777
+ },
778
+ })
779
+
644
780
  api.registerTool({
645
781
  name: 'superagnt_connection_heyreach_inbox_get_conversations_v2',
646
782
  description: "Get conversations",
@@ -649,15 +785,15 @@ export default function register(api) {
649
785
  "properties": {
650
786
  "offset": {
651
787
  "type": "integer",
652
- "description": "offset"
788
+ "description": "Number of records to skip."
653
789
  },
654
790
  "limit": {
655
791
  "type": "integer",
656
- "description": "limit"
792
+ "description": "Page size, at most 100."
657
793
  },
658
794
  "filters": {
659
795
  "type": "object",
660
- "description": "Optional filter object."
796
+ "description": "Optional filters."
661
797
  }
662
798
  }
663
799
  },
@@ -668,6 +804,41 @@ export default function register(api) {
668
804
  },
669
805
  })
670
806
 
807
+ api.registerTool({
808
+ name: 'superagnt_connection_heyreach_inbox_get_conversations_v3',
809
+ description: "Get conversations (cursor-paged)",
810
+ parameters: {
811
+ "type": "object",
812
+ "properties": {
813
+ "limit": {
814
+ "type": "integer",
815
+ "description": "Page size, at most 100."
816
+ },
817
+ "cursor": {
818
+ "type": "string",
819
+ "description": "The previous page's `nextCursor`; omit or null for the first page. An edited cursor is a 400."
820
+ },
821
+ "from": {
822
+ "type": "string",
823
+ "description": "Lower bound on `lastMessageAt` (UTC)."
824
+ },
825
+ "to": {
826
+ "type": "string",
827
+ "description": "Upper bound on `lastMessageAt` (UTC); defaults to now."
828
+ },
829
+ "filters": {
830
+ "type": "object",
831
+ "description": "Optional filters."
832
+ }
833
+ }
834
+ },
835
+ execute: async (_toolCallId, input) => {
836
+ const key = ensureApiKey()
837
+ const params = parseToolInput(input)
838
+ return callSuperagnt(key, 'POST', '/inbox/GetConversationsV3', undefined, params)
839
+ },
840
+ })
841
+
671
842
  api.registerTool({
672
843
  name: 'superagnt_connection_heyreach_inbox_get_chatroom',
673
844
  description: "Get chatroom (single conversation thread)",
@@ -680,7 +851,7 @@ export default function register(api) {
680
851
  },
681
852
  "conversationId": {
682
853
  "type": "string",
683
- "description": "Opaque conversation/chatroom identifier (as returned by `/inbox/GetConversationsV2`)."
854
+ "description": "The conversation's `id` (from `/inbox/GetConversationsV2` or `/inbox/GetConversationsV3`)."
684
855
  }
685
856
  },
686
857
  "required": [
@@ -707,11 +878,11 @@ export default function register(api) {
707
878
  },
708
879
  "subject": {
709
880
  "type": "string",
710
- "description": "Optional InMail subject line. Ignored for non-InMail threads."
881
+ "description": "Subject line; required by HeyReach and shown only in InMail threads."
711
882
  },
712
883
  "conversationId": {
713
884
  "type": "string",
714
- "description": "Opaque conversation/chatroom identifier (as returned by `/inbox/GetConversationsV2`)."
885
+ "description": "The conversation's `id`."
715
886
  },
716
887
  "linkedInAccountId": {
717
888
  "type": "integer",
@@ -720,6 +891,7 @@ export default function register(api) {
720
891
  },
721
892
  "required": [
722
893
  "message",
894
+ "subject",
723
895
  "conversationId",
724
896
  "linkedInAccountId"
725
897
  ]
@@ -775,11 +947,11 @@ export default function register(api) {
775
947
  },
776
948
  "limit": {
777
949
  "type": "integer",
778
- "description": "limit"
950
+ "description": "Page size, at most 100."
779
951
  },
780
952
  "keyword": {
781
953
  "type": "string",
782
- "description": "Optional free-text filter applied to the account's display name."
954
+ "description": "Matches the account's name."
783
955
  }
784
956
  }
785
957
  },
@@ -812,6 +984,210 @@ export default function register(api) {
812
984
  },
813
985
  })
814
986
 
987
+ api.registerTool({
988
+ name: 'superagnt_connection_heyreach_li_account_get_status',
989
+ description: "Get sender account connection status",
990
+ parameters: {
991
+ "type": "object",
992
+ "properties": {
993
+ "accountId": {
994
+ "type": "integer",
995
+ "description": "The sender account."
996
+ }
997
+ },
998
+ "required": [
999
+ "accountId"
1000
+ ]
1001
+ },
1002
+ execute: async (_toolCallId, input) => {
1003
+ const key = ensureApiKey()
1004
+ const params = parseToolInput(input)
1005
+ return callSuperagnt(key, 'GET', '/li_account/GetAccountStatus/{accountId}', params)
1006
+ },
1007
+ })
1008
+
1009
+ api.registerTool({
1010
+ name: 'superagnt_connection_heyreach_li_account_reconnect',
1011
+ description: "Reconnect sender account",
1012
+ parameters: {
1013
+ "type": "object",
1014
+ "properties": {
1015
+ "accountId": {
1016
+ "type": "integer",
1017
+ "description": "The sender account (`/li_account/GetAll`)."
1018
+ }
1019
+ },
1020
+ "required": [
1021
+ "accountId"
1022
+ ]
1023
+ },
1024
+ execute: async (_toolCallId, input) => {
1025
+ const key = ensureApiKey()
1026
+ const params = parseToolInput(input)
1027
+ return callSuperagnt(key, 'POST', '/li_account/Reconnect', undefined, params)
1028
+ },
1029
+ })
1030
+
1031
+ api.registerTool({
1032
+ name: 'superagnt_connection_heyreach_li_account_relogin_navigator',
1033
+ description: "Re-authenticate Sales Navigator",
1034
+ parameters: {
1035
+ "type": "object",
1036
+ "properties": {
1037
+ "accountId": {
1038
+ "type": "integer",
1039
+ "description": "The sender account (`/li_account/GetAll`)."
1040
+ }
1041
+ },
1042
+ "required": [
1043
+ "accountId"
1044
+ ]
1045
+ },
1046
+ execute: async (_toolCallId, input) => {
1047
+ const key = ensureApiKey()
1048
+ const params = parseToolInput(input)
1049
+ return callSuperagnt(key, 'POST', '/li_account/ReloginSalesNavigator', undefined, params)
1050
+ },
1051
+ })
1052
+
1053
+ api.registerTool({
1054
+ name: 'superagnt_connection_heyreach_li_account_relogin_recruiter',
1055
+ description: "Re-authenticate Recruiter",
1056
+ parameters: {
1057
+ "type": "object",
1058
+ "properties": {
1059
+ "accountId": {
1060
+ "type": "integer",
1061
+ "description": "The sender account (`/li_account/GetAll`)."
1062
+ }
1063
+ },
1064
+ "required": [
1065
+ "accountId"
1066
+ ]
1067
+ },
1068
+ execute: async (_toolCallId, input) => {
1069
+ const key = ensureApiKey()
1070
+ const params = parseToolInput(input)
1071
+ return callSuperagnt(key, 'POST', '/li_account/ReloginRecruiter', undefined, params)
1072
+ },
1073
+ })
1074
+
1075
+ api.registerTool({
1076
+ name: 'superagnt_connection_heyreach_li_account_resync',
1077
+ description: "Resync sender account profile",
1078
+ parameters: {
1079
+ "type": "object",
1080
+ "properties": {
1081
+ "accountId": {
1082
+ "type": "integer",
1083
+ "description": "The sender account (`/li_account/GetAll`)."
1084
+ }
1085
+ },
1086
+ "required": [
1087
+ "accountId"
1088
+ ]
1089
+ },
1090
+ execute: async (_toolCallId, input) => {
1091
+ const key = ensureApiKey()
1092
+ const params = parseToolInput(input)
1093
+ return callSuperagnt(key, 'POST', '/li_account/Resync', undefined, params)
1094
+ },
1095
+ })
1096
+
1097
+ api.registerTool({
1098
+ name: 'superagnt_connection_heyreach_li_account_get_proxy_countries',
1099
+ description: "List proxy countries",
1100
+ parameters: {
1101
+ "type": "object",
1102
+ "properties": {}
1103
+ },
1104
+ execute: async (_toolCallId, input) => {
1105
+ const key = ensureApiKey()
1106
+ const params = parseToolInput(input)
1107
+ return callSuperagnt(key, 'GET', '/li_account/GetProxyCountries', params)
1108
+ },
1109
+ })
1110
+
1111
+ api.registerTool({
1112
+ name: 'superagnt_connection_heyreach_li_account_update_proxy',
1113
+ description: "Update sender account proxy",
1114
+ parameters: {
1115
+ "type": "object",
1116
+ "properties": {
1117
+ "accountId": {
1118
+ "type": "integer",
1119
+ "description": "The sender account (`/li_account/GetAll`)."
1120
+ },
1121
+ "proxyCountryCode": {
1122
+ "type": "string",
1123
+ "description": "Country of the HeyReach-managed proxy, e.g. `US`."
1124
+ }
1125
+ },
1126
+ "required": [
1127
+ "accountId",
1128
+ "proxyCountryCode"
1129
+ ]
1130
+ },
1131
+ execute: async (_toolCallId, input) => {
1132
+ const key = ensureApiKey()
1133
+ const params = parseToolInput(input)
1134
+ return callSuperagnt(key, 'POST', '/li_account/UpdateProxy', undefined, params)
1135
+ },
1136
+ })
1137
+
1138
+ api.registerTool({
1139
+ name: 'superagnt_connection_heyreach_li_account_update_inbox_config',
1140
+ description: "Update sender inbox sync",
1141
+ parameters: {
1142
+ "type": "object",
1143
+ "properties": {
1144
+ "accountId": {
1145
+ "type": "integer",
1146
+ "description": "The sender account (`/li_account/GetAll`)."
1147
+ },
1148
+ "inboxScrapeMode": {
1149
+ "type": "string",
1150
+ "description": "inboxScrapeMode"
1151
+ }
1152
+ },
1153
+ "required": [
1154
+ "accountId",
1155
+ "inboxScrapeMode"
1156
+ ]
1157
+ },
1158
+ execute: async (_toolCallId, input) => {
1159
+ const key = ensureApiKey()
1160
+ const params = parseToolInput(input)
1161
+ return callSuperagnt(key, 'POST', '/li_account/UpdateInboxConfiguration', undefined, params)
1162
+ },
1163
+ })
1164
+
1165
+ api.registerTool({
1166
+ name: 'superagnt_connection_heyreach_li_account_remove',
1167
+ description: "Remove sender account",
1168
+ parameters: {
1169
+ "type": "object",
1170
+ "properties": {
1171
+ "accountId": {
1172
+ "type": "integer",
1173
+ "description": "The sender account."
1174
+ },
1175
+ "force": {
1176
+ "type": "boolean",
1177
+ "description": "Take the account off its active campaigns first."
1178
+ }
1179
+ },
1180
+ "required": [
1181
+ "accountId"
1182
+ ]
1183
+ },
1184
+ execute: async (_toolCallId, input) => {
1185
+ const key = ensureApiKey()
1186
+ const params = parseToolInput(input)
1187
+ return callSuperagnt(key, 'DELETE', '/li_account/RemoveAccount/{accountId}', undefined, params)
1188
+ },
1189
+ })
1190
+
815
1191
  api.registerTool({
816
1192
  name: 'superagnt_connection_heyreach_list_get_all',
817
1193
  description: "List lead/company lists",
@@ -824,7 +1200,7 @@ export default function register(api) {
824
1200
  },
825
1201
  "limit": {
826
1202
  "type": "integer",
827
- "description": "limit"
1203
+ "description": "Page size, at most 100."
828
1204
  },
829
1205
  "keyword": {
830
1206
  "type": "string",
@@ -832,7 +1208,11 @@ export default function register(api) {
832
1208
  },
833
1209
  "listType": {
834
1210
  "type": "string",
835
- "description": "Optional filter to restrict to lead lists or company lists."
1211
+ "description": "Only lead lists (`USER_LIST`) or only company lists (`COMPANY_LIST`)."
1212
+ },
1213
+ "campaignIds": {
1214
+ "type": "array",
1215
+ "description": "Only lists used by these campaigns."
836
1216
  }
837
1217
  }
838
1218
  },
@@ -877,7 +1257,7 @@ export default function register(api) {
877
1257
  },
878
1258
  "type": {
879
1259
  "type": "string",
880
- "description": "Whether this list contains people (`USER_LIST`) or companies (`COMPANY_LIST`)."
1260
+ "description": "`USER_LIST` for leads or `COMPANY_LIST` for companies."
881
1261
  }
882
1262
  },
883
1263
  "required": [
@@ -908,7 +1288,7 @@ export default function register(api) {
908
1288
  },
909
1289
  "limit": {
910
1290
  "type": "integer",
911
- "description": "limit"
1291
+ "description": "Page size, at most 1000."
912
1292
  },
913
1293
  "keyword": {
914
1294
  "type": "string",
@@ -958,7 +1338,7 @@ export default function register(api) {
958
1338
  },
959
1339
  "limit": {
960
1340
  "type": "integer",
961
- "description": "limit"
1341
+ "description": "Page size, at most 1000."
962
1342
  },
963
1343
  "keyword": {
964
1344
  "type": "string",
@@ -1108,7 +1488,7 @@ export default function register(api) {
1108
1488
  },
1109
1489
  "limit": {
1110
1490
  "type": "integer",
1111
- "description": "limit"
1491
+ "description": "Page size, at most 1000."
1112
1492
  }
1113
1493
  }
1114
1494
  },
@@ -1119,6 +1499,38 @@ export default function register(api) {
1119
1499
  },
1120
1500
  })
1121
1501
 
1502
+ api.registerTool({
1503
+ name: 'superagnt_connection_heyreach_list_update_lead_fields',
1504
+ description: "Update a list lead's custom fields",
1505
+ parameters: {
1506
+ "type": "object",
1507
+ "properties": {
1508
+ "listId": {
1509
+ "type": "integer",
1510
+ "description": "The lead list."
1511
+ },
1512
+ "leadMemberIdOrUrl": {
1513
+ "type": "string",
1514
+ "description": "The lead: its LinkedIn member id (`linkedin_id`) or its profile URL."
1515
+ },
1516
+ "customFields": {
1517
+ "type": "object",
1518
+ "description": "Field name → value. An existing field is updated, a new one created, and a null or empty value deletes the field. At most 100 fields; names up to 128 characters, values up to 2048."
1519
+ }
1520
+ },
1521
+ "required": [
1522
+ "listId",
1523
+ "leadMemberIdOrUrl",
1524
+ "customFields"
1525
+ ]
1526
+ },
1527
+ execute: async (_toolCallId, input) => {
1528
+ const key = ensureApiKey()
1529
+ const params = parseToolInput(input)
1530
+ return callSuperagnt(key, 'PATCH', '/list/UpdateLeadCustomFields/lists/{listId}/leads/custom-fields', undefined, params)
1531
+ },
1532
+ })
1533
+
1122
1534
  api.registerTool({
1123
1535
  name: 'superagnt_connection_heyreach_lead_get_by_profile_url',
1124
1536
  description: "Get lead by profile URL",
@@ -1253,6 +1665,201 @@ export default function register(api) {
1253
1665
  },
1254
1666
  })
1255
1667
 
1668
+ api.registerTool({
1669
+ name: 'superagnt_connection_heyreach_blacklist_get_leads',
1670
+ description: "List blacklisted leads",
1671
+ parameters: {
1672
+ "type": "object",
1673
+ "properties": {
1674
+ "offset": {
1675
+ "type": "integer",
1676
+ "description": "Number of records to skip."
1677
+ },
1678
+ "limit": {
1679
+ "type": "integer",
1680
+ "description": "Page size, at most 100."
1681
+ },
1682
+ "search": {
1683
+ "type": "string",
1684
+ "description": "Case-insensitive match on name, email, profile URL and LinkedIn member id."
1685
+ },
1686
+ "matchingStatus": {
1687
+ "type": "string",
1688
+ "description": "Only entries that resolved this way."
1689
+ }
1690
+ }
1691
+ },
1692
+ execute: async (_toolCallId, input) => {
1693
+ const key = ensureApiKey()
1694
+ const params = parseToolInput(input)
1695
+ return callSuperagnt(key, 'POST', '/blacklist/GetLeads', undefined, params)
1696
+ },
1697
+ })
1698
+
1699
+ api.registerTool({
1700
+ name: 'superagnt_connection_heyreach_blacklist_add_leads',
1701
+ description: "Blacklist leads",
1702
+ parameters: {
1703
+ "type": "object",
1704
+ "properties": {
1705
+ "leads": {
1706
+ "type": "array",
1707
+ "description": "1-100 entries, each with at least one identifier."
1708
+ }
1709
+ },
1710
+ "required": [
1711
+ "leads"
1712
+ ]
1713
+ },
1714
+ execute: async (_toolCallId, input) => {
1715
+ const key = ensureApiKey()
1716
+ const params = parseToolInput(input)
1717
+ return callSuperagnt(key, 'POST', '/blacklist/AddLeads', undefined, params)
1718
+ },
1719
+ })
1720
+
1721
+ api.registerTool({
1722
+ name: 'superagnt_connection_heyreach_blacklist_remove_leads',
1723
+ description: "Remove blacklisted leads",
1724
+ parameters: {
1725
+ "type": "object",
1726
+ "properties": {
1727
+ "ids": {
1728
+ "type": "array",
1729
+ "description": "Entry ids, 1-100."
1730
+ }
1731
+ },
1732
+ "required": [
1733
+ "ids"
1734
+ ]
1735
+ },
1736
+ execute: async (_toolCallId, input) => {
1737
+ const key = ensureApiKey()
1738
+ const params = parseToolInput(input)
1739
+ return callSuperagnt(key, 'POST', '/blacklist/RemoveLeads', undefined, params)
1740
+ },
1741
+ })
1742
+
1743
+ api.registerTool({
1744
+ name: 'superagnt_connection_heyreach_blacklist_get_companies',
1745
+ description: "List blacklisted companies",
1746
+ parameters: {
1747
+ "type": "object",
1748
+ "properties": {
1749
+ "offset": {
1750
+ "type": "integer",
1751
+ "description": "Number of records to skip."
1752
+ },
1753
+ "limit": {
1754
+ "type": "integer",
1755
+ "description": "Page size, at most 100."
1756
+ },
1757
+ "search": {
1758
+ "type": "string",
1759
+ "description": "Case-insensitive match on company name and company URL."
1760
+ },
1761
+ "matchingStatus": {
1762
+ "type": "string",
1763
+ "description": "Only entries that resolved this way."
1764
+ }
1765
+ }
1766
+ },
1767
+ execute: async (_toolCallId, input) => {
1768
+ const key = ensureApiKey()
1769
+ const params = parseToolInput(input)
1770
+ return callSuperagnt(key, 'POST', '/blacklist/GetCompanies', undefined, params)
1771
+ },
1772
+ })
1773
+
1774
+ api.registerTool({
1775
+ name: 'superagnt_connection_heyreach_blacklist_add_companies',
1776
+ description: "Blacklist companies",
1777
+ parameters: {
1778
+ "type": "object",
1779
+ "properties": {
1780
+ "companies": {
1781
+ "type": "array",
1782
+ "description": "1-100 entries, each with `url`, `name` or both."
1783
+ }
1784
+ },
1785
+ "required": [
1786
+ "companies"
1787
+ ]
1788
+ },
1789
+ execute: async (_toolCallId, input) => {
1790
+ const key = ensureApiKey()
1791
+ const params = parseToolInput(input)
1792
+ return callSuperagnt(key, 'POST', '/blacklist/AddCompanies', undefined, params)
1793
+ },
1794
+ })
1795
+
1796
+ api.registerTool({
1797
+ name: 'superagnt_connection_heyreach_blacklist_remove_companies',
1798
+ description: "Remove blacklisted companies",
1799
+ parameters: {
1800
+ "type": "object",
1801
+ "properties": {
1802
+ "ids": {
1803
+ "type": "array",
1804
+ "description": "Entry ids, 1-100."
1805
+ }
1806
+ },
1807
+ "required": [
1808
+ "ids"
1809
+ ]
1810
+ },
1811
+ execute: async (_toolCallId, input) => {
1812
+ const key = ensureApiKey()
1813
+ const params = parseToolInput(input)
1814
+ return callSuperagnt(key, 'POST', '/blacklist/RemoveCompanies', undefined, params)
1815
+ },
1816
+ })
1817
+
1818
+ api.registerTool({
1819
+ name: 'superagnt_connection_heyreach_enrich_email',
1820
+ description: "Start an email enrichment",
1821
+ parameters: {
1822
+ "type": "object",
1823
+ "properties": {
1824
+ "profileUrl": {
1825
+ "type": "string",
1826
+ "description": "The lead's LinkedIn profile URL."
1827
+ },
1828
+ "leadMemberId": {
1829
+ "type": "string",
1830
+ "description": "An existing lead's `linkedin_id`."
1831
+ }
1832
+ }
1833
+ },
1834
+ execute: async (_toolCallId, input) => {
1835
+ const key = ensureApiKey()
1836
+ const params = parseToolInput(input)
1837
+ return callSuperagnt(key, 'POST', '/enrichment/enrich-email', undefined, params)
1838
+ },
1839
+ })
1840
+
1841
+ api.registerTool({
1842
+ name: 'superagnt_connection_heyreach_enrich_email_check_job',
1843
+ description: "Check an email enrichment",
1844
+ parameters: {
1845
+ "type": "object",
1846
+ "properties": {
1847
+ "jobId": {
1848
+ "type": "integer",
1849
+ "description": "The `jobId` from `/enrichment/enrich-email`."
1850
+ }
1851
+ },
1852
+ "required": [
1853
+ "jobId"
1854
+ ]
1855
+ },
1856
+ execute: async (_toolCallId, input) => {
1857
+ const key = ensureApiKey()
1858
+ const params = parseToolInput(input)
1859
+ return callSuperagnt(key, 'GET', '/enrichment/enrich-email/check-job/{jobId}', params)
1860
+ },
1861
+ })
1862
+
1256
1863
  api.registerTool({
1257
1864
  name: 'superagnt_connection_heyreach_stats_get_overall',
1258
1865
  description: "Get overall stats",
@@ -1269,13 +1876,17 @@ export default function register(api) {
1269
1876
  },
1270
1877
  "campaignIds": {
1271
1878
  "type": "array",
1272
- "description": "Restrict the aggregation to these campaign IDs."
1879
+ "description": "The campaigns to count, or `[]` for every campaign. Required."
1273
1880
  },
1274
1881
  "accountIds": {
1275
1882
  "type": "array",
1276
- "description": "Restrict the aggregation to these connected LinkedIn sender accounts."
1883
+ "description": "The connected LinkedIn sender accounts to count, or `[]` for every sender. Required."
1277
1884
  }
1278
- }
1885
+ },
1886
+ "required": [
1887
+ "accountIds",
1888
+ "campaignIds"
1889
+ ]
1279
1890
  },
1280
1891
  execute: async (_toolCallId, input) => {
1281
1892
  const key = ensureApiKey()
@@ -1300,13 +1911,17 @@ export default function register(api) {
1300
1911
  },
1301
1912
  "campaignIds": {
1302
1913
  "type": "array",
1303
- "description": "campaignIds"
1914
+ "description": "The campaigns to count, or `[]` for every campaign. Required."
1304
1915
  },
1305
1916
  "accountIds": {
1306
1917
  "type": "array",
1307
- "description": "accountIds"
1918
+ "description": "The connected LinkedIn sender accounts to count, or `[]` for every sender. Required."
1308
1919
  }
1309
- }
1920
+ },
1921
+ "required": [
1922
+ "accountIds",
1923
+ "campaignIds"
1924
+ ]
1310
1925
  },
1311
1926
  execute: async (_toolCallId, input) => {
1312
1927
  const key = ensureApiKey()
@@ -1323,19 +1938,15 @@ export default function register(api) {
1323
1938
  "properties": {
1324
1939
  "senderId": {
1325
1940
  "type": "integer",
1326
- "description": "ID of the connected LinkedIn sender account whose network should be returned."
1941
+ "description": "The sender account (`/li_account/GetAll`)."
1327
1942
  },
1328
- "offset": {
1943
+ "pageNumber": {
1329
1944
  "type": "integer",
1330
- "description": "offset"
1945
+ "description": "Zero-based page number."
1331
1946
  },
1332
- "limit": {
1947
+ "pageSize": {
1333
1948
  "type": "integer",
1334
- "description": "limit"
1335
- },
1336
- "keyword": {
1337
- "type": "string",
1338
- "description": "Optional free-text filter applied to first/last name and headline."
1949
+ "description": "Page size, at most 100."
1339
1950
  }
1340
1951
  },
1341
1952
  "required": [
@@ -1387,7 +1998,7 @@ export default function register(api) {
1387
1998
  "properties": {
1388
1999
  "webhookName": {
1389
2000
  "type": "string",
1390
- "description": "webhookName"
2001
+ "description": "3-25 characters."
1391
2002
  },
1392
2003
  "webhookUrl": {
1393
2004
  "type": "string",
@@ -1399,11 +2010,11 @@ export default function register(api) {
1399
2010
  },
1400
2011
  "campaignIds": {
1401
2012
  "type": "array",
1402
- "description": "Optional — restrict to events originated by these campaigns. Empty/omitted means all campaigns."
2013
+ "description": "Campaigns to listen to; empty or omitted means every campaign."
1403
2014
  },
1404
2015
  "customHeaders": {
1405
- "type": "object",
1406
- "description": "Optional custom HTTP headers to include on every webhook delivery (e.g. for authentication)."
2016
+ "type": "array",
2017
+ "description": "Extra HTTP headers HeyReach sends with each delivery, as `[{ name, value }]` (the shape `/webhooks/GetWebhookById` returns with `includeCustomHeaders`). HeyReach does not document them on writes: read the webhook back with `includeCustomHeaders: true` to confirm they were kept."
1407
2018
  }
1408
2019
  },
1409
2020
  "required": [
@@ -1457,7 +2068,7 @@ export default function register(api) {
1457
2068
  },
1458
2069
  "limit": {
1459
2070
  "type": "integer",
1460
- "description": "limit"
2071
+ "description": "Page size, at most 100."
1461
2072
  },
1462
2073
  "includeCustomHeaders": {
1463
2074
  "type": "boolean",
@@ -1484,7 +2095,7 @@ export default function register(api) {
1484
2095
  },
1485
2096
  "webhookName": {
1486
2097
  "type": "string",
1487
- "description": "webhookName"
2098
+ "description": "3-25 characters."
1488
2099
  },
1489
2100
  "webhookUrl": {
1490
2101
  "type": "string",
@@ -1500,11 +2111,11 @@ export default function register(api) {
1500
2111
  },
1501
2112
  "isActive": {
1502
2113
  "type": "boolean",
1503
- "description": "isActive"
2114
+ "description": "false pauses the webhook: HeyReach stops sending its events and the webhook can then be deleted (HeyReach refuses to delete an active one)."
1504
2115
  },
1505
2116
  "customHeaders": {
1506
- "type": "object",
1507
- "description": "customHeaders"
2117
+ "type": "array",
2118
+ "description": "Extra HTTP headers HeyReach sends with each delivery, as `[{ name, value }]` (the shape `/webhooks/GetWebhookById` returns with `includeCustomHeaders`). HeyReach does not document them on writes: read the webhook back with `includeCustomHeaders: true` to confirm they were kept."
1508
2119
  }
1509
2120
  },
1510
2121
  "required": [
@@ -1854,4 +2465,88 @@ export default function register(api) {
1854
2465
  return callSuperagnt(key, 'POST', '/management/organizations/users/invite/members', undefined, params)
1855
2466
  },
1856
2467
  })
2468
+
2469
+ api.registerTool({
2470
+ name: 'superagnt_connection_heyreach_org_li_accounts_get_all',
2471
+ description: "List sender accounts across workspaces",
2472
+ parameters: {
2473
+ "type": "object",
2474
+ "properties": {
2475
+ "keyword": {
2476
+ "type": "string",
2477
+ "description": "Matches the account's name."
2478
+ },
2479
+ "workspaceIds": {
2480
+ "type": "array",
2481
+ "description": "Only these workspaces; empty or omitted means all."
2482
+ },
2483
+ "offset": {
2484
+ "type": "integer",
2485
+ "description": "Number of records to skip."
2486
+ },
2487
+ "limit": {
2488
+ "type": "integer",
2489
+ "description": "Page size, at most 100."
2490
+ }
2491
+ }
2492
+ },
2493
+ execute: async (_toolCallId, input) => {
2494
+ const key = ensureApiKey()
2495
+ const params = parseToolInput(input)
2496
+ return callSuperagnt(key, 'POST', '/management/organizations/linkedin-accounts', undefined, params)
2497
+ },
2498
+ })
2499
+
2500
+ api.registerTool({
2501
+ name: 'superagnt_connection_heyreach_org_li_account_delete',
2502
+ description: "Delete a sender account (organization)",
2503
+ parameters: {
2504
+ "type": "object",
2505
+ "properties": {
2506
+ "linkedInAccountId": {
2507
+ "type": "integer",
2508
+ "description": "The sender account."
2509
+ },
2510
+ "forceDelete": {
2511
+ "type": "boolean",
2512
+ "description": "Take the account off its active campaigns first."
2513
+ }
2514
+ },
2515
+ "required": [
2516
+ "linkedInAccountId"
2517
+ ]
2518
+ },
2519
+ execute: async (_toolCallId, input) => {
2520
+ const key = ensureApiKey()
2521
+ const params = parseToolInput(input)
2522
+ return callSuperagnt(key, 'DELETE', '/management/organizations/linkedin-accounts/{linkedInAccountId}', undefined, params)
2523
+ },
2524
+ })
2525
+
2526
+ api.registerTool({
2527
+ name: 'superagnt_connection_heyreach_org_li_account_move',
2528
+ description: "Move a sender account to another workspace",
2529
+ parameters: {
2530
+ "type": "object",
2531
+ "properties": {
2532
+ "linkedInAccountId": {
2533
+ "type": "integer",
2534
+ "description": "The sender account."
2535
+ },
2536
+ "workspaceId": {
2537
+ "type": "integer",
2538
+ "description": "The destination workspace."
2539
+ }
2540
+ },
2541
+ "required": [
2542
+ "linkedInAccountId",
2543
+ "workspaceId"
2544
+ ]
2545
+ },
2546
+ execute: async (_toolCallId, input) => {
2547
+ const key = ensureApiKey()
2548
+ const params = parseToolInput(input)
2549
+ return callSuperagnt(key, 'POST', '/management/organizations/linkedin-accounts/MoveToWorkspace', undefined, params)
2550
+ },
2551
+ })
1857
2552
  }
@@ -2,7 +2,7 @@
2
2
  "id": "heyreach-outreach",
3
3
  "name": "HeyReach Integration",
4
4
  "description": "OpenClaw plugin for HeyReach LinkedIn outreach — manage campaigns, leads, lead lists, conversations, and analytics with your superagnt API key.",
5
- "version": "2.0.6",
5
+ "version": "2.0.7",
6
6
  "contracts": {
7
7
  "tools": [
8
8
  "superagnt_connection_heyreach_auth_check_api_key",
@@ -16,6 +16,8 @@
16
16
  "superagnt_connection_heyreach_campaign_update_settings",
17
17
  "superagnt_connection_heyreach_campaign_update_schedule",
18
18
  "superagnt_connection_heyreach_campaign_update_accounts",
19
+ "superagnt_connection_heyreach_campaign_add_accounts",
20
+ "superagnt_connection_heyreach_campaign_remove_accounts",
19
21
  "superagnt_connection_heyreach_campaign_update_sequence",
20
22
  "superagnt_connection_heyreach_campaign_get_sequence",
21
23
  "superagnt_connection_heyreach_campaign_add_leads_v2",
@@ -23,12 +25,23 @@
23
25
  "superagnt_connection_heyreach_campaign_stop_lead",
24
26
  "superagnt_connection_heyreach_campaign_get_leads",
25
27
  "superagnt_connection_heyreach_campaign_get_for_lead",
28
+ "superagnt_connection_heyreach_campaign_update_lead_fields",
26
29
  "superagnt_connection_heyreach_inbox_get_conversations_v2",
30
+ "superagnt_connection_heyreach_inbox_get_conversations_v3",
27
31
  "superagnt_connection_heyreach_inbox_get_chatroom",
28
32
  "superagnt_connection_heyreach_inbox_send_message",
29
33
  "superagnt_connection_heyreach_inbox_set_seen_status",
30
34
  "superagnt_connection_heyreach_li_account_get_all",
31
35
  "superagnt_connection_heyreach_li_account_get_by_id",
36
+ "superagnt_connection_heyreach_li_account_get_status",
37
+ "superagnt_connection_heyreach_li_account_reconnect",
38
+ "superagnt_connection_heyreach_li_account_relogin_navigator",
39
+ "superagnt_connection_heyreach_li_account_relogin_recruiter",
40
+ "superagnt_connection_heyreach_li_account_resync",
41
+ "superagnt_connection_heyreach_li_account_get_proxy_countries",
42
+ "superagnt_connection_heyreach_li_account_update_proxy",
43
+ "superagnt_connection_heyreach_li_account_update_inbox_config",
44
+ "superagnt_connection_heyreach_li_account_remove",
32
45
  "superagnt_connection_heyreach_list_get_all",
33
46
  "superagnt_connection_heyreach_list_get_by_id",
34
47
  "superagnt_connection_heyreach_list_create_empty",
@@ -39,11 +52,20 @@
39
52
  "superagnt_connection_heyreach_list_delete_leads",
40
53
  "superagnt_connection_heyreach_list_delete_leads_by_url",
41
54
  "superagnt_connection_heyreach_list_get_for_lead",
55
+ "superagnt_connection_heyreach_list_update_lead_fields",
42
56
  "superagnt_connection_heyreach_lead_get_by_profile_url",
43
57
  "superagnt_connection_heyreach_lead_add_tags",
44
58
  "superagnt_connection_heyreach_lead_replace_tags",
45
59
  "superagnt_connection_heyreach_lead_get_tags",
46
60
  "superagnt_connection_heyreach_lead_tags_create",
61
+ "superagnt_connection_heyreach_blacklist_get_leads",
62
+ "superagnt_connection_heyreach_blacklist_add_leads",
63
+ "superagnt_connection_heyreach_blacklist_remove_leads",
64
+ "superagnt_connection_heyreach_blacklist_get_companies",
65
+ "superagnt_connection_heyreach_blacklist_add_companies",
66
+ "superagnt_connection_heyreach_blacklist_remove_companies",
67
+ "superagnt_connection_heyreach_enrich_email",
68
+ "superagnt_connection_heyreach_enrich_email_check_job",
47
69
  "superagnt_connection_heyreach_stats_get_overall",
48
70
  "superagnt_connection_heyreach_stats_get_by_campaign",
49
71
  "superagnt_connection_heyreach_network_get_for_sender",
@@ -63,7 +85,10 @@
63
85
  "superagnt_connection_heyreach_org_workspace_users_get_all",
64
86
  "superagnt_connection_heyreach_org_invite_admins",
65
87
  "superagnt_connection_heyreach_org_invite_managers",
66
- "superagnt_connection_heyreach_org_invite_members"
88
+ "superagnt_connection_heyreach_org_invite_members",
89
+ "superagnt_connection_heyreach_org_li_accounts_get_all",
90
+ "superagnt_connection_heyreach_org_li_account_delete",
91
+ "superagnt_connection_heyreach_org_li_account_move"
67
92
  ]
68
93
  },
69
94
  "configSchema": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superagnt/heyreach-outreach",
3
- "version": "2.0.6",
3
+ "version": "2.0.7",
4
4
  "type": "module",
5
5
  "description": "OpenClaw plugin for HeyReach LinkedIn outreach — manage campaigns, leads, lead lists, conversations, and analytics with your superagnt API key.",
6
6
  "main": "index.js",