mcpscraper-cli 0.15.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.15.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",
@@ -1190,17 +1188,16 @@ var MCP_TOOL_CATALOG = [
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 route (stealth browser on the managed ISP proxy, retried on a fresh session when Google blocks). Localization comes from the city in the query plus gl/hl. location forces an explicit residential proxy \u2014 not recommended for Google."
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, only used 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 default route (stealth browser on the managed ISP proxy, retried fresh on a Google block). location forces an explicit residential proxy \u2014 not recommended for Google."
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 ?? [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcpscraper-cli",
3
- "version": "0.15.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",