scrapeloop-mcp 0.30.0 → 0.31.0
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/package.json +1 -1
- package/src/index.js +5 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scrapeloop-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.31.0",
|
|
4
4
|
"description": "Scrapeloop MCP server - set up and run Scrapeloop end-to-end (integrations, scraping, lead database, verification, cleaners, enrichment, strategies, Instantly campaigns) from any MCP client (Claude Desktop, Cursor, ChatGPT, …).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
package/src/index.js
CHANGED
|
@@ -573,10 +573,11 @@ const TOOLS = {
|
|
|
573
573
|
run: (a) => api('GET', `/plans/${enc(a.plan_id)}/yield`),
|
|
574
574
|
},
|
|
575
575
|
set_scrape_plan_ready_goal: {
|
|
576
|
-
def: { description: 'Save a verified-email goal on a native Maps draft without repeat searches. Choose the ready Table and its email campaign, monthly goal/minimum, unused-stock ceiling and evidence rules. Pass the reviewed expected_updated_at from get_scrape_plan. Counts require current input-bound verification, qualification, campaign fields and sender-history checks. This does not start scraping, verification or campaigns. Complete-search pacing must be available before Start.', inputSchema: obj({
|
|
576
|
+
def: { description: 'Save a verified-email goal on a native Maps draft without repeat searches. Choose the ready Table and its email campaign, monthly goal/minimum, optional hard-maximum mode, unused-stock ceiling and evidence rules. Pass the reviewed expected_updated_at from get_scrape_plan. Counts require current input-bound verification, qualification, campaign fields and sender-history checks. This does not start scraping, verification or campaigns. Complete-search pacing must be available before Start.', inputSchema: obj({
|
|
577
577
|
plan_id: { ...S, format: 'uuid' }, expected_updated_at: { ...S, format: 'date-time' },
|
|
578
578
|
goal: obj({ kind: { ...S, enum: ['verified_email'] }, ready_list_id: { ...S, format: 'uuid' },
|
|
579
579
|
campaign_id: { ...S, format: 'uuid' }, monthly_goal: { type: 'integer', minimum: 1, maximum: 1000000 },
|
|
580
|
+
limit_mode: { ...S, enum: ['target', 'maximum'] },
|
|
580
581
|
monthly_minimum: { type: 'integer', minimum: 0, maximum: 1000000 },
|
|
581
582
|
stock_ceiling: { type: 'integer', minimum: 1, maximum: 1000000 }, timezone: S,
|
|
582
583
|
evidence_max_age_days: { type: 'integer', minimum: 1, maximum: 90 }, allow_resolved_catchall: B,
|
|
@@ -1116,6 +1117,7 @@ const TOOLS = {
|
|
|
1116
1117
|
sender_options: { ...O, description: "GoHighLevel SMS choices: workflow_id, tags, require_verified_mobile, voip_counts_as_mobile, missing_fields (ask, create, never)." },
|
|
1117
1118
|
icon: { type: ["string", "null"], description: "One or two emoji, or null to clear." },
|
|
1118
1119
|
source_list_id: S,
|
|
1120
|
+
eligibility_rule: { type: ["object", "null"], additionalProperties: false, required: ["source_list_id", "filter"], properties: { source_list_id: S, filter: O }, description: "Optional Current qualification: an open static evidence Table and nonempty current lead/column conditions. The API binds reviewed columns. Null turns this check off." },
|
|
1119
1121
|
segment_id: S,
|
|
1120
1122
|
sender_credential_id: S,
|
|
1121
1123
|
external_list_id: S,
|
|
@@ -1142,7 +1144,7 @@ const TOOLS = {
|
|
|
1142
1144
|
run: (a) => {
|
|
1143
1145
|
const body = { name: a.name, sender_credential_id: a.sender_credential_id, external_list_id: a.external_list_id };
|
|
1144
1146
|
for (const k of [
|
|
1145
|
-
'source_list_id', 'segment_id', 'instantly_campaign_name', 'feed_mode', 'drip_strategy',
|
|
1147
|
+
'source_list_id', 'segment_id', 'instantly_campaign_name', 'feed_mode', 'drip_strategy', 'eligibility_rule',
|
|
1146
1148
|
'allow_risky_emails', 'offload_enabled', 'offload_no_reply_days', 'offload_to_instantly',
|
|
1147
1149
|
'offload_to_scrapeloop', 'offload_scrapeloop_list_id',
|
|
1148
1150
|
'drip_daily_count', 'target_active_count', 'cooldown_days', 'resting_period_days',
|
|
@@ -1158,7 +1160,7 @@ const TOOLS = {
|
|
|
1158
1160
|
run: (a) => api('GET', `/campaigns/${enc(a.campaign_id)}/qualification`),
|
|
1159
1161
|
},
|
|
1160
1162
|
update_campaign: {
|
|
1161
|
-
def: { description: 'Patch a campaign (feed_mode, target_active_count, cooldown_days, external_list_id, …). Switching feed_mode on for an already active campaign runs the same check as campaign_readiness_check: any fail answers 422 with the report under detail.readiness.', inputSchema: obj({ campaign_id: S, patch: { ...O, description: "Campaign settings to change. qualification: {} disables the gate; {rule: be_dutch, evidence_column_id: UUID, max_age_days: 90}
|
|
1163
|
+
def: { description: 'Patch a campaign (feed_mode, target_active_count, cooldown_days, external_list_id, …). Switching feed_mode on for an already active campaign runs the same check as campaign_readiness_check: any fail answers 422 with the report under detail.readiness.', inputSchema: obj({ campaign_id: S, patch: { ...O, description: "Campaign settings to change. eligibility_rule uses {source_list_id, filter} for Current qualification, or null to turn it off. qualification: {} disables the Belgium website language gate; {rule: be_dutch, evidence_column_id: UUID, max_age_days: 90} enables it. Read back after saving. These settings do not start checks or remove sender leads.", properties: { eligibility_rule: { type: ["object", "null"], additionalProperties: false, required: ["source_list_id", "filter"], properties: { source_list_id: S, filter: O } }, qualification: { ...O, description: "Belgium website language rule, or {} to disable." }, sender_options: { ...O, description: "GoHighLevel SMS settings. Only supplied keys change." }, icon: { type: ["string", "null"], description: "One or two emoji, or null to clear." } }, additionalProperties: true } }, ['campaign_id', 'patch']) },
|
|
1162
1164
|
run: (a) => api('PATCH', `/campaigns/${enc(a.campaign_id)}`, a.patch || {}),
|
|
1163
1165
|
},
|
|
1164
1166
|
duplicate_campaign: {
|