@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 +7 -7
- package/index.js +766 -71
- package/openclaw.plugin.json +27 -2
- package/package.json +1 -1
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
|
|
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
|
|
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
|
|
46
|
-
2. A connected **HeyReach** account — configure
|
|
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
|
-
| **OpenClaw tools** |
|
|
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
|
-
- [
|
|
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": "
|
|
118
|
+
"description": "Number of records to skip."
|
|
119
119
|
},
|
|
120
120
|
"limit": {
|
|
121
121
|
"type": "integer",
|
|
122
|
-
"description": "
|
|
122
|
+
"description": "Page size, at most 100."
|
|
123
123
|
},
|
|
124
124
|
"keyword": {
|
|
125
125
|
"type": "string",
|
|
126
|
-
"description": "
|
|
126
|
+
"description": "Matches campaign names."
|
|
127
127
|
},
|
|
128
128
|
"statuses": {
|
|
129
129
|
"type": "array",
|
|
130
|
-
"description": "
|
|
130
|
+
"description": "Only campaigns in these statuses."
|
|
131
131
|
},
|
|
132
132
|
"accountIds": {
|
|
133
133
|
"type": "array",
|
|
134
|
-
"description": "
|
|
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": "
|
|
241
|
+
"description": "Campaign name, 1-50 characters."
|
|
242
242
|
},
|
|
243
243
|
"linkedInUserListId": {
|
|
244
244
|
"type": "integer",
|
|
245
|
-
"description": "
|
|
245
|
+
"description": "The lead list (`USER_LIST`) the campaign reads leads from."
|
|
246
246
|
},
|
|
247
247
|
"linkedInAccountIds": {
|
|
248
248
|
"type": "array",
|
|
249
|
-
"description": "
|
|
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
|
-
"
|
|
263
|
-
"
|
|
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": "
|
|
305
|
+
"description": "The campaign whose sequence and schedule are copied."
|
|
283
306
|
},
|
|
284
307
|
"name": {
|
|
285
308
|
"type": "string",
|
|
286
|
-
"description": "
|
|
309
|
+
"description": "Campaign name, 1-50 characters."
|
|
287
310
|
},
|
|
288
311
|
"linkedInUserListId": {
|
|
289
312
|
"type": "integer",
|
|
290
|
-
"description": "
|
|
313
|
+
"description": "The lead list (`USER_LIST`) for the new campaign."
|
|
291
314
|
},
|
|
292
315
|
"linkedInAcccountIdsForCampaign": {
|
|
293
316
|
"type": "array",
|
|
294
|
-
"description": "
|
|
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
|
|
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
|
|
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
|
|
329
|
+
"description": "Skip leads the campaign's senders already contacted from another campaign."
|
|
307
330
|
},
|
|
308
331
|
"excludeListId": {
|
|
309
332
|
"type": "integer",
|
|
310
|
-
"description": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
378
|
+
"description": "Skip leads already in any other campaign."
|
|
347
379
|
},
|
|
348
380
|
"excludeHasOtherAccConversations": {
|
|
349
381
|
"type": "boolean",
|
|
350
|
-
"description": "
|
|
382
|
+
"description": "Skip leads who already have a conversation with another sender account."
|
|
351
383
|
},
|
|
352
384
|
"excludeContactedFromSenderInOtherCampaign": {
|
|
353
385
|
"type": "boolean",
|
|
354
|
-
"description": "
|
|
386
|
+
"description": "Skip leads the campaign's senders already contacted from another campaign."
|
|
355
387
|
},
|
|
356
388
|
"excludeListId": {
|
|
357
389
|
"type": "integer",
|
|
358
|
-
"description": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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
|
|
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": "
|
|
788
|
+
"description": "Number of records to skip."
|
|
653
789
|
},
|
|
654
790
|
"limit": {
|
|
655
791
|
"type": "integer",
|
|
656
|
-
"description": "
|
|
792
|
+
"description": "Page size, at most 100."
|
|
657
793
|
},
|
|
658
794
|
"filters": {
|
|
659
795
|
"type": "object",
|
|
660
|
-
"description": "Optional
|
|
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": "
|
|
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": "
|
|
881
|
+
"description": "Subject line; required by HeyReach and shown only in InMail threads."
|
|
711
882
|
},
|
|
712
883
|
"conversationId": {
|
|
713
884
|
"type": "string",
|
|
714
|
-
"description": "
|
|
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": "
|
|
950
|
+
"description": "Page size, at most 100."
|
|
779
951
|
},
|
|
780
952
|
"keyword": {
|
|
781
953
|
"type": "string",
|
|
782
|
-
"description": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
1879
|
+
"description": "The campaigns to count, or `[]` for every campaign. Required."
|
|
1273
1880
|
},
|
|
1274
1881
|
"accountIds": {
|
|
1275
1882
|
"type": "array",
|
|
1276
|
-
"description": "
|
|
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": "
|
|
1914
|
+
"description": "The campaigns to count, or `[]` for every campaign. Required."
|
|
1304
1915
|
},
|
|
1305
1916
|
"accountIds": {
|
|
1306
1917
|
"type": "array",
|
|
1307
|
-
"description": "
|
|
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": "
|
|
1941
|
+
"description": "The sender account (`/li_account/GetAll`)."
|
|
1327
1942
|
},
|
|
1328
|
-
"
|
|
1943
|
+
"pageNumber": {
|
|
1329
1944
|
"type": "integer",
|
|
1330
|
-
"description": "
|
|
1945
|
+
"description": "Zero-based page number."
|
|
1331
1946
|
},
|
|
1332
|
-
"
|
|
1947
|
+
"pageSize": {
|
|
1333
1948
|
"type": "integer",
|
|
1334
|
-
"description": "
|
|
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": "
|
|
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": "
|
|
2013
|
+
"description": "Campaigns to listen to; empty or omitted means every campaign."
|
|
1403
2014
|
},
|
|
1404
2015
|
"customHeaders": {
|
|
1405
|
-
"type": "
|
|
1406
|
-
"description": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
1507
|
-
"description": "
|
|
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
|
}
|
package/openclaw.plugin.json
CHANGED
|
@@ -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.
|
|
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.
|
|
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",
|