mcp-scraper 0.88.1 → 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 +7 -0
- package/README.md +1 -1
- package/dist/bin/api-server.js +1 -1
- package/dist/bin/mcp-scraper-cli.js +1 -1
- package/dist/bin/mcp-scraper-core.js +3 -3
- package/dist/bin/mcp-scraper-install.js +1 -1
- package/dist/bin/mcp-stdio-server.js +3 -3
- package/dist/{chunk-HIMFLGLV.js → chunk-K45K75OF.js} +1 -1
- package/dist/{chunk-65OWZPWE.js → chunk-LFW2FRPJ.js} +2 -2
- package/dist/{chunk-EG2PDKD7.js → chunk-PKZS6SHW.js} +6 -1
- package/dist/{server-JCJML2EW.js → server-SQZ3A7SY.js} +7 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,13 @@ 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
|
+
|
|
7
14
|
## [0.88.1] - 2026-09-02
|
|
8
15
|
|
|
9
16
|
### Fixed
|
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.
|
|
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
|
|
package/dist/bin/api-server.js
CHANGED
|
@@ -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-
|
|
20
|
+
import("../server-SQZ3A7SY.js"),
|
|
21
21
|
import("../worker-LDCAULWL.js"),
|
|
22
22
|
import("../db-Z34LPZNR.js")
|
|
23
23
|
]);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runMcpScraperStdio
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
5
|
-
import "../chunk-
|
|
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-
|
|
16
|
+
import "../chunk-K45K75OF.js";
|
|
17
17
|
import "../chunk-YXNDOQXN.js";
|
|
18
18
|
|
|
19
19
|
// bin/mcp-stdio-server.ts
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
registerScheduledResultsMcpTools,
|
|
13
13
|
registerSerpIntelligenceCaptureTools,
|
|
14
14
|
resolveDeploymentProfile
|
|
15
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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()
|
|
@@ -33119,6 +33123,7 @@ export {
|
|
|
33119
33123
|
buildPaaExtractorMcpServer,
|
|
33120
33124
|
registerPaaExtractorMcpTools,
|
|
33121
33125
|
operationIdForAnalyticsRoute,
|
|
33126
|
+
normalizeAnalyticsContractRoutePath,
|
|
33122
33127
|
normalizeAnalyticsRestErrorEnvelope,
|
|
33123
33128
|
ANALYTICS_REST_GENERIC_EXEMPTIONS,
|
|
33124
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-
|
|
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-
|
|
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(
|
|
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));
|