mcpscraper-cli 0.14.0 → 0.16.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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Command-line interface for [mcpscraper.dev](https://mcpscraper.dev) and [memory.mcpscraper.dev](https://memory.mcpscraper.dev).
4
4
 
5
- The CLI provides friendly shortcuts for common operations plus universal discovery and invocation for every one of the 165 unified MCP tools (76 MCP Scraper plus 89 mirrored memory tools).
5
+ The CLI provides friendly shortcuts for common operations plus universal discovery and invocation for every one of the 166 unified MCP tools (77 MCP Scraper plus 89 mirrored memory tools).
6
6
 
7
7
  ## Install
8
8
 
@@ -33,7 +33,7 @@ mcpscraper tools call describe_service_connection_tool --args '{"connectionId":"
33
33
  mcpscraper tools call renew_connected_data_download --args '{"artifactId":"artifact_123"}' --json
34
34
  ```
35
35
 
36
- `tools list` contains exactly 165 manifest-backed names. `tools call` accepts any one of them. Tools marked destructive require `--yes`.
36
+ `tools list` contains exactly 166 manifest-backed names. `tools call` accepts any one of them. Tools marked destructive require `--yes`.
37
37
 
38
38
  Integration connections are included with an active Starter plan or higher and have no extra connection-operation debit in this release. Scheduled occurrences cost 75 Credits; agent-mode runs also add 1.5 times OpenRouter's actual reported cost. Inspect the live policy with `mcpscraper tools call get-schedule-status --args '{}'`.
39
39
 
package/dist/bin/cli.js CHANGED
@@ -9,7 +9,7 @@ import { join } from "path";
9
9
  import { ScraperClient, ScraperApiError } from "mcpscraper-sdk";
10
10
 
11
11
  // src/version.ts
12
- var CLI_VERSION = "0.13.0";
12
+ var CLI_VERSION = "0.16.0";
13
13
 
14
14
  // src/generated-tools.ts
15
15
  var MCP_TOOL_CATALOG = [
@@ -61,22 +61,21 @@ var MCP_TOOL_CATALOG = [
61
61
  "proxyMode": {
62
62
  "type": "string",
63
63
  "enum": [
64
- "location",
65
64
  "configured",
66
65
  "none"
67
66
  ],
68
67
  "default": "none",
69
- "description": 'Leave unset (clean egress). Do NOT set "location" just because a city was named \u2014 that comes from city-in-query wording. "location" forces residential geo-IP for rank-tracking fidelity, is frequently CAPTCHA-blocked, and accepts failures.'
68
+ "description": "Leave unset for the default route. Country/region localization comes from gl/hl plus the city or region in the query."
70
69
  },
71
70
  "proxyZip": {
72
71
  "type": "string",
73
72
  "pattern": "^\\d{5}$",
74
- "description": 'US ZIP for residential geo-IP targeting. Only meaningful with proxyMode "location".'
73
+ "description": "Optional US ZIP override."
75
74
  },
76
75
  "debug": {
77
76
  "type": "boolean",
78
77
  "default": false,
79
- "description": "Include sanitized diagnostics for debugging localization, CAPTCHA, or proxy behavior."
78
+ "description": "Include sanitized diagnostics for debugging."
80
79
  }
81
80
  },
82
81
  "required": [
@@ -134,22 +133,21 @@ var MCP_TOOL_CATALOG = [
134
133
  "proxyMode": {
135
134
  "type": "string",
136
135
  "enum": [
137
- "location",
138
136
  "configured",
139
137
  "none"
140
138
  ],
141
139
  "default": "none",
142
- "description": 'Leave unset (clean egress). Do NOT set "location" just because a city was named \u2014 that comes from city-in-query wording. "location" forces residential geo-IP for rank-tracking fidelity, is frequently CAPTCHA-blocked, and accepts failures.'
140
+ "description": "Leave unset for the default route. Country/region localization comes from gl/hl plus the city or region in the query."
143
141
  },
144
142
  "proxyZip": {
145
143
  "type": "string",
146
144
  "pattern": "^\\d{5}$",
147
- "description": 'US ZIP for residential geo-IP targeting. Only meaningful with proxyMode "location".'
145
+ "description": "Optional US ZIP override."
148
146
  },
149
147
  "debug": {
150
148
  "type": "boolean",
151
149
  "default": false,
152
- "description": "Include sanitized diagnostics for debugging localization, CAPTCHA, or proxy behavior."
150
+ "description": "Include sanitized diagnostics for debugging."
153
151
  },
154
152
  "pages": {
155
153
  "type": "integer",
@@ -351,7 +349,7 @@ var MCP_TOOL_CATALOG = [
351
349
  },
352
350
  "rotateProxies": {
353
351
  "type": "boolean",
354
- "description": "Route page fetches through rotating residential proxies to defeat rate-limiting and bot blocks (403/429). Slower and pricier \u2014 use only when a site blocks normal crawling."
352
+ "description": "Use extra measures to get past sites that block normal crawling (403/429). Slower and pricier \u2014 use only when a site blocks normal crawling."
355
353
  },
356
354
  "rotateProxyEvery": {
357
355
  "type": "integer",
@@ -419,7 +417,7 @@ var MCP_TOOL_CATALOG = [
419
417
  },
420
418
  "rotateProxies": {
421
419
  "type": "boolean",
422
- "description": "Route page fetches through rotating residential proxies to defeat rate-limiting and bot blocks. Slower/pricier \u2014 use only when a site blocks normal crawling."
420
+ "description": "Use extra measures to get past sites that block normal crawling. Slower/pricier \u2014 use only when a site blocks normal crawling."
423
421
  },
424
422
  "rotateProxyEvery": {
425
423
  "type": "integer",
@@ -1148,7 +1146,7 @@ var MCP_TOOL_CATALOG = [
1148
1146
  "name": "maps_search",
1149
1147
  "category": "maps",
1150
1148
  "title": "Google Maps Business Search",
1151
- "description": "Search Google local results for multiple businesses by category, niche, or local market \u2014 leads, prospects, competitors, or beyond the 3-pack. It paginates the rendered local-results list, opens each exact business card, then closes the profile dialog before continuing. Set includeServices for services and areas served; review cards are never collected by this tool.",
1149
+ "description": "Search Google local results for multiple businesses by category, niche, or local market \u2014 leads, prospects, competitors, or beyond the 3-pack. Reaches the local-results list from the organic page and paginates it, returning up to 50 candidates (default 10) with names, place URLs, CIDs, and ratings. Leave proxyMode unset. Set includeServices to also open each business profile for its services and areas served; review cards are never collected by this tool.",
1152
1150
  "inputSchema": {
1153
1151
  "type": "object",
1154
1152
  "properties": {
@@ -1185,22 +1183,21 @@ var MCP_TOOL_CATALOG = [
1185
1183
  "includeServices": {
1186
1184
  "type": "boolean",
1187
1185
  "default": false,
1188
- "description": "Open each returned Google Business Profile and include configured services and areas served when available. Does not collect review cards."
1186
+ "description": "Open each returned business profile to include its configured services and areas served when available. Adds a page visit per business; does not collect review cards."
1189
1187
  },
1190
1188
  "proxyMode": {
1191
1189
  "type": "string",
1192
1190
  "enum": [
1193
- "location",
1194
1191
  "configured",
1195
1192
  "none"
1196
1193
  ],
1197
1194
  "default": "none",
1198
- "description": "Leave unset for the default direct browser route. Google localization comes from the city in the query plus UULE, gl, and hl. location is an explicit residential-proxy override."
1195
+ "description": "Leave unset for the default route. Country/region localization comes from the city or region in the query plus gl/hl."
1199
1196
  },
1200
1197
  "proxyZip": {
1201
1198
  "type": "string",
1202
1199
  "pattern": "^\\d{5}$",
1203
- "description": "Optional US ZIP override when proxyMode is location."
1200
+ "description": "Optional US ZIP override."
1204
1201
  },
1205
1202
  "debug": {
1206
1203
  "type": "boolean",
@@ -1362,17 +1359,16 @@ var MCP_TOOL_CATALOG = [
1362
1359
  "proxyMode": {
1363
1360
  "type": "string",
1364
1361
  "enum": [
1365
- "location",
1366
1362
  "configured",
1367
1363
  "none"
1368
1364
  ],
1369
1365
  "default": "none",
1370
- "description": "Proxy behavior per city search. Leave unset for the direct localized Google route; location is an explicit residential-proxy override."
1366
+ "description": "Proxy behavior per city search. Leave unset for the default route. Country/region localization comes from the city or region in the query plus gl/hl."
1371
1367
  },
1372
1368
  "proxyZip": {
1373
1369
  "type": "string",
1374
1370
  "pattern": "^\\d{5}$",
1375
- "description": "Optional ZIP override for proxy targeting; normally omitted."
1371
+ "description": "Optional US ZIP override."
1376
1372
  },
1377
1373
  "debug": {
1378
1374
  "type": "boolean",
@@ -2753,17 +2749,16 @@ var MCP_TOOL_CATALOG = [
2753
2749
  "proxyMode": {
2754
2750
  "type": "string",
2755
2751
  "enum": [
2756
- "location",
2757
2752
  "configured",
2758
2753
  "none"
2759
2754
  ],
2760
2755
  "default": "none",
2761
- "description": 'Leave unset (clean egress). Do NOT set "location" just because a city was named \u2014 that comes from city-in-query wording. "location" forces residential geo-IP, is frequently CAPTCHA-blocked, and accepts failures.'
2756
+ "description": "Leave unset for the default route. Country/region localization comes from gl/hl plus the city or region in the query."
2762
2757
  },
2763
2758
  "proxyZip": {
2764
2759
  "type": "string",
2765
2760
  "pattern": "^\\d{5}$",
2766
- "description": 'US ZIP for residential geo-IP targeting. Only meaningful with proxyMode "location".'
2761
+ "description": "Optional US ZIP override."
2767
2762
  },
2768
2763
  "pages": {
2769
2764
  "type": "integer",
@@ -7648,6 +7643,52 @@ var MCP_TOOL_CATALOG = [
7648
7643
  "idempotentHint": true,
7649
7644
  "openWorldHint": false
7650
7645
  }
7646
+ },
7647
+ {
7648
+ "name": "gmail_search_contacts",
7649
+ "category": "connections",
7650
+ "title": "Search Gmail Contacts",
7651
+ "description": 'Search Gmail with standard Gmail query syntax (e.g. "from:acme.com after:2026/03/22") and get back deduplicated sender contacts (email, name, domain, message count, first/last seen, sample subjects) instead of raw messages. Read-only \u2014 works on any connected Gmail connection from list_service_connections, no actionsEnabled required. Use this instead of looping list-messages/get-message yourself: those return bare message IDs and full raw MIME per message, which does not scale past a handful of messages. Reports totalMatches and truncated so incomplete coverage from a large result set is never silent \u2014 pass the returned nextPageToken to continue.',
7652
+ "inputSchema": {
7653
+ "type": "object",
7654
+ "properties": {
7655
+ "connectionId": {
7656
+ "type": "string",
7657
+ "minLength": 1,
7658
+ "description": "A Gmail connectionId from list_service_connections. Read-only \u2014 does not require actionsEnabled."
7659
+ },
7660
+ "query": {
7661
+ "type": "string",
7662
+ "minLength": 1,
7663
+ "maxLength": 500,
7664
+ "description": 'Gmail search syntax, e.g. "from:brandnorth.com after:2026/03/22" or "brandnorth.com".'
7665
+ },
7666
+ "maxMessages": {
7667
+ "type": "integer",
7668
+ "minimum": 1,
7669
+ "maximum": 150,
7670
+ "default": 50,
7671
+ "description": "Max messages to fetch and aggregate in this call. Paginate with pageToken for more; the response reports totalMatches and truncated so undercoverage is never silent."
7672
+ },
7673
+ "pageToken": {
7674
+ "type": "string",
7675
+ "description": "Continuation token from a prior response to fetch the next page."
7676
+ }
7677
+ },
7678
+ "required": [
7679
+ "connectionId",
7680
+ "query"
7681
+ ],
7682
+ "additionalProperties": false,
7683
+ "$schema": "http://json-schema.org/draft-07/schema#"
7684
+ },
7685
+ "annotations": {
7686
+ "title": "Search Gmail Contacts",
7687
+ "readOnlyHint": true,
7688
+ "destructiveHint": false,
7689
+ "idempotentHint": true,
7690
+ "openWorldHint": true
7691
+ }
7651
7692
  }
7652
7693
  ];
7653
7694
  var MCP_TOOL_NAMES = MCP_TOOL_CATALOG.map((tool) => tool.name);
@@ -7853,8 +7894,7 @@ Vault deposit: ${page.memory.deposited ? `saved to ${page.memory.vault}` : "fail
7853
7894
  downloadImages: false,
7854
7895
  rotateProxies: false,
7855
7896
  rotateProxyEvery: 30,
7856
- browserFallback: false,
7857
- kernelFallback: false
7897
+ browserFallback: false
7858
7898
  });
7859
7899
  printResult(result, Boolean(opts.json), (r) => {
7860
7900
  const pages = r.pages ?? [];
@@ -7868,8 +7908,7 @@ Vault deposit: ${page.memory.deposited ? `saved to ${page.memory.vault}` : "fail
7868
7908
  url,
7869
7909
  maxUrls: 500,
7870
7910
  concurrency: 12,
7871
- browserFallback: false,
7872
- kernelFallback: false
7911
+ browserFallback: false
7873
7912
  });
7874
7913
  printResult(result, Boolean(opts.json), (r) => {
7875
7914
  const urls = r.urls ?? [];
@@ -7885,7 +7924,8 @@ Vault deposit: ${page.memory.deposited ? `saved to ${page.memory.vault}` : "fail
7885
7924
  gl: "us",
7886
7925
  hl: "en",
7887
7926
  maxResults: 10,
7888
- proxyMode: "location",
7927
+ includeServices: false,
7928
+ proxyMode: "none",
7889
7929
  debug: false
7890
7930
  });
7891
7931
  printResult(result, Boolean(opts.json), (r) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcpscraper-cli",
3
- "version": "0.14.0",
3
+ "version": "0.16.0",
4
4
  "description": "Command-line interface for mcpscraper.dev and memory.mcpscraper.dev",
5
5
  "license": "MIT",
6
6
  "type": "module",