mcp-scraper 0.88.0 → 0.88.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,19 @@ All notable changes to MCP Scraper are documented here. The format is based on [
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.88.2] - 2026-09-02
8
+
9
+ ### Fixed
10
+
11
+ - Normalized mounted `/analytics` route paths before sampled REST response validation, preventing successful X-Ray responses from intermittently becoming `analytics_rest_operation_unknown` 500 errors in production.
12
+ - Applied the current additive analytics schema migration so consented authenticated identity events can populate the governed person graph without a missing `crm_entity_id` column failure.
13
+
14
+ ## [0.88.1] - 2026-09-02
15
+
16
+ ### Fixed
17
+
18
+ - Updated the root server's in-process Memory dependency to the released JWT-aware `mcpscraper-memory-tools` 1.19.0 and `mcpscraper-memory-db` 1.18.0, so the unified customer key reaches Memory, Research, and CRM without being mistaken for a retired legacy key.
19
+
7
20
  ## [0.88.0] - 2026-09-02
8
21
 
9
22
  ### Changed
package/README.md CHANGED
@@ -175,7 +175,7 @@ Build the branded one-click bundle:
175
175
  npm run build:mcpb
176
176
  ```
177
177
 
178
- The generated bundle is written to `build/mcpb/mcp-scraper-<version>.mcpb` and copied to `public/downloads/` for the hosted download. The current public bundle is `https://mcpscraper.dev/downloads/mcp-scraper.mcpb` (`0.88.0`, SHA-256 `ff593dd4184122b9d9ef10bb0a9c21a907f8e2e180520dfbe56001bff0ee090d`). Install it by opening or dragging it into Claude Desktop. Claude displays the `MCP Scraper` install card, icon, API-key configuration field, and manually curated current-release message from the bundle manifest.
178
+ The generated bundle is written to `build/mcpb/mcp-scraper-<version>.mcpb` and copied to `public/downloads/` for the hosted download. The current public bundle is `https://mcpscraper.dev/downloads/mcp-scraper.mcpb` (`0.88.2`, SHA-256 `353608a80e9c4b9879e3fa293aaa095a7f5c75b4b713f127d044775b329e455f`). Install it by opening or dragging it into Claude Desktop. Claude displays the `MCP Scraper` install card, icon, API-key configuration field, and manually curated current-release message from the bundle manifest.
179
179
 
180
180
  The MCPB install exposes every tool — web-intelligence plus all `browser_*` tools — through the one `mcp-scraper` server.
181
181
 
@@ -17,7 +17,7 @@ loadDotEnv();
17
17
  async function main() {
18
18
  const [{ serve }, { app, personalAssistantProductionStartup }, { startWorker }, { migrate }] = await Promise.all([
19
19
  import("@hono/node-server"),
20
- import("../server-PD3TDL6Q.js"),
20
+ import("../server-SQZ3A7SY.js"),
21
21
  import("../worker-LDCAULWL.js"),
22
22
  import("../db-Z34LPZNR.js")
23
23
  ]);
@@ -19,7 +19,7 @@ import {
19
19
  import "../chunk-GGZEC22A.js";
20
20
  import {
21
21
  PACKAGE_VERSION
22
- } from "../chunk-XIJI34RM.js";
22
+ } from "../chunk-K45K75OF.js";
23
23
 
24
24
  // src/cli/human-cli.ts
25
25
  import { Command } from "commander";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runMcpScraperStdio
4
- } from "../chunk-P5FPC54B.js";
5
- import "../chunk-2JVZQGSN.js";
4
+ } from "../chunk-LFW2FRPJ.js";
5
+ import "../chunk-PKZS6SHW.js";
6
6
  import "../chunk-PGJQDMC2.js";
7
7
  import "../chunk-DNM65UCK.js";
8
8
  import "../chunk-T3MZISOF.js";
@@ -13,7 +13,7 @@ import "../chunk-OPQIGAFB.js";
13
13
  import "../chunk-ABF2CGOZ.js";
14
14
  import "../chunk-P7FWOMU7.js";
15
15
  import "../chunk-GGZEC22A.js";
16
- import "../chunk-XIJI34RM.js";
16
+ import "../chunk-K45K75OF.js";
17
17
  import "../chunk-YXNDOQXN.js";
18
18
 
19
19
  // src/mcp/thorbit-restricted-tool-surface.ts
@@ -4,7 +4,7 @@ import {
4
4
  } from "../chunk-ABF2CGOZ.js";
5
5
  import {
6
6
  PACKAGE_VERSION
7
- } from "../chunk-XIJI34RM.js";
7
+ } from "../chunk-K45K75OF.js";
8
8
 
9
9
  // bin/mcp-scraper-install.ts
10
10
  var noColor = process.argv.includes("--no-color") || process.env.NO_COLOR !== void 0 || process.env.FORCE_COLOR === "0" || !process.stdout.isTTY;
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runMcpScraperStdio
4
- } from "../chunk-P5FPC54B.js";
5
- import "../chunk-2JVZQGSN.js";
4
+ } from "../chunk-LFW2FRPJ.js";
5
+ import "../chunk-PKZS6SHW.js";
6
6
  import "../chunk-PGJQDMC2.js";
7
7
  import "../chunk-DNM65UCK.js";
8
8
  import "../chunk-T3MZISOF.js";
@@ -13,7 +13,7 @@ import "../chunk-OPQIGAFB.js";
13
13
  import "../chunk-ABF2CGOZ.js";
14
14
  import "../chunk-P7FWOMU7.js";
15
15
  import "../chunk-GGZEC22A.js";
16
- import "../chunk-XIJI34RM.js";
16
+ import "../chunk-K45K75OF.js";
17
17
  import "../chunk-YXNDOQXN.js";
18
18
 
19
19
  // bin/mcp-stdio-server.ts
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var PACKAGE_VERSION = "0.88.0";
2
+ var PACKAGE_VERSION = "0.88.2";
3
3
 
4
4
  export {
5
5
  PACKAGE_VERSION
@@ -12,13 +12,13 @@ import {
12
12
  registerScheduledResultsMcpTools,
13
13
  registerSerpIntelligenceCaptureTools,
14
14
  resolveDeploymentProfile
15
- } from "./chunk-2JVZQGSN.js";
15
+ } from "./chunk-PKZS6SHW.js";
16
16
  import {
17
17
  renderInstallTerminal
18
18
  } from "./chunk-ABF2CGOZ.js";
19
19
  import {
20
20
  PACKAGE_VERSION
21
- } from "./chunk-XIJI34RM.js";
21
+ } from "./chunk-K45K75OF.js";
22
22
 
23
23
  // src/mcp/stdio-runtime.ts
24
24
  import { readFileSync } from "fs";
@@ -50,7 +50,7 @@ import {
50
50
  } from "./chunk-P7FWOMU7.js";
51
51
  import {
52
52
  PACKAGE_VERSION
53
- } from "./chunk-XIJI34RM.js";
53
+ } from "./chunk-K45K75OF.js";
54
54
  import {
55
55
  PUBLIC_ERROR_CODES,
56
56
  buildPublicErrorEnvelope,
@@ -18425,6 +18425,10 @@ function operationIdForAnalyticsRoute(method, path) {
18425
18425
  const domain = path.split("/").filter(Boolean).map((segment) => segment.startsWith(":") ? `by_${segment.slice(1)}` : segment).join("_").replace(/[^a-zA-Z0-9_]+/g, "_").replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase() || "root";
18426
18426
  return `analytics.${domain}.${method.toLowerCase()}.v1`;
18427
18427
  }
18428
+ function normalizeAnalyticsContractRoutePath(path) {
18429
+ if (path === "/analytics") return "/";
18430
+ return path.startsWith("/analytics/") ? path.slice("/analytics".length) : path;
18431
+ }
18428
18432
  var CurrencySchema = z19.object({
18429
18433
  valueMinor: z19.number().int().safe(),
18430
18434
  currency: z19.string().regex(/^[A-Z]{3}$/).nullable()
@@ -22680,11 +22684,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
22680
22684
  "type": "object",
22681
22685
  "properties": {
22682
22686
  "ok": {
22683
- "type": "boolean",
22684
- "enum": [
22685
- true,
22686
- false
22687
- ]
22687
+ "type": "boolean"
22688
22688
  },
22689
22689
  "project": {
22690
22690
  "type": "object",
@@ -22752,11 +22752,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
22752
22752
  "type": "object",
22753
22753
  "properties": {
22754
22754
  "ok": {
22755
- "type": "boolean",
22756
- "enum": [
22757
- true,
22758
- false
22759
- ]
22755
+ "type": "boolean"
22760
22756
  },
22761
22757
  "projects": {
22762
22758
  "type": "array",
@@ -22852,11 +22848,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
22852
22848
  "type": "object",
22853
22849
  "properties": {
22854
22850
  "ok": {
22855
- "type": "boolean",
22856
- "enum": [
22857
- true,
22858
- false
22859
- ]
22851
+ "type": "boolean"
22860
22852
  },
22861
22853
  "folder": {
22862
22854
  "type": "object",
@@ -22939,11 +22931,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
22939
22931
  "type": "object",
22940
22932
  "properties": {
22941
22933
  "ok": {
22942
- "type": "boolean",
22943
- "enum": [
22944
- true,
22945
- false
22946
- ]
22934
+ "type": "boolean"
22947
22935
  },
22948
22936
  "folders": {
22949
22937
  "type": "array",
@@ -23101,11 +23089,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23101
23089
  "type": "object",
23102
23090
  "properties": {
23103
23091
  "ok": {
23104
- "type": "boolean",
23105
- "enum": [
23106
- true,
23107
- false
23108
- ]
23092
+ "type": "boolean"
23109
23093
  },
23110
23094
  "asset": {
23111
23095
  "type": "object",
@@ -23143,6 +23127,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23143
23127
  "bytes": {
23144
23128
  "type": "number"
23145
23129
  },
23130
+ "sha256": {
23131
+ "type": "string",
23132
+ "pattern": "^[0-9a-f]{64}$"
23133
+ },
23146
23134
  "width": {
23147
23135
  "type": "number"
23148
23136
  },
@@ -23212,6 +23200,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23212
23200
  "sourceKind",
23213
23201
  "mimeType",
23214
23202
  "bytes",
23203
+ "sha256",
23215
23204
  "width",
23216
23205
  "height",
23217
23206
  "projectId",
@@ -23280,11 +23269,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23280
23269
  "type": "object",
23281
23270
  "properties": {
23282
23271
  "ok": {
23283
- "type": "boolean",
23284
- "enum": [
23285
- true,
23286
- false
23287
- ]
23272
+ "type": "boolean"
23288
23273
  },
23289
23274
  "asset": {
23290
23275
  "type": "object",
@@ -23322,6 +23307,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23322
23307
  "bytes": {
23323
23308
  "type": "number"
23324
23309
  },
23310
+ "sha256": {
23311
+ "type": "string",
23312
+ "pattern": "^[0-9a-f]{64}$"
23313
+ },
23325
23314
  "width": {
23326
23315
  "type": "number"
23327
23316
  },
@@ -23391,6 +23380,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23391
23380
  "sourceKind",
23392
23381
  "mimeType",
23393
23382
  "bytes",
23383
+ "sha256",
23394
23384
  "width",
23395
23385
  "height",
23396
23386
  "projectId",
@@ -23496,11 +23486,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23496
23486
  "type": "object",
23497
23487
  "properties": {
23498
23488
  "ok": {
23499
- "type": "boolean",
23500
- "enum": [
23501
- true,
23502
- false
23503
- ]
23489
+ "type": "boolean"
23504
23490
  },
23505
23491
  "assets": {
23506
23492
  "type": "array",
@@ -23540,6 +23526,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23540
23526
  "bytes": {
23541
23527
  "type": "number"
23542
23528
  },
23529
+ "sha256": {
23530
+ "type": "string",
23531
+ "pattern": "^[0-9a-f]{64}$"
23532
+ },
23543
23533
  "width": {
23544
23534
  "type": "number"
23545
23535
  },
@@ -23609,6 +23599,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23609
23599
  "sourceKind",
23610
23600
  "mimeType",
23611
23601
  "bytes",
23602
+ "sha256",
23612
23603
  "width",
23613
23604
  "height",
23614
23605
  "projectId",
@@ -23739,11 +23730,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23739
23730
  "type": "object",
23740
23731
  "properties": {
23741
23732
  "ok": {
23742
- "type": "boolean",
23743
- "enum": [
23744
- true,
23745
- false
23746
- ]
23733
+ "type": "boolean"
23747
23734
  },
23748
23735
  "results": {
23749
23736
  "type": "array",
@@ -23786,6 +23773,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23786
23773
  "bytes": {
23787
23774
  "type": "number"
23788
23775
  },
23776
+ "sha256": {
23777
+ "type": "string",
23778
+ "pattern": "^[0-9a-f]{64}$"
23779
+ },
23789
23780
  "width": {
23790
23781
  "type": "number"
23791
23782
  },
@@ -23855,6 +23846,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23855
23846
  "sourceKind",
23856
23847
  "mimeType",
23857
23848
  "bytes",
23849
+ "sha256",
23858
23850
  "width",
23859
23851
  "height",
23860
23852
  "projectId",
@@ -23964,11 +23956,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23964
23956
  "type": "object",
23965
23957
  "properties": {
23966
23958
  "ok": {
23967
- "type": "boolean",
23968
- "enum": [
23969
- true,
23970
- false
23971
- ]
23959
+ "type": "boolean"
23972
23960
  },
23973
23961
  "asset": {
23974
23962
  "type": "object",
@@ -24006,6 +23994,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
24006
23994
  "bytes": {
24007
23995
  "type": "number"
24008
23996
  },
23997
+ "sha256": {
23998
+ "type": "string",
23999
+ "pattern": "^[0-9a-f]{64}$"
24000
+ },
24009
24001
  "width": {
24010
24002
  "type": "number"
24011
24003
  },
@@ -24075,6 +24067,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
24075
24067
  "sourceKind",
24076
24068
  "mimeType",
24077
24069
  "bytes",
24070
+ "sha256",
24078
24071
  "width",
24079
24072
  "height",
24080
24073
  "projectId",
@@ -24139,11 +24132,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
24139
24132
  "type": "object",
24140
24133
  "properties": {
24141
24134
  "ok": {
24142
- "type": "boolean",
24143
- "enum": [
24144
- true,
24145
- false
24146
- ]
24135
+ "type": "boolean"
24147
24136
  },
24148
24137
  "deleted": {
24149
24138
  "type": "boolean"
@@ -33134,6 +33123,7 @@ export {
33134
33123
  buildPaaExtractorMcpServer,
33135
33124
  registerPaaExtractorMcpTools,
33136
33125
  operationIdForAnalyticsRoute,
33126
+ normalizeAnalyticsContractRoutePath,
33137
33127
  normalizeAnalyticsRestErrorEnvelope,
33138
33128
  ANALYTICS_REST_GENERIC_EXEMPTIONS,
33139
33129
  analyticsRestContractMetadata,
@@ -370,6 +370,7 @@ import {
370
370
  leadListOutputRows,
371
371
  listAnalyticsRuntimeExperiments,
372
372
  localSourcebookSchemaContract,
373
+ normalizeAnalyticsContractRoutePath,
373
374
  normalizeAnalyticsRestErrorEnvelope,
374
375
  normalizeLeadRows,
375
376
  operationIdForAnalyticsRoute,
@@ -388,7 +389,7 @@ import {
388
389
  transcribeMediaUrl,
389
390
  transitionAnalyticsExperiment,
390
391
  validateAnalyticsRestResponseForRequest
391
- } from "./chunk-2JVZQGSN.js";
392
+ } from "./chunk-PKZS6SHW.js";
392
393
  import {
393
394
  auditImageUrls,
394
395
  auditImages,
@@ -509,7 +510,7 @@ import {
509
510
  } from "./chunk-GGZEC22A.js";
510
511
  import {
511
512
  PACKAGE_VERSION
512
- } from "./chunk-XIJI34RM.js";
513
+ } from "./chunk-K45K75OF.js";
513
514
  import {
514
515
  CaptchaError,
515
516
  MapsSearchIncompletePageError,
@@ -53896,7 +53897,10 @@ analyticsApp.use("*", async (c, next) => {
53896
53897
  return;
53897
53898
  }
53898
53899
  if (c.res.status >= 200 && c.res.status < 300 && contentType.includes("application/json") && routePath && ["GET", "POST", "PATCH", "DELETE"].includes(method)) {
53899
- const operationId = operationIdForAnalyticsRoute(method, routePath);
53900
+ const operationId = operationIdForAnalyticsRoute(
53901
+ method,
53902
+ normalizeAnalyticsContractRoutePath(routePath)
53903
+ );
53900
53904
  if (!analyticsGenericContractExemptions.has(operationId)) {
53901
53905
  const payload = await c.res.clone().json();
53902
53906
  validateAnalyticsRestResponseForRequest(operationId, payload, analyticsContractRequestId(c));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-scraper",
3
- "version": "0.88.0",
3
+ "version": "0.88.2",
4
4
  "description": "MCP server for MCP Scraper web intelligence tools",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -136,7 +136,7 @@
136
136
  "ipaddr.js": "^1.9.1",
137
137
  "jose": "^6.2.3",
138
138
  "marked": "^18.0.7",
139
- "mcpscraper-memory-tools": "1.16.0",
139
+ "mcpscraper-memory-tools": "1.19.0",
140
140
  "p-limit": "^7.3.0",
141
141
  "papaparse": "^5.4.0",
142
142
  "pg": "^8.23.0",