@mambalabsdev/mcp-sequencer-event-poller 1.0.0 → 1.0.1
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 +6 -6
- package/build/index.js +6 -13
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -69,25 +69,25 @@ Restart the client. The `poll_sequencer_events` tool appears.
|
|
|
69
69
|
|
|
70
70
|
```json
|
|
71
71
|
{
|
|
72
|
-
"since_hours": 24,
|
|
72
|
+
"since_hours": "24",
|
|
73
73
|
"event_types": ["reply", "linkedin_reply", "bounce", "meeting_booked"]
|
|
74
74
|
}
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
## Inputs
|
|
78
78
|
|
|
79
|
-
Every buyer facing input of the actor except the four vendor keys, which are read from this server's environment, never from tool arguments. Omitted inputs take the actor's own defaults.
|
|
79
|
+
Every buyer facing input of the actor except the four vendor keys, which are read from this server's environment, never from tool arguments. Omitted inputs take the actor's own defaults. Numbers and yes or no options are sent as text ("24", "true"), which is what the actor accepts; a value that does not parse comes back as one free row that names the field.
|
|
80
80
|
|
|
81
81
|
| Input | Type | Required | Description |
|
|
82
82
|
|---|---|---|---|
|
|
83
|
-
| `since_hours` |
|
|
83
|
+
| `since_hours` | string | no | Look back this many hours, 1 to 2160, as text such as "24". Default 24. |
|
|
84
84
|
| `since`, `until` | string | no | Optional exact window in UTC. |
|
|
85
85
|
| `event_types` | array | no | Any of reply, linkedin_reply, bounce, unsubscribe, meeting_booked, interested, not_interested, out_of_office, connection_accepted, open, click. |
|
|
86
|
-
| `only_new` |
|
|
86
|
+
| `only_new` | string | no | "true" or "false". Skip events an earlier run returned. Default true. |
|
|
87
87
|
| `state_key` | string | no | Name for the only new events memory. |
|
|
88
88
|
| `instantly_campaign_ids`, `smartlead_campaign_ids`, `heyreach_campaign_ids`, `lemlist_campaign_ids` | array | no | Read only these campaigns. |
|
|
89
|
-
| `max_pages_per_query` |
|
|
90
|
-
| `max_events` |
|
|
89
|
+
| `max_pages_per_query` | string | no | Pages of 100 records per vendor query, 1 to 100, as text. Default 20. |
|
|
90
|
+
| `max_events` | string | no | Event rows per run, up to 50000, as text. Default 5000. |
|
|
91
91
|
| `max_charge_usd` | string | no | Optional cost cap for the run. |
|
|
92
92
|
|
|
93
93
|
## Pricing
|
package/build/index.js
CHANGED
|
@@ -188,7 +188,8 @@ function keysFromEnv() {
|
|
|
188
188
|
out.lemlist_api_key = k3;
|
|
189
189
|
return out;
|
|
190
190
|
}
|
|
191
|
-
// Sequencer Event Poller (immutable actor ID S6s8Rjd61tGdrMRk4). Every buyer facing input of the actor is exposed except the four vendor keys, which come from the environment (see keysFromEnv).
|
|
191
|
+
// Sequencer Event Poller (immutable actor ID S6s8Rjd61tGdrMRk4). Every buyer facing input of the actor is exposed except the four vendor keys, which come from the environment (see keysFromEnv). The actor takes numbers and booleans as strings, so those inputs are strings here too.
|
|
192
|
+
const bool = () => z.enum(["true", "false"]).optional();
|
|
192
193
|
server.registerTool("poll_sequencer_events", {
|
|
193
194
|
title: "Poll sequencer events",
|
|
194
195
|
description: "Read replies, bounces, unsubscribes, meetings booked, interest changes, and LinkedIn replies from your own Instantly, Smartlead, HeyReach, and lemlist accounts for a time window. Returns one flat row per event (vendor, event type, time, lead email and name, company, campaign, reply text where the vendor returns it) plus one free run summary row with counts and the status of each vendor. Vendor keys are read from this server's environment (INSTANTLY_API_KEY, SMARTLEAD_API_KEY, HEYREACH_API_KEY, LEMLIST_API_KEY); vendors with no key are skipped. Read-only: it never creates, edits, pauses, or sends anything in a sequencer. A run that does not succeed is returned as an error with its run ID. Requires an APIFY_TOKEN and is billed per event row.",
|
|
@@ -200,9 +201,7 @@ server.registerTool("poll_sequencer_events", {
|
|
|
200
201
|
openWorldHint: true,
|
|
201
202
|
},
|
|
202
203
|
inputSchema: {
|
|
203
|
-
since_hours: z.
|
|
204
|
-
.optional()
|
|
205
|
-
.describe("Read events from this many hours before the run, at most 2160 (90 days). Default 24. Ignored when since is set."),
|
|
204
|
+
since_hours: z.string().optional().describe("Read events from this many hours before the run, 1 to 2160 (90 days). Default 24. Ignored when since is set."),
|
|
206
205
|
since: z.string()
|
|
207
206
|
.optional()
|
|
208
207
|
.describe("Optional start of the window in UTC, for example 2026-10-20T00:00:00Z."),
|
|
@@ -212,9 +211,7 @@ server.registerTool("poll_sequencer_events", {
|
|
|
212
211
|
event_types: z.array(z.enum(["reply", "linkedin_reply", "bounce", "unsubscribe", "meeting_booked", "interested", "not_interested", "out_of_office", "connection_accepted", "open", "click"]))
|
|
213
212
|
.optional()
|
|
214
213
|
.describe("Which events to return. Default: reply, linkedin_reply, bounce, unsubscribe, meeting_booked, interested, connection_accepted."),
|
|
215
|
-
only_new:
|
|
216
|
-
.optional()
|
|
217
|
-
.describe("Skip events an earlier run already returned (free). Default true."),
|
|
214
|
+
only_new: bool().describe("Skip events an earlier run already returned (free). Default true."),
|
|
218
215
|
state_key: z.string()
|
|
219
216
|
.optional()
|
|
220
217
|
.describe("Optional name for the only new events memory, so two schedules keep separate memories."),
|
|
@@ -230,12 +227,8 @@ server.registerTool("poll_sequencer_events", {
|
|
|
230
227
|
lemlist_campaign_ids: z.array(z.string())
|
|
231
228
|
.optional()
|
|
232
229
|
.describe("Read only these lemlist campaigns (cam_ ids). Empty: all campaigns."),
|
|
233
|
-
max_pages_per_query: z.
|
|
234
|
-
|
|
235
|
-
.describe("Pages of 100 records per vendor query. Default 20."),
|
|
236
|
-
max_events: z.number().int().min(1).max(50000)
|
|
237
|
-
.optional()
|
|
238
|
-
.describe("Event rows per run, oldest first. Default 5000."),
|
|
230
|
+
max_pages_per_query: z.string().optional().describe("Pages of 100 records per vendor query, 1 to 100. Default 20."),
|
|
231
|
+
max_events: z.string().optional().describe("Event rows per run, oldest first, up to 50000. Each event row is billed. Default 5000."),
|
|
239
232
|
max_charge_usd: z.string()
|
|
240
233
|
.optional()
|
|
241
234
|
.describe("Optional. The run stops before a charge that would pass this amount."),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mambalabsdev/mcp-sequencer-event-poller",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "MCP server for Sequencer Event Poller. Replies, bounces, unsubscribes, meetings, and LinkedIn replies from your own Instantly, Smartlead, HeyReach, and lemlist accounts, one row per event. Read only. Runs on Apify.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|