mcp-scraper 0.83.5 → 0.85.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 +41 -1
- package/README.md +2 -2
- package/dist/{analytics-repository-GA6P5S5J.js → analytics-repository-4VZQ4TKW.js} +9 -1
- package/dist/bin/api-server.js +3 -3
- package/dist/bin/mcp-scraper-cli.js +3 -3
- package/dist/bin/mcp-scraper-core.js +6 -6
- package/dist/bin/mcp-scraper-install.js +2 -2
- package/dist/bin/mcp-stdio-server.js +6 -6
- package/dist/{chunk-VJHMPJR7.js → chunk-2ZDYUTOZ.js} +3 -3
- package/dist/{chunk-ACDNW7TG.js → chunk-6IOGTFNS.js} +1 -1
- package/dist/{chunk-HGJJQY24.js → chunk-C7OKENCR.js} +1 -1
- package/dist/{chunk-BGD7U3AE.js → chunk-P7FWOMU7.js} +10 -4
- package/dist/{chunk-2B636U7P.js → chunk-RHAOKXQK.js} +1 -1
- package/dist/{chunk-CNAJWRJT.js → chunk-TLRJV4SL.js} +583 -29
- package/dist/{chunk-ZHPGPVJJ.js → chunk-W3SGF7GX.js} +33 -7
- package/dist/{chunk-2BOBOKFQ.js → chunk-W4IY6CB4.js} +2858 -1328
- package/dist/{chunk-UXVT7FWW.js → chunk-WN7N4ESQ.js} +2 -2
- package/dist/{chunk-4NZ6JFK5.js → chunk-X5HRAAQM.js} +2 -2
- package/dist/{extract-bundle-HTWWJD6N.js → extract-bundle-NSMGHEG6.js} +2 -2
- package/dist/{gmail-service-VXE7OYNA.js → gmail-service-BTRAHGJS.js} +2 -2
- package/dist/{server-2E4YF6TY.js → server-EOPETL7Q.js} +2291 -2267
- package/dist/{site-extract-repository-Y5WQFSQW.js → site-extract-repository-DWU52BRQ.js} +2 -2
- package/dist/{worker-FM3ZRDY4.js → worker-5A375BGN.js} +1 -1
- package/package.json +1 -1
- package/public/.well-known/xray-install.json +9 -4
- package/public/agent-install.md +8 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,45 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.85.0] - 2026-09-01
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Corrected X-Ray's public contract to a provider-neutral measurement foundation: the Pixel, seven observed attribution models, structured post-purchase surveys, explicit Observed + Reported impact, privacy lifecycle, and truthful unavailable view-evidence states remain supported.
|
|
12
|
+
- Advanced the X-Ray install protocol to 3.0.0 and removed provider authorization and revenue-source continuations from generated install guidance.
|
|
13
|
+
|
|
14
|
+
### Removed
|
|
15
|
+
|
|
16
|
+
- Removed the four revenue-source setup MCP tools, five REST operations, revenue-setup ResourceTemplate, Stripe dashboard workflow, and deployable Stripe, Salesforce, and Pipedrive Nango registrations until each provider has complete production receipts.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Routed the public X-Ray product page and nested attribution and SaaS guides through the canonical `mcpscraper.dev` host instead of leaving the successfully deployed web routes unreachable behind the API project.
|
|
21
|
+
|
|
22
|
+
## [0.84.0] - 2026-09-01
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- Added authoritative SaaS revenue connections with one primary source per outcome family, canonical outcome keys, replay-safe reconciliation, value restatements, and observation-only comparison sources that cannot create duplicate revenue.
|
|
27
|
+
- Added versioned post-purchase surveys and an opt-in Observed + Reported impact report that keeps customer answers separate from deterministic touches, requires explicit weights, and conserves attribution credit and revenue per currency.
|
|
28
|
+
- Added ten operation-specific X-Ray MCP tools plus methodology and revenue-setup Resources for revenue setup, survey lifecycle, impact reporting, and provider-backed view availability.
|
|
29
|
+
- Added a governed Stripe subscription connector for account readiness and bounded outcome reconciliation; credentials continue to move through the authorized connection flow rather than tool input.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- Expanded SaaS setup into one evidence-derived sequence covering the global tag, advertising, lifecycle channels, revenue authority, calls and demos, currency and timezone, consent, and a server-confirmed outcome test.
|
|
34
|
+
- View-through attribution now reports unavailable or unproven unless an eligible event-level provider receipt can join to a consented subject; aggregate impression reports remain comparison evidence only.
|
|
35
|
+
- Advanced the X-Ray install protocol to 2.1.0 and expanded the generated analytics REST contract to cover revenue, surveys, methodology, reported impact, and view-evidence status.
|
|
36
|
+
|
|
37
|
+
### Security
|
|
38
|
+
|
|
39
|
+
- Added privacy lifecycle coverage for revenue authorities, provider customer bindings, immutable outcome versions, survey invitations and answers, reported influences, and provider-view receipts.
|
|
40
|
+
- Survey delivery uses opaque single-use invitations, a server-issued session cookie, strict origin controls, bounded structured answers, and no contact fields, free text, raw invitation tokens, or provider credentials in analytics records.
|
|
41
|
+
|
|
42
|
+
### Migration
|
|
43
|
+
|
|
44
|
+
- Advance the analytics schema before enabling SaaS revenue authorities or post-purchase surveys. Survey publication remains gated until approved disclosure copy is configured, and provider-backed view reporting remains unavailable until lawful event-level evidence is proven.
|
|
45
|
+
|
|
7
46
|
## [0.83.5] - 2026-09-01
|
|
8
47
|
|
|
9
48
|
### Fixed
|
|
@@ -1612,7 +1651,8 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
1612
1651
|
- Write actions remain unavailable until the account owner explicitly enables them.
|
|
1613
1652
|
- Provider-specific connection data is normalized into one agent-facing contract.
|
|
1614
1653
|
|
|
1615
|
-
[Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.
|
|
1654
|
+
[Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.84.0...HEAD
|
|
1655
|
+
[0.84.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.5...v0.84.0
|
|
1616
1656
|
[0.83.5]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.4...v0.83.5
|
|
1617
1657
|
[0.83.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.3...v0.83.4
|
|
1618
1658
|
[0.83.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.2...v0.83.3
|
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.
|
|
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.85.0`, SHA-256 `2410fb6216af649dba24e62df9fa438b85e02c5ed2d3610f9e630314c0a0c2fb`). 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
|
|
|
@@ -337,7 +337,7 @@ The `mcp-scraper` server (and the MCPB bundle, which runs it) exposes both secti
|
|
|
337
337
|
|
|
338
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.
|
|
339
339
|
|
|
340
|
-
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 369 tools: 268 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, 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.
|
|
341
341
|
|
|
342
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.
|
|
343
343
|
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
analyticsOverview,
|
|
19
19
|
analyticsPaths,
|
|
20
20
|
analyticsTimeseries,
|
|
21
|
+
appendAnalyticsAuthoritativeOutcomeVersion,
|
|
21
22
|
archiveAnalyticsActivationDestination,
|
|
22
23
|
archiveAnalyticsCampaignLink,
|
|
23
24
|
backfillAnalyticsConfirmedHistory,
|
|
@@ -26,6 +27,7 @@ import {
|
|
|
26
27
|
closeAnalyticsPool,
|
|
27
28
|
completeAnalyticsCrmImportRow,
|
|
28
29
|
completeAnalyticsFormDelivery,
|
|
30
|
+
consumeAnalyticsSurveyInvite,
|
|
29
31
|
createAnalyticsActivationDestination,
|
|
30
32
|
createAnalyticsCampaignLink,
|
|
31
33
|
createAnalyticsConversion,
|
|
@@ -44,6 +46,7 @@ import {
|
|
|
44
46
|
getPublicAnalyticsForm,
|
|
45
47
|
identityHmac,
|
|
46
48
|
ingestAnalyticsEvents,
|
|
49
|
+
insertAnalyticsRevenueSetupRevision,
|
|
47
50
|
isAnalyticsFormPlacementApproved,
|
|
48
51
|
linkAnalyticsFormIdentity,
|
|
49
52
|
linkAnalyticsIdentityInTransaction,
|
|
@@ -63,6 +66,7 @@ import {
|
|
|
63
66
|
normalizeObservedHostname,
|
|
64
67
|
pollAnalyticsActivationDiagnostics,
|
|
65
68
|
prepareAnalyticsLinkerIssue,
|
|
69
|
+
projectAnalyticsAuthoritativeConversion,
|
|
66
70
|
projectAnalyticsPixelEventConsent,
|
|
67
71
|
queueAnalyticsActivation,
|
|
68
72
|
queueAnalyticsFormDelivery,
|
|
@@ -85,7 +89,7 @@ import {
|
|
|
85
89
|
updateAnalyticsPixel,
|
|
86
90
|
upsertAnalyticsAdSpend,
|
|
87
91
|
upsertAnalyticsHostGroup
|
|
88
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-TLRJV4SL.js";
|
|
89
93
|
import "./chunk-C5Z4OFKW.js";
|
|
90
94
|
import "./chunk-YXNDOQXN.js";
|
|
91
95
|
export {
|
|
@@ -108,6 +112,7 @@ export {
|
|
|
108
112
|
analyticsOverview,
|
|
109
113
|
analyticsPaths,
|
|
110
114
|
analyticsTimeseries,
|
|
115
|
+
appendAnalyticsAuthoritativeOutcomeVersion,
|
|
111
116
|
archiveAnalyticsActivationDestination,
|
|
112
117
|
archiveAnalyticsCampaignLink,
|
|
113
118
|
backfillAnalyticsConfirmedHistory,
|
|
@@ -116,6 +121,7 @@ export {
|
|
|
116
121
|
closeAnalyticsPool,
|
|
117
122
|
completeAnalyticsCrmImportRow,
|
|
118
123
|
completeAnalyticsFormDelivery,
|
|
124
|
+
consumeAnalyticsSurveyInvite,
|
|
119
125
|
createAnalyticsActivationDestination,
|
|
120
126
|
createAnalyticsCampaignLink,
|
|
121
127
|
createAnalyticsConversion,
|
|
@@ -134,6 +140,7 @@ export {
|
|
|
134
140
|
getPublicAnalyticsForm,
|
|
135
141
|
identityHmac,
|
|
136
142
|
ingestAnalyticsEvents,
|
|
143
|
+
insertAnalyticsRevenueSetupRevision,
|
|
137
144
|
isAnalyticsFormPlacementApproved,
|
|
138
145
|
linkAnalyticsFormIdentity,
|
|
139
146
|
linkAnalyticsIdentityInTransaction,
|
|
@@ -153,6 +160,7 @@ export {
|
|
|
153
160
|
normalizeObservedHostname,
|
|
154
161
|
pollAnalyticsActivationDiagnostics,
|
|
155
162
|
prepareAnalyticsLinkerIssue,
|
|
163
|
+
projectAnalyticsAuthoritativeConversion,
|
|
156
164
|
projectAnalyticsPixelEventConsent,
|
|
157
165
|
queueAnalyticsActivation,
|
|
158
166
|
queueAnalyticsFormDelivery,
|
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-EOPETL7Q.js"),
|
|
21
|
+
import("../worker-5A375BGN.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-4VZQ4TKW.js");
|
|
30
30
|
await migrateAnalytics();
|
|
31
31
|
}
|
|
32
32
|
startWorker();
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
openWorkflowReport,
|
|
7
7
|
runWorkflow,
|
|
8
8
|
workflowOutputBaseDir
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-6IOGTFNS.js";
|
|
10
10
|
import "../chunk-RJ7JVYKU.js";
|
|
11
11
|
import "../chunk-OWF2JJKN.js";
|
|
12
12
|
import {
|
|
@@ -15,11 +15,11 @@ import {
|
|
|
15
15
|
XRAY_INSTALL_PROTOCOL_VERSION,
|
|
16
16
|
renderXraySetupPrompt,
|
|
17
17
|
xrayHostRecipe
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-P7FWOMU7.js";
|
|
19
19
|
import "../chunk-GGZEC22A.js";
|
|
20
20
|
import {
|
|
21
21
|
PACKAGE_VERSION
|
|
22
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-RHAOKXQK.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-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-2ZDYUTOZ.js";
|
|
5
|
+
import "../chunk-W4IY6CB4.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-X5HRAAQM.js";
|
|
11
11
|
import "../chunk-OM7HVEJ3.js";
|
|
12
12
|
import "../chunk-OPQIGAFB.js";
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-WN7N4ESQ.js";
|
|
14
|
+
import "../chunk-P7FWOMU7.js";
|
|
15
15
|
import "../chunk-GGZEC22A.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-RHAOKXQK.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-WN7N4ESQ.js";
|
|
5
5
|
import {
|
|
6
6
|
PACKAGE_VERSION
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-RHAOKXQK.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-2ZDYUTOZ.js";
|
|
5
|
+
import "../chunk-W4IY6CB4.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-X5HRAAQM.js";
|
|
11
11
|
import "../chunk-OM7HVEJ3.js";
|
|
12
12
|
import "../chunk-OPQIGAFB.js";
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-WN7N4ESQ.js";
|
|
14
|
+
import "../chunk-P7FWOMU7.js";
|
|
15
15
|
import "../chunk-GGZEC22A.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-RHAOKXQK.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-W4IY6CB4.js";
|
|
16
16
|
import {
|
|
17
17
|
renderInstallTerminal
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-WN7N4ESQ.js";
|
|
19
19
|
import {
|
|
20
20
|
PACKAGE_VERSION
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-RHAOKXQK.js";
|
|
22
22
|
|
|
23
23
|
// src/mcp/stdio-runtime.ts
|
|
24
24
|
import { readFileSync } from "fs";
|
|
@@ -147,7 +147,7 @@ function extractContactEvidence(html, pageUrl) {
|
|
|
147
147
|
|
|
148
148
|
// src/mcp/xray-install-contract.ts
|
|
149
149
|
import { createHash } from "crypto";
|
|
150
|
-
var XRAY_INSTALL_PROTOCOL_VERSION = "
|
|
150
|
+
var XRAY_INSTALL_PROTOCOL_VERSION = "3.0.0";
|
|
151
151
|
var XRAY_SETUP_TOOL = "analytics_setup_site";
|
|
152
152
|
var XRAY_TRIGGER_PHRASE = "Install X-Ray";
|
|
153
153
|
var XRAY_CANONICAL_GOAL = "Install X-Ray and tell me what drives customers";
|
|
@@ -291,6 +291,10 @@ var XRAY_INSTALL_CONTRACT_PAYLOAD = {
|
|
|
291
291
|
"Infer the business model and customer outcome, then propose one privacy-safe measurement plan.",
|
|
292
292
|
"If the Pixel is absent, return the canonical one-time tag and exact uncovered surfaces; do not claim ongoing control there.",
|
|
293
293
|
"Publish an approved measurement revision as a digest-bound runtime manifest; source or repository access is not required.",
|
|
294
|
+
"For SaaS, verify the measurement foundation: global tag coverage, ad-source capture, lifecycle events, currency and timezone, consent, and observed outcome events.",
|
|
295
|
+
"Optionally publish a structured post-purchase survey after approved disclosure evidence; reported influence remains separate from deterministic touches.",
|
|
296
|
+
"Compare observed attribution with customer-reported influence only with explicit weights totaling 1,000,000 micros and a named methodology version.",
|
|
297
|
+
"Keep view-through reporting unavailable until event-level provider evidence can join to an eligible X-Ray subject; aggregate impressions never qualify.",
|
|
294
298
|
"Verify route coverage, consent, PageViews, manifest convergence, bounded rule matches, and persisted definition/version evidence.",
|
|
295
299
|
"Require a separate exact-revision approval before any canary or real-visitor experiment activation.",
|
|
296
300
|
"Return first customer-journey answers when sufficient, or exact evidence-readiness thresholds when not.",
|
|
@@ -302,9 +306,11 @@ var XRAY_INSTALL_CONTRACT_PAYLOAD = {
|
|
|
302
306
|
"Never call ad platforms directly or silently activate events, definitions, funnels, or delivery destinations.",
|
|
303
307
|
"Never treat a CTA click as a customer, sale, or revenue event without verified outcome evidence.",
|
|
304
308
|
"Never claim full-domain installation while an in-scope route or renderer is missing, excluded without approval, or unverifiable.",
|
|
305
|
-
"Never treat event-name presence as verification; require persisted definition ID and version evidence."
|
|
309
|
+
"Never treat event-name presence as verification; require persisted definition ID and version evidence.",
|
|
310
|
+
"Never accept survey invitation tokens or exchange codes through MCP inputs or prompts.",
|
|
311
|
+
"Never treat customer-reported influence as identity, CRM mutation authority, ad-activation evidence, or a deterministic touch."
|
|
306
312
|
],
|
|
307
|
-
terminalStates: ["complete", "tag_required", "input_required", "approval_required", "runtime_convergence_required", "
|
|
313
|
+
terminalStates: ["complete", "tag_required", "input_required", "approval_required", "runtime_convergence_required", "not_ready", "error"]
|
|
308
314
|
};
|
|
309
315
|
function canonicalJson(value) {
|
|
310
316
|
if (Array.isArray(value)) return `[${value.map(canonicalJson).join(",")}]`;
|
|
@@ -334,7 +340,7 @@ function renderXraySetupPrompt() {
|
|
|
334
340
|
"",
|
|
335
341
|
`Use ${XRAY_SETUP_TOOL} as the single conversational setup facade. Ask for the target site URL if it is missing, then call it with the goal \u201C${XRAY_CANONICAL_GOAL}\u201D.`,
|
|
336
342
|
"",
|
|
337
|
-
"Continue the same setup with its setupId and revision. Confirm one global Pixel across all public rendering surfaces; present one measurement plan; publish it as a digest-bound runtime manifest after exact-revision approval; verify manifest and rule versions; then return first customer-journey answers or explicit readiness thresholds. GitHub or repository access is not required after the tag is installed.",
|
|
343
|
+
"Continue the same setup with its setupId and revision. Confirm one global Pixel across all public rendering surfaces; present one measurement plan; publish it as a digest-bound runtime manifest after exact-revision approval; verify manifest and rule versions; then return first customer-journey answers or explicit readiness thresholds. For SaaS, verify the provider-neutral measurement foundation. Browser events never prove paid revenue. GitHub or repository access is not required after the tag is installed.",
|
|
338
344
|
"",
|
|
339
345
|
"Do not request pasted credentials, invent tracking code, silently activate measurement, call ad platforms directly, or claim customers/revenue from CTA clicks."
|
|
340
346
|
].join("\n");
|