scrapeloop-mcp 0.5.0 → 0.6.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 +29 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scrapeloop-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.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
|
"bin": {
|
package/src/index.js
CHANGED
|
@@ -613,6 +613,34 @@ const TOOLS = {
|
|
|
613
613
|
...(a.default_verification_status ? { default_verification_status: a.default_verification_status } : {}),
|
|
614
614
|
}),
|
|
615
615
|
},
|
|
616
|
+
import_leads_csv: {
|
|
617
|
+
def: {
|
|
618
|
+
description:
|
|
619
|
+
"Bring your own leads from a CSV/TSV: paste the raw file text and it's parsed server-side — the delimiter is auto-detected, headers are fuzzy-mapped to fields (email, first_name, business_name, phone, website, city, country, rating, reviews_count, verification_status, external_id, strategy tags…), any UNMAPPED columns become custom_fields (so a 'first_line' or 'review_snippet' column flows to Instantly automatically), and verifier verdicts (valid/catch-all/invalid…) are normalized. No scraping, no lead credits, no re-verification. Set dry_run:true to PREVIEW (shows would_insert/would_update + how each column mapped, writes nothing) — do that first, show the user the column_mapping, then run again with dry_run:false. Target list_id or list_name (create-or-get). ≤1000 rows/call. Returns the import result plus column_mapping + unmapped_columns + rows_parsed.",
|
|
620
|
+
inputSchema: obj(
|
|
621
|
+
{
|
|
622
|
+
csv: S,
|
|
623
|
+
list_id: S,
|
|
624
|
+
list_name: S,
|
|
625
|
+
dedupe_by: { ...S, description: '"email" (default) or "external_id"' },
|
|
626
|
+
default_verification_status: S,
|
|
627
|
+
column_map: { ...O, description: 'optional explicit header→field overrides, e.g. {"Owner":"first_name"}' },
|
|
628
|
+
dry_run: B,
|
|
629
|
+
},
|
|
630
|
+
['csv'],
|
|
631
|
+
),
|
|
632
|
+
},
|
|
633
|
+
run: (a) =>
|
|
634
|
+
api('POST', '/leads/import/csv', {
|
|
635
|
+
csv: a.csv,
|
|
636
|
+
...(a.list_id ? { list_id: a.list_id } : {}),
|
|
637
|
+
...(a.list_name ? { list_name: a.list_name } : {}),
|
|
638
|
+
...(a.dedupe_by ? { dedupe_by: a.dedupe_by } : {}),
|
|
639
|
+
...(a.default_verification_status ? { default_verification_status: a.default_verification_status } : {}),
|
|
640
|
+
...(a.column_map ? { column_map: a.column_map } : {}),
|
|
641
|
+
...(a.dry_run ? { dry_run: true } : {}),
|
|
642
|
+
}),
|
|
643
|
+
},
|
|
616
644
|
preview_import: {
|
|
617
645
|
def: {
|
|
618
646
|
description:
|
|
@@ -786,7 +814,7 @@ async function serve() {
|
|
|
786
814
|
}
|
|
787
815
|
|
|
788
816
|
const server = new Server(
|
|
789
|
-
{ name: 'scrapeloop-mcp', version: '0.
|
|
817
|
+
{ name: 'scrapeloop-mcp', version: '0.6.0' },
|
|
790
818
|
{ capabilities: { tools: {} } }
|
|
791
819
|
);
|
|
792
820
|
|