mcp-scraper 0.87.0 → 0.88.1

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,24 @@ All notable changes to MCP Scraper are documented here. The format is based on [
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.88.1] - 2026-09-02
8
+
9
+ ### Fixed
10
+
11
+ - 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.
12
+
13
+ ## [0.88.0] - 2026-09-02
14
+
15
+ ### Changed
16
+
17
+ - Made one `MCP_SCRAPER_API_KEY` authenticate scraping, Memory, Research, and native CRM through the canonical root MCP endpoint; root-to-Memory calls now use short-lived audience-bound owner assertions.
18
+ - Reduced the customer-callable unified catalog from 377 to 375 tools by retiring Memory key issuance and scope mutation, while preserving explicit compatibility errors in SDK clients.
19
+ - Added strict-schema validation for all 148 direct Memory tools and an authenticated 30-screenshot CRM workspace proof runner covering ten surfaces at wide, compact, and mobile viewports.
20
+
21
+ ### Security
22
+
23
+ - Stopped normal creation, storage, display, and use of long-lived per-user Memory keys. Existing direct `mk_` credentials remain accepted for one documented compatibility release and can still be listed or revoked.
24
+
7
25
  ## [0.87.0] - 2026-09-02
8
26
 
9
27
  ### Added
@@ -1712,7 +1730,8 @@ All notable changes to MCP Scraper are documented here. The format is based on [
1712
1730
  - Write actions remain unavailable until the account owner explicitly enables them.
1713
1731
  - Provider-specific connection data is normalized into one agent-facing contract.
1714
1732
 
1715
- [Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.87.0...HEAD
1733
+ [Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.88.0...HEAD
1734
+ [0.88.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.87.0...v0.88.0
1716
1735
  [0.87.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.86.5...v0.87.0
1717
1736
  [0.86.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.85.0...v0.86.0
1718
1737
  [0.84.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.5...v0.84.0
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.87.0`, SHA-256 `4805165c18efda420136b9d00862a6d658dd0d4c7bef6d6b77bcb94922ce4d38`). 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.1`, SHA-256 `f08c1c24f5537e4ba5fdaa9abac2124b38b1c05dc00c4a67596e51717731f78a`). 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
 
@@ -350,9 +350,9 @@ The `mcp-scraper` server (and the MCPB bundle, which runs it) exposes both secti
350
350
 
351
351
  All MCP tools return `structuredContent` with the IDs, URLs, CSV paths, transcripts, browser session handles, replay paths, artifacts, recipe fields, or blueprint fields needed by the next step, plus readable text content for compatibility. Runtime `tools/list` omits output schemas so strict clients can register the complete catalog; the generated developer manifest retains every canonical output schema for validation and typed SDK generation. All tools carry MCP annotations; file-writing tools such as replay downloads and annotations state their filesystem side effects.
352
352
 
353
- The canonical tool inventory is generated at `docs/mcp-tool-manifest.generated.json`. The unified server exposes 377 tools: 249 scraper, browser, workflow, billing, connected-service, and personal-assistant tools plus 128 durable-memory tools. The scraper-side inventory includes complete Gmail selection, message, attachment, export, bulk-action, and Memory-import workflows; governed personal-assistant commands, messaging, approvals, grants, number setup, and execution readback; durable PAA starts and status; rendered site-content similarity; governed Local Sourcebook and Transparent Commons workflows; direct site-export reads; Editorial Reading Room and News Publisher templates; and production X-Ray setup, analytics, seven-model attribution, structured post-purchase surveys, reported impact, truthful view-evidence status, CRM policy and receipt, campaign, export, and scheduled-report tools. Provider setup remains absent until its authorization, ingestion, reconciliation, privacy, canary, cleanup, and deployment receipts are complete. Successful evidence-compiled Local Sourcebook revisions publish automatically to their canonical `localsourcebook.com` category profile and review URLs; administrator controls handle exceptional rejection or unpublishing. Release verification compares the exact local and hosted tool-name sets, not only the count.
353
+ The canonical tool inventory is generated at `docs/mcp-tool-manifest.generated.json`. The unified server exposes 375 tools: 249 scraper, browser, workflow, billing, connected-service, and personal-assistant tools plus 126 durable-memory tools. The two retired customer credential mutations are no longer advertised. The scraper-side inventory includes complete Gmail selection, message, attachment, export, bulk-action, and Memory-import workflows; governed personal-assistant commands, messaging, approvals, grants, number setup, and execution readback; durable PAA starts and status; rendered site-content similarity; governed Local Sourcebook and Transparent Commons workflows; direct site-export reads; Editorial Reading Room and News Publisher templates; and production X-Ray setup, analytics, seven-model attribution, structured post-purchase surveys, reported impact, truthful view-evidence status, CRM policy and receipt, campaign, export, and scheduled-report tools. Provider setup remains absent until its authorization, ingestion, reconciliation, privacy, canary, cleanup, and deployment receipts are complete. Successful evidence-compiled Local Sourcebook revisions publish automatically to their canonical `localsourcebook.com` category profile and review URLs; administrator controls handle exceptional rejection or unpublishing. Release verification compares the exact local and hosted tool-name sets, not only the count.
354
354
 
355
- For contract parity, stdio and MCPB memory calls invoke the matching public tool on the hosted MCP Scraper `/mcp` endpoint. The hosted aggregate runtime owns MCP Scraper-specific billing, scheduling, credential, and in-process cutover policy; its internal `/memory/mcp-call` bridge is a fallback to the standalone memory service, not the public stdio execution path. Direct `mcp-memory` OAuth and stdio clients continue to use `memory.mcpscraper.dev` and must be verified as a separate dependent release surface.
355
+ For contract parity, stdio and MCPB memory calls invoke the matching public tool on the hosted MCP Scraper `/mcp` endpoint. The hosted aggregate runtime owns MCP Scraper-specific billing, scheduling, credential, and in-process cutover policy; its internal `/memory/mcp-call` bridge is a fallback to the standalone Memory service, not a second customer setup path. Existing direct Memory credentials remain compatible for one release, but all new customer setup uses the root endpoint and `MCP_SCRAPER_API_KEY`.
356
356
 
357
357
  ## Resources
358
358
 
@@ -17,8 +17,8 @@ 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-4QWARJET.js"),
21
- import("../worker-DAVCZ3FP.js"),
20
+ import("../server-JCJML2EW.js"),
21
+ import("../worker-LDCAULWL.js"),
22
22
  import("../db-Z34LPZNR.js")
23
23
  ]);
24
24
  const PORT = parseInt(process.env.PORT ?? "3001");
@@ -6,9 +6,9 @@ import {
6
6
  openWorkflowReport,
7
7
  runWorkflow,
8
8
  workflowOutputBaseDir
9
- } from "../chunk-6IOGTFNS.js";
9
+ } from "../chunk-UZPTGUDV.js";
10
10
  import "../chunk-RJ7JVYKU.js";
11
- import "../chunk-OWF2JJKN.js";
11
+ import "../chunk-GXBZXWXB.js";
12
12
  import {
13
13
  XRAY_INSTALL_CONTRACT,
14
14
  XRAY_INSTALL_PROTOCOL_DIGEST,
@@ -19,7 +19,7 @@ import {
19
19
  import "../chunk-GGZEC22A.js";
20
20
  import {
21
21
  PACKAGE_VERSION
22
- } from "../chunk-Y3AIFO7C.js";
22
+ } from "../chunk-HIMFLGLV.js";
23
23
 
24
24
  // src/cli/human-cli.ts
25
25
  import { Command } from "commander";
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runMcpScraperStdio
4
- } from "../chunk-6XDNIYGP.js";
5
- import "../chunk-XX6XUZQM.js";
4
+ } from "../chunk-65OWZPWE.js";
5
+ import "../chunk-EG2PDKD7.js";
6
6
  import "../chunk-PGJQDMC2.js";
7
7
  import "../chunk-DNM65UCK.js";
8
8
  import "../chunk-T3MZISOF.js";
9
9
  import "../chunk-6HAV7LCE.js";
10
- import "../chunk-NKRO2SUO.js";
10
+ import "../chunk-4QMUF6XM.js";
11
11
  import "../chunk-OM7HVEJ3.js";
12
12
  import "../chunk-OPQIGAFB.js";
13
- import "../chunk-UDLPENTY.js";
13
+ import "../chunk-ABF2CGOZ.js";
14
14
  import "../chunk-P7FWOMU7.js";
15
15
  import "../chunk-GGZEC22A.js";
16
- import "../chunk-Y3AIFO7C.js";
16
+ import "../chunk-HIMFLGLV.js";
17
17
  import "../chunk-YXNDOQXN.js";
18
18
 
19
19
  // src/mcp/thorbit-restricted-tool-surface.ts
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  renderInstallTerminal
4
- } from "../chunk-UDLPENTY.js";
4
+ } from "../chunk-ABF2CGOZ.js";
5
5
  import {
6
6
  PACKAGE_VERSION
7
- } from "../chunk-Y3AIFO7C.js";
7
+ } from "../chunk-HIMFLGLV.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,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runMcpScraperStdio
4
- } from "../chunk-6XDNIYGP.js";
5
- import "../chunk-XX6XUZQM.js";
4
+ } from "../chunk-65OWZPWE.js";
5
+ import "../chunk-EG2PDKD7.js";
6
6
  import "../chunk-PGJQDMC2.js";
7
7
  import "../chunk-DNM65UCK.js";
8
8
  import "../chunk-T3MZISOF.js";
9
9
  import "../chunk-6HAV7LCE.js";
10
- import "../chunk-NKRO2SUO.js";
10
+ import "../chunk-4QMUF6XM.js";
11
11
  import "../chunk-OM7HVEJ3.js";
12
12
  import "../chunk-OPQIGAFB.js";
13
- import "../chunk-UDLPENTY.js";
13
+ import "../chunk-ABF2CGOZ.js";
14
14
  import "../chunk-P7FWOMU7.js";
15
15
  import "../chunk-GGZEC22A.js";
16
- import "../chunk-Y3AIFO7C.js";
16
+ import "../chunk-HIMFLGLV.js";
17
17
  import "../chunk-YXNDOQXN.js";
18
18
 
19
19
  // bin/mcp-stdio-server.ts
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  harvest
4
- } from "../chunk-R2HRN2FW.js";
4
+ } from "../chunk-S24LFPL7.js";
5
5
  import {
6
6
  browserServiceApiKey
7
7
  } from "../chunk-OM7HVEJ3.js";
8
8
  import "../chunk-OPQIGAFB.js";
9
- import "../chunk-OWF2JJKN.js";
9
+ import "../chunk-GXBZXWXB.js";
10
10
  import "../chunk-YXNDOQXN.js";
11
11
 
12
12
  // src/cli.ts
@@ -213,9 +213,9 @@ var PUBLIC_PRODUCT_CONTRACT = {
213
213
  "freeSignupCredits": 0
214
214
  },
215
215
  "inventory": {
216
- "totalTools": 377,
216
+ "totalTools": 375,
217
217
  "scraperTools": 249,
218
- "memoryTools": 128
218
+ "memoryTools": 126
219
219
  },
220
220
  "concurrencyPack": {
221
221
  "ratePolicyVersion": "2026-08-14.concurrency-pack-v1",
@@ -12,13 +12,13 @@ import {
12
12
  registerScheduledResultsMcpTools,
13
13
  registerSerpIntelligenceCaptureTools,
14
14
  resolveDeploymentProfile
15
- } from "./chunk-XX6XUZQM.js";
15
+ } from "./chunk-EG2PDKD7.js";
16
16
  import {
17
17
  renderInstallTerminal
18
- } from "./chunk-UDLPENTY.js";
18
+ } from "./chunk-ABF2CGOZ.js";
19
19
  import {
20
20
  PACKAGE_VERSION
21
- } from "./chunk-Y3AIFO7C.js";
21
+ } from "./chunk-HIMFLGLV.js";
22
22
 
23
23
  // src/mcp/stdio-runtime.ts
24
24
  import { readFileSync } from "fs";
@@ -55,7 +55,7 @@ function renderInstallTerminal(options) {
55
55
  "1/1 install surfaces ready",
56
56
  colorize(`Newest in v${options.version}: ${release_message_default.message}`, "lime", color),
57
57
  "",
58
- `${colorize("Tools", "cyan", color)} ${colorize("(377 MCP tools)", "muted", color)}`,
58
+ `${colorize("Tools", "cyan", color)} ${colorize("(375 MCP tools)", "muted", color)}`,
59
59
  toolRow("search", ["harvest_paa", "search_serp", "maps_search", "maps_place_intel"], color),
60
60
  toolRow("extract", ["extract_url", "map_site_urls", "extract_site", "audit_site", "directory_workflow"], color),
61
61
  toolRow("build", ["create_editorial_reading_room", "rank_tracker_workflow", "portable HTML"], color),
@@ -26,7 +26,7 @@ import {
26
26
  PAA_QUESTION_CREDITS,
27
27
  PAGE_SCRAPE_CREDITS,
28
28
  SERP_SEARCH_CREDITS
29
- } from "./chunk-NKRO2SUO.js";
29
+ } from "./chunk-4QMUF6XM.js";
30
30
  import {
31
31
  browserServiceProfileName,
32
32
  browserServiceProfileSaveChanges
@@ -50,7 +50,7 @@ import {
50
50
  } from "./chunk-P7FWOMU7.js";
51
51
  import {
52
52
  PACKAGE_VERSION
53
- } from "./chunk-Y3AIFO7C.js";
53
+ } from "./chunk-HIMFLGLV.js";
54
54
  import {
55
55
  PUBLIC_ERROR_CODES,
56
56
  buildPublicErrorEnvelope,
@@ -22680,11 +22680,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
22680
22680
  "type": "object",
22681
22681
  "properties": {
22682
22682
  "ok": {
22683
- "type": "boolean",
22684
- "enum": [
22685
- true,
22686
- false
22687
- ]
22683
+ "type": "boolean"
22688
22684
  },
22689
22685
  "project": {
22690
22686
  "type": "object",
@@ -22752,11 +22748,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
22752
22748
  "type": "object",
22753
22749
  "properties": {
22754
22750
  "ok": {
22755
- "type": "boolean",
22756
- "enum": [
22757
- true,
22758
- false
22759
- ]
22751
+ "type": "boolean"
22760
22752
  },
22761
22753
  "projects": {
22762
22754
  "type": "array",
@@ -22852,11 +22844,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
22852
22844
  "type": "object",
22853
22845
  "properties": {
22854
22846
  "ok": {
22855
- "type": "boolean",
22856
- "enum": [
22857
- true,
22858
- false
22859
- ]
22847
+ "type": "boolean"
22860
22848
  },
22861
22849
  "folder": {
22862
22850
  "type": "object",
@@ -22939,11 +22927,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
22939
22927
  "type": "object",
22940
22928
  "properties": {
22941
22929
  "ok": {
22942
- "type": "boolean",
22943
- "enum": [
22944
- true,
22945
- false
22946
- ]
22930
+ "type": "boolean"
22947
22931
  },
22948
22932
  "folders": {
22949
22933
  "type": "array",
@@ -23101,11 +23085,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23101
23085
  "type": "object",
23102
23086
  "properties": {
23103
23087
  "ok": {
23104
- "type": "boolean",
23105
- "enum": [
23106
- true,
23107
- false
23108
- ]
23088
+ "type": "boolean"
23109
23089
  },
23110
23090
  "asset": {
23111
23091
  "type": "object",
@@ -23143,6 +23123,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23143
23123
  "bytes": {
23144
23124
  "type": "number"
23145
23125
  },
23126
+ "sha256": {
23127
+ "type": "string",
23128
+ "pattern": "^[0-9a-f]{64}$"
23129
+ },
23146
23130
  "width": {
23147
23131
  "type": "number"
23148
23132
  },
@@ -23212,6 +23196,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23212
23196
  "sourceKind",
23213
23197
  "mimeType",
23214
23198
  "bytes",
23199
+ "sha256",
23215
23200
  "width",
23216
23201
  "height",
23217
23202
  "projectId",
@@ -23280,11 +23265,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23280
23265
  "type": "object",
23281
23266
  "properties": {
23282
23267
  "ok": {
23283
- "type": "boolean",
23284
- "enum": [
23285
- true,
23286
- false
23287
- ]
23268
+ "type": "boolean"
23288
23269
  },
23289
23270
  "asset": {
23290
23271
  "type": "object",
@@ -23322,6 +23303,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23322
23303
  "bytes": {
23323
23304
  "type": "number"
23324
23305
  },
23306
+ "sha256": {
23307
+ "type": "string",
23308
+ "pattern": "^[0-9a-f]{64}$"
23309
+ },
23325
23310
  "width": {
23326
23311
  "type": "number"
23327
23312
  },
@@ -23391,6 +23376,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23391
23376
  "sourceKind",
23392
23377
  "mimeType",
23393
23378
  "bytes",
23379
+ "sha256",
23394
23380
  "width",
23395
23381
  "height",
23396
23382
  "projectId",
@@ -23496,11 +23482,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23496
23482
  "type": "object",
23497
23483
  "properties": {
23498
23484
  "ok": {
23499
- "type": "boolean",
23500
- "enum": [
23501
- true,
23502
- false
23503
- ]
23485
+ "type": "boolean"
23504
23486
  },
23505
23487
  "assets": {
23506
23488
  "type": "array",
@@ -23540,6 +23522,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23540
23522
  "bytes": {
23541
23523
  "type": "number"
23542
23524
  },
23525
+ "sha256": {
23526
+ "type": "string",
23527
+ "pattern": "^[0-9a-f]{64}$"
23528
+ },
23543
23529
  "width": {
23544
23530
  "type": "number"
23545
23531
  },
@@ -23609,6 +23595,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23609
23595
  "sourceKind",
23610
23596
  "mimeType",
23611
23597
  "bytes",
23598
+ "sha256",
23612
23599
  "width",
23613
23600
  "height",
23614
23601
  "projectId",
@@ -23739,11 +23726,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23739
23726
  "type": "object",
23740
23727
  "properties": {
23741
23728
  "ok": {
23742
- "type": "boolean",
23743
- "enum": [
23744
- true,
23745
- false
23746
- ]
23729
+ "type": "boolean"
23747
23730
  },
23748
23731
  "results": {
23749
23732
  "type": "array",
@@ -23786,6 +23769,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23786
23769
  "bytes": {
23787
23770
  "type": "number"
23788
23771
  },
23772
+ "sha256": {
23773
+ "type": "string",
23774
+ "pattern": "^[0-9a-f]{64}$"
23775
+ },
23789
23776
  "width": {
23790
23777
  "type": "number"
23791
23778
  },
@@ -23855,6 +23842,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23855
23842
  "sourceKind",
23856
23843
  "mimeType",
23857
23844
  "bytes",
23845
+ "sha256",
23858
23846
  "width",
23859
23847
  "height",
23860
23848
  "projectId",
@@ -23964,11 +23952,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
23964
23952
  "type": "object",
23965
23953
  "properties": {
23966
23954
  "ok": {
23967
- "type": "boolean",
23968
- "enum": [
23969
- true,
23970
- false
23971
- ]
23955
+ "type": "boolean"
23972
23956
  },
23973
23957
  "asset": {
23974
23958
  "type": "object",
@@ -24006,6 +23990,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
24006
23990
  "bytes": {
24007
23991
  "type": "number"
24008
23992
  },
23993
+ "sha256": {
23994
+ "type": "string",
23995
+ "pattern": "^[0-9a-f]{64}$"
23996
+ },
24009
23997
  "width": {
24010
23998
  "type": "number"
24011
23999
  },
@@ -24075,6 +24063,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
24075
24063
  "sourceKind",
24076
24064
  "mimeType",
24077
24065
  "bytes",
24066
+ "sha256",
24078
24067
  "width",
24079
24068
  "height",
24080
24069
  "projectId",
@@ -24139,11 +24128,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
24139
24128
  "type": "object",
24140
24129
  "properties": {
24141
24130
  "ok": {
24142
- "type": "boolean",
24143
- "enum": [
24144
- true,
24145
- false
24146
- ]
24131
+ "type": "boolean"
24147
24132
  },
24148
24133
  "deleted": {
24149
24134
  "type": "boolean"
@@ -32304,6 +32289,10 @@ var MEMORY_TOOL_SCHEMAS = [
32304
32289
  var MEMORY_TOOL_DESCRIPTION_OVERRIDES = {
32305
32290
  "access-swap-vault": "Set the account's persisted active vault so later memory calls may omit vault and use it by default across stateless requests. The vault must be entitled to the key and the key must hold 'swap' scope."
32306
32291
  };
32292
+ var LEGACY_DIRECT_CREDENTIAL_TOOL_IDS = /* @__PURE__ */ new Set([
32293
+ "access-issue-key",
32294
+ "access-set-scope"
32295
+ ]);
32307
32296
  var MEMORY_TOOL_REGISTRY = [
32308
32297
  ...MEMORY_TOOL_SCHEMAS.map((schema) => ({
32309
32298
  ...schema,
@@ -32311,7 +32300,7 @@ var MEMORY_TOOL_REGISTRY = [
32311
32300
  })),
32312
32301
  ...MEMORY_GOVERNED_TOOL_SCHEMAS,
32313
32302
  ...MEMORY_IMAGE_TOOL_SCHEMAS
32314
- ];
32303
+ ].filter((schema) => !LEGACY_DIRECT_CREDENTIAL_TOOL_IDS.has(schema.id));
32315
32304
 
32316
32305
  // src/mcp/memory-mcp-server.ts
32317
32306
  function registerMemoryMcpTools(server, executor) {
@@ -150,18 +150,18 @@ var RawMapsAboutAttributeSchema = z.object({
150
150
 
151
151
  // src/output/memory-library-sink.ts
152
152
  async function postToMemoryLibrary(args) {
153
- const url = process.env.MCP_MEMORY_INGEST_URL;
154
- const key = process.env.MCP_MEMORY_KEY;
155
- if (!url || !key) return;
153
+ const key = process.env.MCP_SCRAPER_API_KEY?.trim();
154
+ const baseUrl = (process.env.MCP_SCRAPER_BASE_URL ?? "https://mcpscraper.dev").replace(/\/$/, "");
155
+ if (!key) return;
156
156
  try {
157
- const res = await fetch(url, {
157
+ const res = await fetch(`${baseUrl}/memory/mcp-call`, {
158
158
  method: "POST",
159
- headers: { "content-type": "application/json" },
160
- body: JSON.stringify({ data: { apiKey: key, title: args.title, content: args.content, source: args.source } })
159
+ headers: { "content-type": "application/json", "x-api-key": key },
160
+ body: JSON.stringify({ toolName: "libraryIngestTool", args })
161
161
  });
162
162
  const body = await res.json().catch(() => null);
163
- if (!res.ok || body?.result?.error) {
164
- console.warn("[memory-library-sink] ingest not accepted:", res.status, body?.result?.message ?? "");
163
+ if (!res.ok || body?.ok === false) {
164
+ console.warn("[memory-library-sink] ingest not accepted:", res.status, body?.error ?? "");
165
165
  }
166
166
  } catch (err) {
167
167
  console.warn("[memory-library-sink] ingest failed:", err?.message);
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var PACKAGE_VERSION = "0.87.0";
2
+ var PACKAGE_VERSION = "0.88.1";
3
3
 
4
4
  export {
5
5
  PACKAGE_VERSION
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-DNM65UCK.js";
8
8
  import {
9
9
  LedgerOperation
10
- } from "./chunk-NKRO2SUO.js";
10
+ } from "./chunk-4QMUF6XM.js";
11
11
  import {
12
12
  CREDIT_LOT_TTL,
13
13
  getDb,
@@ -19,7 +19,7 @@ import {
19
19
  LedgerOperation,
20
20
  MC_PER_CREDIT,
21
21
  calculateConnectedUsageCharge
22
- } from "./chunk-NKRO2SUO.js";
22
+ } from "./chunk-4QMUF6XM.js";
23
23
  import {
24
24
  recordVendorUsage,
25
25
  runWithCostContext
@@ -15,7 +15,7 @@ import {
15
15
  RawPAAItemSchema,
16
16
  postToMemoryLibrary,
17
17
  recencyToTbs
18
- } from "./chunk-OWF2JJKN.js";
18
+ } from "./chunk-GXBZXWXB.js";
19
19
  import {
20
20
  CaptchaError,
21
21
  ExtractionError,
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  DEFAULT_MAPS_PROXY_MODE,
6
6
  postToMemoryLibrary
7
- } from "./chunk-OWF2JJKN.js";
7
+ } from "./chunk-GXBZXWXB.js";
8
8
  import {
9
9
  buildSerpEmailQuery,
10
10
  contactAttemptUrls,
@@ -10,7 +10,7 @@ import {
10
10
  createSiteExtractContentReader,
11
11
  createSiteExtractImageArtifact,
12
12
  extractJobLimitInfo
13
- } from "./chunk-KQWVJOVR.js";
13
+ } from "./chunk-IHXAXYIS.js";
14
14
  import "./chunk-OZJMVCDK.js";
15
15
  import {
16
16
  computeIssues,
@@ -19,7 +19,7 @@ import {
19
19
  renderLinkReport
20
20
  } from "./chunk-PGJQDMC2.js";
21
21
  import "./chunk-DNM65UCK.js";
22
- import "./chunk-NKRO2SUO.js";
22
+ import "./chunk-4QMUF6XM.js";
23
23
  import "./chunk-GGZEC22A.js";
24
24
  import {
25
25
  getDb
@@ -7,10 +7,10 @@ import {
7
7
  GmailServiceError,
8
8
  normalizeGmailMessage,
9
9
  parseGmailAddresses
10
- } from "./chunk-WFGAR4BZ.js";
10
+ } from "./chunk-MZDNZQWT.js";
11
11
  import "./chunk-C5Z4OFKW.js";
12
12
  import "./chunk-T3MZISOF.js";
13
- import "./chunk-NKRO2SUO.js";
13
+ import "./chunk-4QMUF6XM.js";
14
14
  import "./chunk-OPQIGAFB.js";
15
15
  import "./chunk-YXNDOQXN.js";
16
16
  export {
package/dist/index.cjs CHANGED
@@ -4635,18 +4635,18 @@ var import_papaparse = __toESM(require("papaparse"), 1);
4635
4635
 
4636
4636
  // src/output/memory-library-sink.ts
4637
4637
  async function postToMemoryLibrary(args) {
4638
- const url = process.env.MCP_MEMORY_INGEST_URL;
4639
- const key = process.env.MCP_MEMORY_KEY;
4640
- if (!url || !key) return;
4638
+ const key = process.env.MCP_SCRAPER_API_KEY?.trim();
4639
+ const baseUrl = (process.env.MCP_SCRAPER_BASE_URL ?? "https://mcpscraper.dev").replace(/\/$/, "");
4640
+ if (!key) return;
4641
4641
  try {
4642
- const res = await fetch(url, {
4642
+ const res = await fetch(`${baseUrl}/memory/mcp-call`, {
4643
4643
  method: "POST",
4644
- headers: { "content-type": "application/json" },
4645
- body: JSON.stringify({ data: { apiKey: key, title: args.title, content: args.content, source: args.source } })
4644
+ headers: { "content-type": "application/json", "x-api-key": key },
4645
+ body: JSON.stringify({ toolName: "libraryIngestTool", args })
4646
4646
  });
4647
4647
  const body = await res.json().catch(() => null);
4648
- if (!res.ok || body?.result?.error) {
4649
- console.warn("[memory-library-sink] ingest not accepted:", res.status, body?.result?.message ?? "");
4648
+ if (!res.ok || body?.ok === false) {
4649
+ console.warn("[memory-library-sink] ingest not accepted:", res.status, body?.error ?? "");
4650
4650
  }
4651
4651
  } catch (err) {
4652
4652
  console.warn("[memory-library-sink] ingest failed:", err?.message);
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  harvest
3
- } from "./chunk-R2HRN2FW.js";
3
+ } from "./chunk-S24LFPL7.js";
4
4
  import "./chunk-OM7HVEJ3.js";
5
5
  import {
6
6
  recordVendorUsage
7
7
  } from "./chunk-OPQIGAFB.js";
8
- import "./chunk-OWF2JJKN.js";
8
+ import "./chunk-GXBZXWXB.js";
9
9
  import "./chunk-YXNDOQXN.js";
10
10
 
11
11
  // src/video/VideoGenerator.ts