scrapeloop-mcp 0.21.1 → 0.22.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scrapeloop-mcp",
3
- "version": "0.21.1",
3
+ "version": "0.22.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
@@ -1024,6 +1024,14 @@ const TOOLS = {
1024
1024
  def: { description: 'Save the exact reviewed shared stop group for a completed pipeline. Campaigns must be paused or draft with feeds off. Retains replies locally and lists removal needs. Does not contact a provider or start outreach. Inspect after an uncertain result. Sender removal setup and proof are still needed before launch.', inputSchema: obj({ campaign_id: S, reviewed_revision: S }, ['campaign_id', 'reviewed_revision']) },
1025
1025
  run: (a) => a.campaign_id && a.reviewed_revision ? api('PUT', `/campaigns/${enc(a.campaign_id)}/shared-stops`, { reviewed_revision: a.reviewed_revision }) : { ok: false, status: 400, error: { detail: 'campaign_id and reviewed_revision are required.' } },
1026
1026
  },
1027
+ get_campaign_ghl_returns: {
1028
+ def: { description: 'Review the account-bound receiving address and signed GoHighLevel return counts for a shared journey. A saved address is not live delivery or provider removal proof. Unmatched updates remain saved; missing signed phone identity stays held. Read only.', inputSchema: obj({ campaign_id: S }, ['campaign_id']) },
1029
+ run: (a) => a.campaign_id ? api('GET', `/campaigns/${enc(a.campaign_id)}/ghl-returns`) : { ok: false, status: 400, error: { detail: 'campaign_id is required.' } },
1030
+ },
1031
+ save_campaign_ghl_returns: {
1032
+ def: { description: 'Save the reviewed GoHighLevel receiving address for a paused shared journey with feeds off. Makes one free account identity read. Does not create credentials, grant access, subscribe events, install workflows or start outreach. The owner must set up signed Marketplace events separately. Inspect after an uncertain result.', inputSchema: obj({ campaign_id: S, credential_id: S, reviewed_revision: S }, ['campaign_id', 'credential_id', 'reviewed_revision']) },
1033
+ run: (a) => a.campaign_id && a.credential_id && a.reviewed_revision ? api('PUT', `/campaigns/${enc(a.campaign_id)}/ghl-returns`, { credential_id: a.credential_id, reviewed_revision: a.reviewed_revision }) : { ok: false, status: 400, error: { detail: 'campaign_id, credential_id and reviewed_revision are required.' } },
1034
+ },
1027
1035
  get_campaign_handoff_status: {
1028
1036
  def: {
1029
1037
  description: 'Read waiting, completed and held review Table handoffs for a campaign. No provider call, retry or write. Held copies may already have happened; inspect before moving again.',
@@ -37,6 +37,7 @@ const never = (method, inspectWith, matchFields) => ({
37
37
  });
38
38
 
39
39
  export const MUTATION_POLICIES = Object.freeze({
40
+ save_campaign_ghl_returns: reconcile('PUT', ['get_campaign_ghl_returns'], ['campaign_id', 'credential_id', 'reviewed_revision']),
40
41
  save_campaign_shared_stops: reconcile('PUT', ['get_campaign_shared_stops'], ['campaign_id', 'reviewed_revision']),
41
42
  create_integration: keyed('POST', ['list_integrations'], ['vendor', 'plugin_kind']),
42
43
  add_credential: reconcile('POST', ['list_credentials'], ['integration_id', 'label']),