mcp-scraper 0.80.0 → 0.83.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/CHANGELOG.md +59 -1
- package/README.md +4 -2
- package/dist/{analytics-repository-YOY5KMOD.js → analytics-repository-GA6P5S5J.js} +1 -1
- package/dist/bin/api-server.js +3 -3
- package/dist/bin/mcp-scraper-cli.js +61 -46
- package/dist/bin/mcp-scraper-core.js +7 -7
- package/dist/bin/mcp-scraper-install.js +2 -2
- package/dist/bin/mcp-stdio-server.js +7 -7
- package/dist/bin/paa-harvest.js +2 -2
- package/dist/{chunk-PMONKQGJ.js → chunk-4NZ6JFK5.js} +2 -2
- package/dist/{chunk-VEQPA65D.js → chunk-ACDNW7TG.js} +1 -1
- package/dist/{chunk-ID7J23WP.js → chunk-AIVNZZO3.js} +4 -3
- package/dist/{chunk-VXLU74YZ.js → chunk-BGD7U3AE.js} +207 -1
- package/dist/{chunk-HEUMDX4I.js → chunk-CNAJWRJT.js} +131 -1
- package/dist/{chunk-YPOOARYN.js → chunk-FUG2IRKP.js} +1 -1
- package/dist/{chunk-XBEUZJHS.js → chunk-HGJJQY24.js} +49 -5
- package/dist/{chunk-KNGTQD6U.js → chunk-NH4QAH3X.js} +3 -1
- package/dist/{chunk-5UAFBKJR.js → chunk-OPQIGAFB.js} +24 -5
- package/dist/{chunk-OY25W46Q.js → chunk-QSZXAA5F.js} +3121 -2222
- package/dist/{chunk-P4447RNF.js → chunk-UXVT7FWW.js} +2 -2
- package/dist/{chunk-62W6UER7.js → chunk-ZHPGPVJJ.js} +2 -2
- package/dist/{extract-bundle-232SA7MI.js → extract-bundle-HTWWJD6N.js} +2 -2
- package/dist/{gmail-service-IMUHMRH4.js → gmail-service-VXE7OYNA.js} +3 -3
- package/dist/index.cjs +23 -5
- package/dist/index.js +2 -2
- package/dist/{server-XBRLYGTR.js → server-ICMRDYI4.js} +4789 -2842
- package/dist/{site-extract-repository-VDONDDMR.js → site-extract-repository-Y5WQFSQW.js} +6 -2
- package/dist/{worker-ICCZR443.js → worker-FM3ZRDY4.js} +3 -3
- package/package.json +6 -2
- package/public/.well-known/xray-install.json +178 -0
- package/public/agent-install.md +194 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,61 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.83.0] - 2026-09-01
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Added a digest-bound X-Ray runtime manifest that remotely publishes versioned event rules through the globally installed Pixel, reports bounded selector health, observes SPA and dynamic DOM changes, and preserves consent and privacy boundaries without requiring site-source access.
|
|
12
|
+
- Added pre-registered X-Ray experiments with deterministic assignment, separate exact-revision approval, canary and production states, five allowlisted presentation operations, exposure evidence, fixed-horizon evaluation, sample-ratio checks, and pause/kill rollback controls.
|
|
13
|
+
- Added `analytics_create_experiment`, `analytics_set_experiment_state`, and `analytics_get_experiment`, expanding the governed unified MCP catalog to 363 tools.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- Replaced X-Ray's repository, branch, writer, patch, and draft-PR setup model with one-time global tag verification followed by X-Ray-owned measurement-manifest publication. GitHub remains an optional general integration and is no longer part of X-Ray setup.
|
|
18
|
+
- Advanced the canonical X-Ray install protocol to 2.0.0 and aligned its MCP Resource, Prompt, npm CLI, public Markdown, well-known JSON, REST contract, and dashboard projections around the tag-only control plane.
|
|
19
|
+
|
|
20
|
+
### Migration
|
|
21
|
+
|
|
22
|
+
- Advance the analytics schema to `2026-09-01.1` before enabling runtime manifests or experiments. Existing active event definitions remain compatible and measurement publication does not activate a visitor experiment.
|
|
23
|
+
|
|
24
|
+
## [0.82.0] - 2026-08-31
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- Added `analytics_setup_site` with explicit prepare, apply, and verify operations, durable owner-bound revisions and receipts, whole-site Pixel and CTA discovery, eight-dimensional readiness, and truthful first-customer answers at zero MCP Scraper Credit charge under an active X-Ray entitlement.
|
|
29
|
+
- Added a versioned agent-install protocol across public Markdown/JSON, npm CLI output, an MCP Resource, an owner-isolated setup ResourceTemplate, and the `setup_xray_site` Prompt for Codex, Claude, Cursor, Windsurf, and Cline.
|
|
30
|
+
- Added a trusted internal `xray_entitlement` extraction billing class that persists zero-charge jobs without wallet holds, debit keys, or ledger settlement.
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- Expanded the unified MCP catalog from 356 to 360 tools with operation-specific setup contracts, generated REST parity, private discovery caching where supported, and a measured reviewed catalog budget.
|
|
35
|
+
- Added privacy-safe semantic CTA metadata for placement, component, action, destination, and plan while excluding labels, form values, URLs and query strings, email addresses, phone-like values, and arbitrary datasets.
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
|
|
39
|
+
- Installed exactly one first-party Pixel across both the Next.js marketing application and all eight static/API blog documents, and added reusable semantic CTA tagging to shared marketing components.
|
|
40
|
+
- Removed the duplicate initial PageView caused by pre-granted consent while retaining one PageView for each actual SPA navigation or blocked-to-granted consent transition.
|
|
41
|
+
|
|
42
|
+
## [0.81.0] - 2026-08-31
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
- Added a Kernel-only Reddit workflow that searches DuckDuckGo with a `site:reddit.com` query, switches the same browser to a residential proxy before clicking the selected result, and reads modern Reddit posts plus bounded rendered-comment expansion through dedicated search, thread, and combined REST endpoints.
|
|
47
|
+
- Added a bounded managed-browser backup for Reddit thread hydration after the primary Kernel attempt fails or returns fewer than the semantic target, capped at 25 comments with measured bandwidth, duration, CAPTCHA, closure, and provider-cost telemetry.
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
|
|
51
|
+
- Routed the production `reddit_thread` and `reddit_trending` MCP tools through modern Reddit on Kernel residential sessions, with DuckDuckGo site search for trend discovery; removed Google and old Reddit from their active execution path while preserving tool names, billing rates, bounded partial results, and refunds.
|
|
52
|
+
- Cost probes now include Reddit Kernel sessions and any managed-browser fallback bytes and cost in the same request receipt, and identify when the backup contributed to total cost.
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
|
|
56
|
+
- Reconciled delayed managed-browser fallback telemetry back into its linked cost probe, correcting stored vendor totals and both margin estimates after provider finalization; cost probes now label unresolved provider cost as pending instead of reporting a false zero.
|
|
57
|
+
- Measured the package-entrypoint size guard against files selected by the package publish allowlist while continuing to reject source maps anywhere in the built distribution.
|
|
58
|
+
- Account publishing lists accept hosted routing metadata while retaining strict pagination, filtering, and account isolation.
|
|
59
|
+
- Added a private, paginated publishing inventory for each account’s wiki contributions, publication subdomains and editions, and Local Sourcebook listings, with canonical links and current publication status.
|
|
60
|
+
- Validated Twilio and HubSpot X-Ray webhook signatures against the exact public callback URL instead of an internal deployment origin or Vercel rewrite query, allowing genuine provider events to become live evidence after reverse-proxy delivery.
|
|
61
|
+
|
|
7
62
|
## [0.80.0] - 2026-08-29
|
|
8
63
|
|
|
9
64
|
### Added
|
|
@@ -1524,7 +1579,10 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
1524
1579
|
- Write actions remain unavailable until the account owner explicitly enables them.
|
|
1525
1580
|
- Provider-specific connection data is normalized into one agent-facing contract.
|
|
1526
1581
|
|
|
1527
|
-
[Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.
|
|
1582
|
+
[Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.81.0...HEAD
|
|
1583
|
+
[0.83.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.82.0...v0.83.0
|
|
1584
|
+
[0.82.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.81.0...v0.82.0
|
|
1585
|
+
[0.81.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.80.0...v0.81.0
|
|
1528
1586
|
[0.80.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.79.4...v0.80.0
|
|
1529
1587
|
[0.79.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.79.3...v0.79.4
|
|
1530
1588
|
[0.79.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.79.2...v0.79.3
|
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
MCP Scraper is an MCP server for live web intelligence tools backed by `https://mcpscraper.dev`.
|
|
4
4
|
|
|
5
|
+
The authenticated [Kernel Reddit API](docs/kernel-reddit.md) provides an ordered DuckDuckGo search, runtime residential-proxy handoff, real result click, and modern Reddit reader at `/kernel-reddit`.
|
|
6
|
+
|
|
5
7
|
## Product repository
|
|
6
8
|
|
|
7
9
|
This repository owns the complete private product runtime while preserving independent service and
|
|
@@ -173,7 +175,7 @@ Build the branded one-click bundle:
|
|
|
173
175
|
npm run build:mcpb
|
|
174
176
|
```
|
|
175
177
|
|
|
176
|
-
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.
|
|
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.83.0`, SHA-256 `5f4fb86ff0dd4b7ae2b757037334b815e491cff6bd678e2d57b9240a3d9dde36`). 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.
|
|
177
179
|
|
|
178
180
|
The MCPB install exposes every tool — web-intelligence plus all `browser_*` tools — through the one `mcp-scraper` server.
|
|
179
181
|
|
|
@@ -335,7 +337,7 @@ The `mcp-scraper` server (and the MCPB bundle, which runs it) exposes both secti
|
|
|
335
337
|
|
|
336
338
|
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.
|
|
337
339
|
|
|
338
|
-
The canonical tool inventory is generated at `docs/mcp-tool-manifest.generated.json`. The unified server exposes
|
|
340
|
+
The canonical tool inventory is generated at `docs/mcp-tool-manifest.generated.json`. The unified server exposes 363 tools: 262 scraper, browser, workflow, billing, connected-service, and personal-assistant tools plus 101 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, attribution, CRM policy and receipt, campaign, export, and scheduled-report tools. 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.
|
|
339
341
|
|
|
340
342
|
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.
|
|
341
343
|
|
package/dist/bin/api-server.js
CHANGED
|
@@ -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-
|
|
21
|
-
import("../worker-
|
|
20
|
+
import("../server-ICMRDYI4.js"),
|
|
21
|
+
import("../worker-FM3ZRDY4.js"),
|
|
22
22
|
import("../db-Z34LPZNR.js")
|
|
23
23
|
]);
|
|
24
24
|
const PORT = parseInt(process.env.PORT ?? "3001");
|
|
@@ -26,7 +26,7 @@ async function main() {
|
|
|
26
26
|
await personalAssistantProductionStartup;
|
|
27
27
|
await migrate();
|
|
28
28
|
if (process.env.ANALYTICS_DATABASE_URL) {
|
|
29
|
-
const { migrateAnalytics } = await import("../analytics-repository-
|
|
29
|
+
const { migrateAnalytics } = await import("../analytics-repository-GA6P5S5J.js");
|
|
30
30
|
await migrateAnalytics();
|
|
31
31
|
}
|
|
32
32
|
startWorker();
|
|
@@ -6,14 +6,20 @@ import {
|
|
|
6
6
|
openWorkflowReport,
|
|
7
7
|
runWorkflow,
|
|
8
8
|
workflowOutputBaseDir
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-ACDNW7TG.js";
|
|
10
10
|
import "../chunk-RJ7JVYKU.js";
|
|
11
11
|
import "../chunk-OWF2JJKN.js";
|
|
12
|
-
import
|
|
12
|
+
import {
|
|
13
|
+
XRAY_INSTALL_CONTRACT,
|
|
14
|
+
XRAY_INSTALL_PROTOCOL_DIGEST,
|
|
15
|
+
XRAY_INSTALL_PROTOCOL_VERSION,
|
|
16
|
+
renderXraySetupPrompt,
|
|
17
|
+
xrayHostRecipe
|
|
18
|
+
} from "../chunk-BGD7U3AE.js";
|
|
13
19
|
import "../chunk-GGZEC22A.js";
|
|
14
20
|
import {
|
|
15
21
|
PACKAGE_VERSION
|
|
16
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-FUG2IRKP.js";
|
|
17
23
|
|
|
18
24
|
// src/cli/human-cli.ts
|
|
19
25
|
import { Command } from "commander";
|
|
@@ -38,26 +44,6 @@ function envConfig(options) {
|
|
|
38
44
|
if (options.browserProfileSaveChanges === true) env.BROWSER_AGENT_PROFILE_SAVE_CHANGES = "true";
|
|
39
45
|
return env;
|
|
40
46
|
}
|
|
41
|
-
function tomlInlineTable(value) {
|
|
42
|
-
const entries = Object.entries(value).map(([key, item]) => `${key} = ${JSON.stringify(item)}`);
|
|
43
|
-
return `{ ${entries.join(", ")} }`;
|
|
44
|
-
}
|
|
45
|
-
function renderCodexConfig(options = {}) {
|
|
46
|
-
return [
|
|
47
|
-
"[mcp_servers.mcp-scraper]",
|
|
48
|
-
'command = "npx"',
|
|
49
|
-
`args = ${JSON.stringify(combinedNpxArgs(options))}`,
|
|
50
|
-
`env = ${tomlInlineTable(envConfig(options))}`
|
|
51
|
-
].join("\n");
|
|
52
|
-
}
|
|
53
|
-
function renderClaudeCommand(options = {}) {
|
|
54
|
-
const env = Object.entries(envConfig(options)).map(([key, value]) => ` --env ${key}=${value}`);
|
|
55
|
-
return [
|
|
56
|
-
"claude mcp add mcp-scraper --scope user",
|
|
57
|
-
...env,
|
|
58
|
-
` -- npx ${combinedNpxArgs(options).join(" ")}`
|
|
59
|
-
].join(" \\\n");
|
|
60
|
-
}
|
|
61
47
|
function claudeMcpRemoveArgs() {
|
|
62
48
|
return ["mcp", "remove", "mcp-scraper", "-s", "user"];
|
|
63
49
|
}
|
|
@@ -101,28 +87,26 @@ function claudeMcpAddArgs(options = {}) {
|
|
|
101
87
|
}
|
|
102
88
|
function normalizeAgentHost(host) {
|
|
103
89
|
if (host === "claude-code") return "claude";
|
|
104
|
-
if (host === "claude" ||
|
|
105
|
-
throw new Error('Unknown host "' + host + '". Use: codex, claude, claude-code, or
|
|
90
|
+
if (host === "claude" || XRAY_INSTALL_CONTRACT.hosts.some((candidate) => candidate.id === host)) return host;
|
|
91
|
+
throw new Error('Unknown host "' + host + '". Use: codex, claude, claude-code, claude-desktop, cursor, windsurf, cline, or user-action-only');
|
|
106
92
|
}
|
|
107
|
-
function
|
|
108
|
-
return
|
|
109
|
-
mcpServers: {
|
|
110
|
-
"mcp-scraper": {
|
|
111
|
-
command: "npx",
|
|
112
|
-
args: combinedNpxArgs(options),
|
|
113
|
-
env: envConfig(options)
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}, null, 2);
|
|
93
|
+
function agentHostCapability(host) {
|
|
94
|
+
return xrayHostRecipe(host === "claude" ? "claude-code" : host);
|
|
117
95
|
}
|
|
118
|
-
function renderAgentInstall(host,
|
|
96
|
+
function renderAgentInstall(host, _options = {}) {
|
|
119
97
|
const normalizedHost = normalizeAgentHost(host);
|
|
98
|
+
const recipe = agentHostCapability(normalizedHost);
|
|
120
99
|
const restart = "Restart the MCP client so it starts a fresh npx process.";
|
|
121
|
-
const applyCommand =
|
|
100
|
+
const applyCommand = 'MCP_SCRAPER_API_KEY="$MCP_SCRAPER_API_KEY" npx -y -p mcp-scraper@latest mcp-scraper-cli agent install claude --apply';
|
|
101
|
+
const protocol = `X-Ray install protocol: ${XRAY_INSTALL_PROTOCOL_VERSION} (${XRAY_INSTALL_PROTOCOL_DIGEST})`;
|
|
122
102
|
if (normalizedHost === "codex") {
|
|
123
103
|
return [
|
|
124
104
|
"# Codex MCP config",
|
|
125
|
-
|
|
105
|
+
protocol,
|
|
106
|
+
recipe.exactConfig,
|
|
107
|
+
"",
|
|
108
|
+
`Continuation: ${recipe.continuation}`,
|
|
109
|
+
`Rollback: ${recipe.rollback}`,
|
|
126
110
|
"",
|
|
127
111
|
restart
|
|
128
112
|
].join("\n");
|
|
@@ -130,20 +114,38 @@ function renderAgentInstall(host, options = {}) {
|
|
|
130
114
|
if (normalizedHost === "claude") {
|
|
131
115
|
return [
|
|
132
116
|
"# Claude Code command",
|
|
133
|
-
|
|
117
|
+
protocol,
|
|
118
|
+
recipe.exactConfig,
|
|
134
119
|
"",
|
|
135
120
|
"# One-command Claude Code setup",
|
|
136
121
|
applyCommand,
|
|
137
122
|
"",
|
|
123
|
+
`Continuation: ${recipe.continuation}`,
|
|
124
|
+
`Rollback: ${recipe.rollback}`,
|
|
125
|
+
"",
|
|
126
|
+
restart
|
|
127
|
+
].join("\n");
|
|
128
|
+
}
|
|
129
|
+
if (normalizedHost === "claude-desktop") {
|
|
130
|
+
return [
|
|
131
|
+
"# Claude Desktop config",
|
|
132
|
+
protocol,
|
|
133
|
+
recipe.exactConfig,
|
|
134
|
+
"",
|
|
135
|
+
"Desktop Extension: https://mcpscraper.dev/downloads/mcp-scraper.mcpb",
|
|
136
|
+
`Continuation: ${recipe.continuation}`,
|
|
137
|
+
`Rollback: ${recipe.rollback}`,
|
|
138
138
|
restart
|
|
139
139
|
].join("\n");
|
|
140
140
|
}
|
|
141
141
|
return [
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
`# ${recipe.label} MCP config`,
|
|
143
|
+
protocol,
|
|
144
|
+
recipe.exactConfig,
|
|
144
145
|
"",
|
|
145
|
-
|
|
146
|
-
|
|
146
|
+
`Continuation: ${recipe.continuation}`,
|
|
147
|
+
`Rollback: ${recipe.rollback}`,
|
|
148
|
+
...recipe.restartRequired ? ["", restart] : []
|
|
147
149
|
].join("\n");
|
|
148
150
|
}
|
|
149
151
|
|
|
@@ -288,6 +290,7 @@ function renderDoctor(output) {
|
|
|
288
290
|
|
|
289
291
|
// src/cli/prompts.ts
|
|
290
292
|
var AGENT_PROMPTS = {
|
|
293
|
+
"xray-setup": renderXraySetupPrompt(),
|
|
291
294
|
"agent-packet": [
|
|
292
295
|
"# MCP Scraper Agent Packet Prompt",
|
|
293
296
|
"",
|
|
@@ -561,7 +564,7 @@ function buildHumanCli() {
|
|
|
561
564
|
].join("\n"), false);
|
|
562
565
|
});
|
|
563
566
|
const agent = program.command("agent").description("Generate AI-agent install configs and workflow prompts.");
|
|
564
|
-
agent.command("install <host>").description("Print or apply install/config instructions for
|
|
567
|
+
agent.command("install <host>").description("Print or apply install/config instructions for Codex, Claude, Cursor, Windsurf, Cline, or a handoff-only MCP host.").option("--api-key <key>", "API key to place in generated config").option("--package <spec>", "npm package spec", "mcp-scraper@latest").option("--browser-profile <name>", "Default saved browser profile for browser_open sessions.").option("--save-browser-profile-changes", "Persist cookies and browser storage back to the named browser profile when sessions close").option("--apply", "Apply the config to this client when supported. For Claude Code, this upserts the user-scope mcp-scraper server.").option("--json", "Print machine-readable JSON").action(async (hostInput, opts) => {
|
|
565
568
|
const host = normalizeAgentHost(hostInput);
|
|
566
569
|
const apiKey = opts.apiKey ?? process.env.MCP_SCRAPER_API_KEY;
|
|
567
570
|
if (opts.apply) {
|
|
@@ -631,7 +634,12 @@ ${result.list}` : ""
|
|
|
631
634
|
browserProfileName: opts.browserProfile,
|
|
632
635
|
browserProfileSaveChanges: opts.saveBrowserProfileChanges
|
|
633
636
|
});
|
|
634
|
-
writeOutput(opts.json ? {
|
|
637
|
+
writeOutput(opts.json ? {
|
|
638
|
+
host,
|
|
639
|
+
protocolVersion: XRAY_INSTALL_PROTOCOL_VERSION,
|
|
640
|
+
protocolDigest: XRAY_INSTALL_PROTOCOL_DIGEST,
|
|
641
|
+
text
|
|
642
|
+
} : text, opts.json);
|
|
635
643
|
});
|
|
636
644
|
agent.command("prompt [name]").description("Print an agent prompt template.").option("--json", "Print machine-readable JSON").action((name, opts) => {
|
|
637
645
|
if (!name) {
|
|
@@ -639,7 +647,14 @@ ${result.list}` : ""
|
|
|
639
647
|
return;
|
|
640
648
|
}
|
|
641
649
|
const text = renderPrompt(name);
|
|
642
|
-
writeOutput(opts.json ? {
|
|
650
|
+
writeOutput(opts.json ? {
|
|
651
|
+
name,
|
|
652
|
+
...name === "xray-setup" ? {
|
|
653
|
+
protocolVersion: XRAY_INSTALL_PROTOCOL_VERSION,
|
|
654
|
+
protocolDigest: XRAY_INSTALL_PROTOCOL_DIGEST
|
|
655
|
+
} : {},
|
|
656
|
+
text
|
|
657
|
+
} : text, opts.json);
|
|
643
658
|
});
|
|
644
659
|
const workflow = program.command("workflow").description("Run named SEO workflows.");
|
|
645
660
|
workflow.command("list").description("List available workflows.").option("--json", "Print machine-readable JSON").action((opts) => {
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runMcpScraperStdio
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-AIVNZZO3.js";
|
|
5
|
+
import "../chunk-QSZXAA5F.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-
|
|
10
|
+
import "../chunk-4NZ6JFK5.js";
|
|
11
11
|
import "../chunk-OM7HVEJ3.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-OPQIGAFB.js";
|
|
13
|
+
import "../chunk-UXVT7FWW.js";
|
|
14
|
+
import "../chunk-BGD7U3AE.js";
|
|
15
15
|
import "../chunk-GGZEC22A.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-FUG2IRKP.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-
|
|
4
|
+
} from "../chunk-UXVT7FWW.js";
|
|
5
5
|
import {
|
|
6
6
|
PACKAGE_VERSION
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-FUG2IRKP.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-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-AIVNZZO3.js";
|
|
5
|
+
import "../chunk-QSZXAA5F.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-
|
|
10
|
+
import "../chunk-4NZ6JFK5.js";
|
|
11
11
|
import "../chunk-OM7HVEJ3.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-OPQIGAFB.js";
|
|
13
|
+
import "../chunk-UXVT7FWW.js";
|
|
14
|
+
import "../chunk-BGD7U3AE.js";
|
|
15
15
|
import "../chunk-GGZEC22A.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-FUG2IRKP.js";
|
|
17
17
|
import "../chunk-YXNDOQXN.js";
|
|
18
18
|
|
|
19
19
|
// bin/mcp-stdio-server.ts
|
package/dist/bin/paa-harvest.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
harvest
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-NH4QAH3X.js";
|
|
5
5
|
import {
|
|
6
6
|
browserServiceApiKey
|
|
7
7
|
} from "../chunk-OM7HVEJ3.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-OPQIGAFB.js";
|
|
9
9
|
import "../chunk-OWF2JJKN.js";
|
|
10
10
|
import "../chunk-YXNDOQXN.js";
|
|
11
11
|
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
registerScheduledResultsMcpTools,
|
|
13
13
|
registerSerpIntelligenceCaptureTools,
|
|
14
14
|
resolveDeploymentProfile
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-QSZXAA5F.js";
|
|
16
16
|
import {
|
|
17
17
|
renderInstallTerminal
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-UXVT7FWW.js";
|
|
19
19
|
import {
|
|
20
20
|
PACKAGE_VERSION
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-FUG2IRKP.js";
|
|
22
22
|
|
|
23
23
|
// src/mcp/stdio-runtime.ts
|
|
24
24
|
import { readFileSync } from "fs";
|
|
@@ -156,6 +156,7 @@ function buildStdioServer(requiredApiKey, options = {}) {
|
|
|
156
156
|
cacheHints: {
|
|
157
157
|
"server/discover": { ttlMs: 3e5, cacheScope: "private" },
|
|
158
158
|
"tools/list": { ttlMs: 3e5, cacheScope: "private" },
|
|
159
|
+
"prompts/list": { ttlMs: 3e5, cacheScope: "private" },
|
|
159
160
|
"resources/list": { ttlMs: 3e5, cacheScope: "private" },
|
|
160
161
|
"resources/templates/list": { ttlMs: 3e5, cacheScope: "private" },
|
|
161
162
|
"resources/read": { ttlMs: 6e4, cacheScope: "private" }
|