mcpscraper-cli 0.20.0 → 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/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 166 unified MCP tools (77 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 175 unified MCP tools (85 MCP Scraper plus 90 mirrored Memory tools).
6
6
 
7
7
  ## Install
8
8
 
@@ -31,9 +31,10 @@ mcpscraper tools call export_connected_service_data --args '{"connectionId":"met
31
31
  mcpscraper tools call export_connected_service_data --args '{"connectionId":"gsc_conn_123","dataset":"search_console_performance","lastDays":28}' --json
32
32
  mcpscraper tools call describe_service_connection_tool --args '{"connectionId":"conn_123","tool":"provider-tool-name"}' --json
33
33
  mcpscraper tools call renew_connected_data_download --args '{"artifactId":"artifact_123"}' --json
34
+ mcpscraper tools call archive_read --args '{"url":"https://github.com/octocat/Hello-World/archive/refs/heads/master.zip"}' --json
34
35
  ```
35
36
 
36
- `tools list` contains exactly 166 manifest-backed names. `tools call` accepts any one of them. Tools marked destructive require `--yes`.
37
+ `tools list` contains exactly 175 manifest-backed names. `tools call` accepts any one of them. Tools marked destructive require `--yes`.
37
38
 
38
39
  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
40
 
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.19.0";
12
+ var CLI_VERSION = "0.22.0";
13
13
 
14
14
  // src/generated-tools.ts
15
15
  var MCP_TOOL_CATALOG = [
@@ -963,7 +963,7 @@ var MCP_TOOL_CATALOG = [
963
963
  "name": "google_ads_search",
964
964
  "category": "googleAds",
965
965
  "title": "Google Ads Transparency Search",
966
- "description": "Search the Google Ads Transparency Center to find advertisers by domain or brand name. Returns advertisers with advertiser ID and approximate ad count, to pass to google_ads_page_intel.",
966
+ "description": "Search the Google Ads Transparency Center by brand, person, or website. Returns two lists: advertisers (name, country, approximate ad count) and websites (domains). Neither carries an advertiser ID. Pass a websites[].domain (preferred - users know the website, not the registered advertiser name) or an advertisers[].name to google_ads_page_intel to pull that advertiser's actual ads.",
967
967
  "inputSchema": {
968
968
  "type": "object",
969
969
  "properties": {
@@ -1005,17 +1005,21 @@ var MCP_TOOL_CATALOG = [
1005
1005
  "name": "google_ads_page_intel",
1006
1006
  "category": "googleAds",
1007
1007
  "title": "Google Ads Advertiser Intel",
1008
- "description": "Harvest an advertiser's ad creatives from the Google Ads Transparency Center: format, image URLs, and \u2014 for video ads \u2014 a YouTube video ID or direct video URL. Accepts advertiserId (from google_ads_search) or a domain.",
1008
+ "description": "Harvest an advertiser's ad creatives from the Google Ads Transparency Center: format, image URLs, and \u2014 for video ads \u2014 a YouTube video ID or direct video URL. Accepts a domain or advertiserName from google_ads_search (google_ads_search does not return advertiser IDs). A domain may map to several advertiser accounts; this returns the primary one.",
1009
1009
  "inputSchema": {
1010
1010
  "type": "object",
1011
1011
  "properties": {
1012
- "advertiserId": {
1012
+ "domain": {
1013
1013
  "type": "string",
1014
- "description": "Google Ads Transparency advertiser ID (starts with AR...). Use one returned by google_ads_search; do not construct one yourself."
1014
+ "description": "A website from google_ads_search.websites (e.g. getviktor.com). Preferred input: people know the website, not the advertiser's registered name. Resolves to whichever advertiser account runs ads for that domain."
1015
1015
  },
1016
- "domain": {
1016
+ "advertiserName": {
1017
+ "type": "string",
1018
+ "description": 'An advertiser name exactly as returned in google_ads_search.advertisers[].name (e.g. "PPS Plumbing Services"). Use when the user picked an advertiser rather than a website.'
1019
+ },
1020
+ "advertiserId": {
1017
1021
  "type": "string",
1018
- "description": "A domain (e.g. getviktor.com) whose primary advertiser to inspect when advertiserId is unknown. One of advertiserId or domain is required."
1022
+ "description": "Google Ads Transparency advertiser ID (starts with AR...). Only available if you already have one from a prior page-intel result \u2014 google_ads_search does NOT return advertiser IDs. Do not construct one yourself."
1019
1023
  },
1020
1024
  "region": {
1021
1025
  "type": "string",
@@ -8166,6 +8170,319 @@ var MCP_TOOL_CATALOG = [
8166
8170
  "idempotentHint": true,
8167
8171
  "openWorldHint": false
8168
8172
  }
8173
+ },
8174
+ {
8175
+ "name": "archive_read",
8176
+ "category": "web",
8177
+ "title": "List or Read ZIP Archive",
8178
+ "description": "Open any bounded public HTTPS ZIP, including a bundleUrl from check_site_export. Omit path to list files; pass an exact returned path to read a bounded UTF-8 text window. Set depositToLibrary true with a path to preserve the complete selected source file in the tenant Library vault. Rejects private-network URLs, unsafe paths, encrypted entries, symlinks, binary inline reads, and ZIP bombs.",
8179
+ "inputSchema": {
8180
+ "type": "object",
8181
+ "properties": {
8182
+ "url": {
8183
+ "type": "string",
8184
+ "format": "uri",
8185
+ "description": "Public HTTPS URL of a ZIP file, including a signed bundleUrl returned by check_site_export."
8186
+ },
8187
+ "path": {
8188
+ "type": "string",
8189
+ "minLength": 1,
8190
+ "maxLength": 2e3,
8191
+ "description": "Exact ZIP entry path to read. Omit to list the archive. Use a path returned by a previous archive_read listing."
8192
+ },
8193
+ "offset": {
8194
+ "type": "integer",
8195
+ "minimum": 0,
8196
+ "default": 0,
8197
+ "description": "Byte offset for a text-file read. Continue from nextOffset until it is null. Ignored when path is omitted."
8198
+ },
8199
+ "maxBytes": {
8200
+ "type": "integer",
8201
+ "minimum": 1,
8202
+ "maximum": 2e5,
8203
+ "default": 5e4,
8204
+ "description": "Maximum UTF-8 bytes to return from the selected text file. Default 50,000; maximum 200,000."
8205
+ },
8206
+ "maxEntries": {
8207
+ "type": "integer",
8208
+ "minimum": 1,
8209
+ "maximum": 1e3,
8210
+ "default": 200,
8211
+ "description": "Maximum entry rows returned when listing. The server still validates the complete archive. Default 200; maximum 1,000."
8212
+ },
8213
+ "depositToLibrary": {
8214
+ "type": "boolean",
8215
+ "default": false,
8216
+ "description": "Store the complete selected text file in the tenant Library vault through library-ingest. Requires path. Preserves the ZIP URL and entry path as source provenance."
8217
+ }
8218
+ },
8219
+ "required": [
8220
+ "url"
8221
+ ],
8222
+ "additionalProperties": false,
8223
+ "$schema": "http://json-schema.org/draft-07/schema#"
8224
+ },
8225
+ "annotations": {
8226
+ "title": "List or Read ZIP Archive",
8227
+ "readOnlyHint": false,
8228
+ "destructiveHint": false,
8229
+ "idempotentHint": false,
8230
+ "openWorldHint": true
8231
+ }
8232
+ },
8233
+ {
8234
+ "name": "create_editorial_reading_room",
8235
+ "category": "editorial",
8236
+ "title": "Create Editorial Reading Room",
8237
+ "description": "Turn fully authored, source-grounded articles into a polished mobile-first editorial reading room with contents, search, hamburger navigation, article jump links, reading progress, text sizing, evening mode, and provenance. The calling AI must first read all in-scope material and use editorial_reading_room_guide when it has not already internalized the workflow; this renderer does not perform research or invent copy. Local stdio clients save one self-contained HTML file under the MCP Scraper output directory and return localPath.",
8238
+ "inputSchema": {
8239
+ "type": "object",
8240
+ "properties": {
8241
+ "site": {
8242
+ "type": "object",
8243
+ "properties": {
8244
+ "slug": {
8245
+ "type": "string",
8246
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
8247
+ "maxLength": 80,
8248
+ "description": 'Stable kebab-case identifier used for browser reading progress, for example "customer-research-field-notes".'
8249
+ },
8250
+ "title": {
8251
+ "type": "string",
8252
+ "minLength": 1,
8253
+ "maxLength": 140,
8254
+ "description": "Publication title shown in the page title and footer."
8255
+ },
8256
+ "product": {
8257
+ "type": "string",
8258
+ "minLength": 1,
8259
+ "maxLength": 80,
8260
+ "description": "Short product, organization, or collection name shown in the masthead."
8261
+ },
8262
+ "edition": {
8263
+ "type": "string",
8264
+ "minLength": 1,
8265
+ "maxLength": 80,
8266
+ "default": "Field Notes",
8267
+ "description": "Short editorial edition name shown in the masthead."
8268
+ },
8269
+ "editionLabel": {
8270
+ "type": "string",
8271
+ "minLength": 1,
8272
+ "maxLength": 100,
8273
+ "default": "Reader\u2019s edition",
8274
+ "description": "Small label in the home-page issue line."
8275
+ },
8276
+ "issueLabel": {
8277
+ "type": "string",
8278
+ "minLength": 1,
8279
+ "maxLength": 100,
8280
+ "default": "Current edition",
8281
+ "description": "Issue, date, or collection label in the home-page issue line."
8282
+ },
8283
+ "eyebrow": {
8284
+ "type": "string",
8285
+ "minLength": 1,
8286
+ "maxLength": 120,
8287
+ "default": "A guided collection",
8288
+ "description": "Short editorial eyebrow above the home-page headline."
8289
+ },
8290
+ "heroTitle": {
8291
+ "type": "string",
8292
+ "minLength": 1,
8293
+ "maxLength": 180,
8294
+ "description": "Outcome-led home-page headline for the whole reading room."
8295
+ },
8296
+ "startLabel": {
8297
+ "type": "string",
8298
+ "minLength": 1,
8299
+ "maxLength": 60,
8300
+ "default": "Start reading",
8301
+ "description": "Label for the primary start-reading button."
8302
+ }
8303
+ },
8304
+ "required": [
8305
+ "slug",
8306
+ "title",
8307
+ "product",
8308
+ "heroTitle"
8309
+ ],
8310
+ "additionalProperties": false
8311
+ },
8312
+ "deck": {
8313
+ "type": "string",
8314
+ "minLength": 1,
8315
+ "maxLength": 1e3,
8316
+ "description": "Two or three sentences that explain the collection\u2019s value and scope without generic marketing language."
8317
+ },
8318
+ "articles": {
8319
+ "type": "array",
8320
+ "items": {
8321
+ "type": "object",
8322
+ "properties": {
8323
+ "slug": {
8324
+ "type": "string",
8325
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
8326
+ "maxLength": 80,
8327
+ "description": "Unique kebab-case article identifier."
8328
+ },
8329
+ "category": {
8330
+ "type": "string",
8331
+ "minLength": 1,
8332
+ "maxLength": 80,
8333
+ "description": "Repeated section label used to group related articles in navigation."
8334
+ },
8335
+ "kicker": {
8336
+ "type": "string",
8337
+ "minLength": 1,
8338
+ "maxLength": 140,
8339
+ "description": "Short framing line above the article title."
8340
+ },
8341
+ "order": {
8342
+ "type": "integer",
8343
+ "minimum": 1,
8344
+ "maximum": 1e3,
8345
+ "description": "Reading order. Values must be unique."
8346
+ },
8347
+ "title": {
8348
+ "type": "string",
8349
+ "minLength": 1,
8350
+ "maxLength": 180,
8351
+ "description": "Article title that states the question, decision, or lesson."
8352
+ },
8353
+ "summary": {
8354
+ "type": "string",
8355
+ "minLength": 1,
8356
+ "maxLength": 500,
8357
+ "description": "One or two sentences explaining what the reader will understand."
8358
+ },
8359
+ "sourceType": {
8360
+ "type": "string",
8361
+ "minLength": 1,
8362
+ "maxLength": 80,
8363
+ "description": 'Optional source class such as "Conversation synthesis", "Research notes", or "Workshop guide".'
8364
+ },
8365
+ "sourceLabel": {
8366
+ "type": "string",
8367
+ "minLength": 1,
8368
+ "maxLength": 500,
8369
+ "description": "Visible provenance label naming the material this article was derived from. Do not invent a source."
8370
+ },
8371
+ "revision": {
8372
+ "type": "string",
8373
+ "minLength": 1,
8374
+ "maxLength": 80,
8375
+ "description": "Optional revision identifier or version label."
8376
+ },
8377
+ "updatedAt": {
8378
+ "type": "string",
8379
+ "minLength": 1,
8380
+ "maxLength": 80,
8381
+ "description": "Optional human-readable source update date."
8382
+ },
8383
+ "markdown": {
8384
+ "type": "string",
8385
+ "minLength": 1,
8386
+ "maxLength": 1e5,
8387
+ "description": "Complete article body in Markdown. Use H2/H3 headings for jump links, short paragraphs, concrete examples, and tables only where they improve comparison."
8388
+ }
8389
+ },
8390
+ "required": [
8391
+ "slug",
8392
+ "category",
8393
+ "kicker",
8394
+ "order",
8395
+ "title",
8396
+ "summary",
8397
+ "sourceLabel",
8398
+ "markdown"
8399
+ ],
8400
+ "additionalProperties": false
8401
+ },
8402
+ "minItems": 1,
8403
+ "maxItems": 40,
8404
+ "description": "One to forty fully authored articles, with no more than 2,000,000 Markdown bytes combined. Read all in-scope source material before composing them; preserve distinctions, uncertainty, and provenance instead of flattening the corpus."
8405
+ },
8406
+ "filename": {
8407
+ "type": "string",
8408
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._-]*$",
8409
+ "maxLength": 120,
8410
+ "description": "Optional download filename. The server always normalizes it to a safe .html filename."
8411
+ }
8412
+ },
8413
+ "required": [
8414
+ "site",
8415
+ "deck",
8416
+ "articles"
8417
+ ],
8418
+ "additionalProperties": false,
8419
+ "$schema": "http://json-schema.org/draft-07/schema#"
8420
+ },
8421
+ "annotations": {
8422
+ "title": "Create Editorial Reading Room",
8423
+ "readOnlyHint": false,
8424
+ "destructiveHint": false,
8425
+ "idempotentHint": false,
8426
+ "openWorldHint": false
8427
+ }
8428
+ },
8429
+ {
8430
+ "name": "editorial_reading_room_guide",
8431
+ "category": "editorial",
8432
+ "title": "Editorial Reading Room Guide",
8433
+ "description": 'Read the reusable composition contract before creating an editorial reading room. It tells the calling AI how to inventory the supplied corpus, preserve source truth, architect a coherent edition, write useful articles, and verify the finished page. Start with focus "workflow"; fetch "content_contract" or "example" only when needed. This does not research, write, or create a page.',
8434
+ "inputSchema": {
8435
+ "type": "object",
8436
+ "properties": {
8437
+ "focus": {
8438
+ "type": "string",
8439
+ "enum": [
8440
+ "workflow",
8441
+ "content_contract",
8442
+ "example"
8443
+ ],
8444
+ "default": "workflow",
8445
+ "description": "Which part of the reusable editorial-reading-room guide to return. Start with workflow; fetch the content contract or compact example only when needed."
8446
+ }
8447
+ },
8448
+ "additionalProperties": false,
8449
+ "$schema": "http://json-schema.org/draft-07/schema#"
8450
+ },
8451
+ "annotations": {
8452
+ "title": "Editorial Reading Room Guide",
8453
+ "readOnlyHint": true,
8454
+ "destructiveHint": false,
8455
+ "idempotentHint": true,
8456
+ "openWorldHint": false
8457
+ }
8458
+ },
8459
+ {
8460
+ "name": "renew_editorial_reading_room_download",
8461
+ "category": "editorial",
8462
+ "title": "Renew Editorial Reading Room Download",
8463
+ "description": "Create a fresh 15-minute signed download URL for a private editorial reading-room artifact owned by this caller. Use when the original create_editorial_reading_room URL expired; the HTML artifact itself is retained for seven days. Local files do not need renewal.",
8464
+ "inputSchema": {
8465
+ "type": "object",
8466
+ "properties": {
8467
+ "artifactId": {
8468
+ "type": "string",
8469
+ "minLength": 1,
8470
+ "description": "Private artifactId returned by create_editorial_reading_room."
8471
+ }
8472
+ },
8473
+ "required": [
8474
+ "artifactId"
8475
+ ],
8476
+ "additionalProperties": false,
8477
+ "$schema": "http://json-schema.org/draft-07/schema#"
8478
+ },
8479
+ "annotations": {
8480
+ "title": "Renew Editorial Reading Room Download",
8481
+ "readOnlyHint": true,
8482
+ "destructiveHint": false,
8483
+ "idempotentHint": false,
8484
+ "openWorldHint": false
8485
+ }
8169
8486
  }
8170
8487
  ];
8171
8488
  var MCP_TOOL_NAMES = MCP_TOOL_CATALOG.map((tool) => tool.name);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcpscraper-cli",
3
- "version": "0.20.0",
3
+ "version": "0.22.0",
4
4
  "description": "Command-line interface for mcpscraper.dev and memory.mcpscraper.dev",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "commander": "^12.0.0",
22
- "mcpscraper-sdk": "^0.21.0"
22
+ "mcpscraper-sdk": "^0.23.0"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.0.0"