mcp-scraper 0.38.0 → 0.38.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 (58) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/api-server.cjs +813 -338
  3. package/dist/bin/api-server.cjs.map +1 -1
  4. package/dist/bin/api-server.js +3 -3
  5. package/dist/bin/mcp-scraper-cli.cjs +1 -1
  6. package/dist/bin/mcp-scraper-cli.cjs.map +1 -1
  7. package/dist/bin/mcp-scraper-cli.js +1 -1
  8. package/dist/bin/mcp-scraper-install.cjs +1 -1
  9. package/dist/bin/mcp-scraper-install.cjs.map +1 -1
  10. package/dist/bin/mcp-scraper-install.js +1 -1
  11. package/dist/bin/mcp-stdio-server.cjs +25 -7
  12. package/dist/bin/mcp-stdio-server.cjs.map +1 -1
  13. package/dist/bin/mcp-stdio-server.js +5 -5
  14. package/dist/bin/paa-harvest.cjs +65 -4
  15. package/dist/bin/paa-harvest.cjs.map +1 -1
  16. package/dist/bin/paa-harvest.js +3 -3
  17. package/dist/{chunk-PWPUKR5U.js → chunk-AZRPG43B.js} +12 -3
  18. package/dist/chunk-AZRPG43B.js.map +1 -0
  19. package/dist/{chunk-MA5JBAUZ.js → chunk-EGJKUB4Q.js} +3 -3
  20. package/dist/{chunk-MA5JBAUZ.js.map → chunk-EGJKUB4Q.js.map} +1 -1
  21. package/dist/{chunk-PUJFYJXB.js → chunk-FRYT3ID4.js} +2 -2
  22. package/dist/{chunk-CSCD2HNS.js → chunk-N7KUTTCC.js} +312 -101
  23. package/dist/chunk-N7KUTTCC.js.map +1 -0
  24. package/dist/{chunk-LOPKN3YL.js → chunk-NGM237OO.js} +66 -5
  25. package/dist/chunk-NGM237OO.js.map +1 -0
  26. package/dist/{chunk-P64PZUCA.js → chunk-NKCCGADE.js} +23 -8
  27. package/dist/chunk-NKCCGADE.js.map +1 -0
  28. package/dist/{chunk-FSAXLDB3.js → chunk-SFRMFGQ6.js} +2 -2
  29. package/dist/{chunk-Q35WZJJK.js → chunk-YCI2PNCS.js} +3 -3
  30. package/dist/chunk-YODBNTTN.js +7 -0
  31. package/dist/chunk-YODBNTTN.js.map +1 -0
  32. package/dist/{db-N3YECFWR.js → db-C5KVCOYT.js} +10 -4
  33. package/dist/{extract-bundle-346R6MXD.js → extract-bundle-KUBX6N6Z.js} +4 -4
  34. package/dist/index.cjs +65 -4
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.js +3 -3
  37. package/dist/{location-data-repository-O2VII3ON.js → location-data-repository-TTWF3OTM.js} +3 -3
  38. package/dist/{server-3Q6XIJPF.js → server-5EX6XBIA.js} +320 -152
  39. package/dist/server-5EX6XBIA.js.map +1 -0
  40. package/dist/{site-extract-repository-I3VM6WXN.js → site-extract-repository-XSPJTCIL.js} +4 -4
  41. package/dist/{worker-TTFXPPDK.js → worker-XCPU4YSN.js} +6 -6
  42. package/docs/mcp-tool-manifest.generated.json +66 -9
  43. package/package.json +4 -2
  44. package/dist/chunk-CSCD2HNS.js.map +0 -1
  45. package/dist/chunk-H3M3O457.js +0 -7
  46. package/dist/chunk-H3M3O457.js.map +0 -1
  47. package/dist/chunk-LOPKN3YL.js.map +0 -1
  48. package/dist/chunk-P64PZUCA.js.map +0 -1
  49. package/dist/chunk-PWPUKR5U.js.map +0 -1
  50. package/dist/server-3Q6XIJPF.js.map +0 -1
  51. /package/dist/{chunk-PUJFYJXB.js.map → chunk-FRYT3ID4.js.map} +0 -0
  52. /package/dist/{chunk-FSAXLDB3.js.map → chunk-SFRMFGQ6.js.map} +0 -0
  53. /package/dist/{chunk-Q35WZJJK.js.map → chunk-YCI2PNCS.js.map} +0 -0
  54. /package/dist/{db-N3YECFWR.js.map → db-C5KVCOYT.js.map} +0 -0
  55. /package/dist/{extract-bundle-346R6MXD.js.map → extract-bundle-KUBX6N6Z.js.map} +0 -0
  56. /package/dist/{location-data-repository-O2VII3ON.js.map → location-data-repository-TTWF3OTM.js.map} +0 -0
  57. /package/dist/{site-extract-repository-I3VM6WXN.js.map → site-extract-repository-XSPJTCIL.js.map} +0 -0
  58. /package/dist/{worker-TTFXPPDK.js.map → worker-XCPU4YSN.js.map} +0 -0
@@ -26,10 +26,10 @@ import {
26
26
  setExtractJobTotal,
27
27
  settleExtractJob,
28
28
  terminalExtractJobStatus
29
- } from "./chunk-Q35WZJJK.js";
30
- import "./chunk-PWPUKR5U.js";
29
+ } from "./chunk-YCI2PNCS.js";
30
+ import "./chunk-AZRPG43B.js";
31
31
  import "./chunk-44HZLHDV.js";
32
- import "./chunk-CSCD2HNS.js";
32
+ import "./chunk-N7KUTTCC.js";
33
33
  export {
34
34
  abandonExtractSettlement,
35
35
  claimFailedExtractJobForRefinalize,
@@ -59,4 +59,4 @@ export {
59
59
  settleExtractJob,
60
60
  terminalExtractJobStatus
61
61
  };
62
- //# sourceMappingURL=site-extract-repository-I3VM6WXN.js.map
62
+ //# sourceMappingURL=site-extract-repository-XSPJTCIL.js.map
@@ -3,20 +3,20 @@ import {
3
3
  createHarvestAttemptRecorder,
4
4
  harvestProblemResponse,
5
5
  serializeHarvestProblem
6
- } from "./chunk-FSAXLDB3.js";
6
+ } from "./chunk-SFRMFGQ6.js";
7
7
  import {
8
8
  harvest
9
- } from "./chunk-LOPKN3YL.js";
9
+ } from "./chunk-NGM237OO.js";
10
10
  import {
11
11
  browserServiceApiKey,
12
12
  runWithCostContext
13
- } from "./chunk-MA5JBAUZ.js";
13
+ } from "./chunk-EGJKUB4Q.js";
14
14
  import "./chunk-K443GQY5.js";
15
15
  import "./chunk-CB5C3BPB.js";
16
16
  import {
17
17
  MC_COSTS,
18
18
  serpActualCostMc
19
- } from "./chunk-PWPUKR5U.js";
19
+ } from "./chunk-AZRPG43B.js";
20
20
  import "./chunk-44HZLHDV.js";
21
21
  import {
22
22
  claimPendingJob,
@@ -25,7 +25,7 @@ import {
25
25
  debitMc,
26
26
  failJob,
27
27
  listHarvestAttempts
28
- } from "./chunk-CSCD2HNS.js";
28
+ } from "./chunk-N7KUTTCC.js";
29
29
 
30
30
  // src/api/webhook.ts
31
31
  async function deliverWebhook(url, payload, retries = 3) {
@@ -139,4 +139,4 @@ export {
139
139
  startWorker,
140
140
  tickOnce
141
141
  };
142
- //# sourceMappingURL=worker-TTFXPPDK.js.map
142
+ //# sourceMappingURL=worker-XCPU4YSN.js.map
@@ -1,9 +1,9 @@
1
1
  {
2
- "generatedAt": "2026-07-28T19:01:51.011Z",
2
+ "generatedAt": "2026-07-28T22:58:47.729Z",
3
3
  "generatedFrom": "dist/bin/mcp-stdio-server.js",
4
4
  "serverInfo": {
5
5
  "name": "mcp-scraper",
6
- "version": "0.38.0"
6
+ "version": "0.38.2"
7
7
  },
8
8
  "counts": {
9
9
  "unified_stdio": 172
@@ -8222,6 +8222,30 @@
8222
8222
  "url": {
8223
8223
  "type": "string"
8224
8224
  },
8225
+ "stoppedEarly": {
8226
+ "anyOf": [
8227
+ {
8228
+ "type": "object",
8229
+ "properties": {
8230
+ "code": {
8231
+ "type": "string"
8232
+ },
8233
+ "message": {
8234
+ "type": "string"
8235
+ }
8236
+ },
8237
+ "required": [
8238
+ "code",
8239
+ "message"
8240
+ ],
8241
+ "additionalProperties": false
8242
+ },
8243
+ {
8244
+ "type": "null"
8245
+ }
8246
+ ],
8247
+ "description": "Present when the crawl stopped before finishing. The returned pages are everything that was captured, and billing covers only those pages - treat the result as partial, not as the whole site."
8248
+ },
8225
8249
  "pageCount": {
8226
8250
  "type": "integer",
8227
8251
  "minimum": 0,
@@ -10211,17 +10235,21 @@
10211
10235
  {
10212
10236
  "name": "google_ads_page_intel",
10213
10237
  "title": "Google Ads Advertiser Intel",
10214
- "description": "Harvest an advertiser's ad creatives from the Google Ads Transparency Center: format, image URLs, and — for video ads — a YouTube video ID or direct video URL. Accepts advertiserId (from google_ads_search) or a domain.",
10238
+ "description": "Harvest an advertiser's ad creatives from the Google Ads Transparency Center: format, image URLs, and — for video ads — 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.",
10215
10239
  "inputSchema": {
10216
10240
  "type": "object",
10217
10241
  "properties": {
10218
- "advertiserId": {
10242
+ "domain": {
10219
10243
  "type": "string",
10220
- "description": "Google Ads Transparency advertiser ID (starts with AR...). Use one returned by google_ads_search; do not construct one yourself."
10244
+ "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."
10221
10245
  },
10222
- "domain": {
10246
+ "advertiserName": {
10247
+ "type": "string",
10248
+ "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."
10249
+ },
10250
+ "advertiserId": {
10223
10251
  "type": "string",
10224
- "description": "A domain (e.g. getviktor.com) whose primary advertiser to inspect when advertiserId is unknown. One of advertiserId or domain is required."
10252
+ "description": "Google Ads Transparency advertiser ID (starts with AR...). Only available if you already have one from a prior page-intel result — google_ads_search does NOT return advertiser IDs. Do not construct one yourself."
10225
10253
  },
10226
10254
  "region": {
10227
10255
  "type": "string",
@@ -10365,7 +10393,7 @@
10365
10393
  {
10366
10394
  "name": "google_ads_search",
10367
10395
  "title": "Google Ads Transparency Search",
10368
- "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.",
10396
+ "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.",
10369
10397
  "inputSchema": {
10370
10398
  "type": "object",
10371
10399
  "properties": {
@@ -10422,6 +10450,9 @@
10422
10450
  "name": {
10423
10451
  "$ref": "#/properties/advertisers/items/properties/advertiserId"
10424
10452
  },
10453
+ "basedIn": {
10454
+ "$ref": "#/properties/advertisers/items/properties/advertiserId"
10455
+ },
10425
10456
  "domain": {
10426
10457
  "$ref": "#/properties/advertisers/items/properties/advertiserId"
10427
10458
  },
@@ -10442,19 +10473,45 @@
10442
10473
  "required": [
10443
10474
  "advertiserId",
10444
10475
  "name",
10476
+ "basedIn",
10445
10477
  "domain",
10446
10478
  "approxAdCount",
10447
10479
  "detailUrl"
10448
10480
  ],
10449
10481
  "additionalProperties": false
10450
10482
  }
10483
+ },
10484
+ "websiteCount": {
10485
+ "type": "integer",
10486
+ "minimum": 0
10487
+ },
10488
+ "websites": {
10489
+ "type": "array",
10490
+ "items": {
10491
+ "type": "object",
10492
+ "properties": {
10493
+ "domain": {
10494
+ "type": "string"
10495
+ },
10496
+ "detailUrl": {
10497
+ "type": "string"
10498
+ }
10499
+ },
10500
+ "required": [
10501
+ "domain",
10502
+ "detailUrl"
10503
+ ],
10504
+ "additionalProperties": false
10505
+ }
10451
10506
  }
10452
10507
  },
10453
10508
  "required": [
10454
10509
  "query",
10455
10510
  "region",
10456
10511
  "advertiserCount",
10457
- "advertisers"
10512
+ "advertisers",
10513
+ "websiteCount",
10514
+ "websites"
10458
10515
  ],
10459
10516
  "additionalProperties": false,
10460
10517
  "$schema": "http://json-schema.org/draft-07/schema#"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-scraper",
3
- "version": "0.38.0",
3
+ "version": "0.38.2",
4
4
  "description": "MCP server for MCP Scraper web intelligence tools",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -62,7 +62,9 @@
62
62
  "email:avatar": "node --import tsx scripts/email/generate-sender-avatar.ts",
63
63
  "email:inbound:setup": "node --import tsx scripts/email/setup-resend-inbound.ts",
64
64
  "email:audience": "node scripts/run-ts-sandbox-safe.mjs scripts/email/sync-resend-audience.ts",
65
- "email:drafts": "node scripts/run-ts-sandbox-safe.mjs scripts/email/create-resend-drafts.ts"
65
+ "email:drafts": "node scripts/run-ts-sandbox-safe.mjs scripts/email/create-resend-drafts.ts",
66
+ "billing:preview-credit-lot-repair": "node --import tsx scripts/billing/preview-credit-lot-repair.ts",
67
+ "billing:apply-credit-lot-repair": "node --import tsx scripts/billing/apply-credit-lot-repair.ts"
66
68
  },
67
69
  "dependencies": {
68
70
  "@anthropic-ai/sdk": "^0.96.0",