scrapeloop-mcp 0.37.0 → 0.37.2

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/index.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scrapeloop-mcp",
3
- "version": "0.37.0",
3
+ "version": "0.37.2",
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
@@ -658,7 +658,7 @@ const TOOLS = {
658
658
  run: ({ plan_id, ...body }) => api('POST', `/plans/${enc(plan_id)}/launch`, body),
659
659
  },
660
660
  check_scrape_plan_stop: {
661
- def: { description: 'Look at the stop a complete search plan is on. Use it when get_scrape_plan shows the block "A check is on hold", "Search needs review" or "A lead could not be moved between Tables". With dry_run true (the default) it only reads saved records. It says what it found and what would happen, with the credits that could use, and it returns job_ids: the ids of the held jobs and failed moves it looked at. To carry on, call it again with dry_run false and those same job_ids. It then acts only where the records prove that is safe. A held Table check: it ends the held job, gives unused held check credits back, runs free checks that never finished again, and runs paid checks that never started inside the plan limits, unless a person pressed Stop on the Table: then those stay closed. A paid check that got no answer is closed and never asked again. It sends no request to a checker itself. A held map search: it puts the same search back in the queue with its same held lead credits. At most one map square that got no answer is searched again, in at most 2 extra rounds per square (the app tries a square up to 3 times in one round). A review count read that got no answer is closed and never asked again. A plan that a person paused stays paused: the search only finishes what it already read. A failed Table move: it only marks the move done when the lead is already in the Table it had to go to. It never moves a lead. The answer has outcome safe, needs_person, wait or nothing, with a title, plain lines and a next line, all ready to show the person. Always show the dry run lines first and carry on only after the person says yes. If the stops changed since the dry run, nothing is changed and a fresh dry run comes back with changed true. A second call after it carried on finds nothing on hold.', inputSchema: obj({ plan_id: { ...S, format: 'uuid' }, dry_run: B, job_ids: { ...ARR({ ...S, format: 'uuid' }), maxItems: 40 } }, ['plan_id']) },
661
+ def: { description: 'Look at the stop a complete search plan is on. Use it when get_scrape_plan shows the block "A check is on hold", "Search needs review" or "A lead could not be moved between Tables". Also use it when the block is "You paused it" and its words say that something of the plan is on hold: such a plan cannot start again until that is cleared, and it stays paused after. With dry_run true (the default) it only reads saved records. It says what it found and what would happen, with the credits that could use, and it returns job_ids: the ids of the held jobs and failed moves it looked at. To carry on, call it again with dry_run false and those same job_ids. It then acts only where the records prove that is safe. A held Table check: it ends the held job, gives unused held check credits back, runs free checks that never finished again, and runs paid checks that never started inside the plan limits, unless a person pressed Stop on the Table: then those stay closed. A paid check that got no answer is closed and never asked again. It sends no request to a checker itself. A held map search: it puts the same search back in the queue with its same held lead credits. At most one map square that got no answer is searched again, in at most 2 extra rounds per square (the app tries a square up to 3 times in one round). A review count read that got no answer is closed and never asked again. A plan that a person paused stays paused: the search only finishes what it already read. A failed Table move: it only marks the move done when the lead is already in the Table it had to go to. It never moves a lead. The answer has outcome safe, needs_person, wait or nothing, with a title, plain lines and a next line, all ready to show the person. Always show the dry run lines first and carry on only after the person says yes. If the stops changed since the dry run, nothing is changed and a fresh dry run comes back with changed true. A second call after it carried on finds nothing on hold.', inputSchema: obj({ plan_id: { ...S, format: 'uuid' }, dry_run: B, job_ids: { ...ARR({ ...S, format: 'uuid' }), maxItems: 40 } }, ['plan_id']) },
662
662
  run: (a) => {
663
663
  const dryRun = a.dry_run !== false;
664
664
  if (!dryRun && !Array.isArray(a.job_ids)) {