@canonry/canonry 4.146.0 → 4.147.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/assets/assets/{AuditHistoryPanel-IDsSUFI3.js → AuditHistoryPanel-BbEZ_0W9.js} +1 -1
- package/assets/assets/{BacklinksPage-BswN-pyj.js → BacklinksPage-B72RKxC-.js} +1 -1
- package/assets/assets/{ChartPrimitives-CIe-R58_.js → ChartPrimitives-Cf-jQ3c8.js} +1 -1
- package/assets/assets/{HistoryPage-B18Jpq8c.js → HistoryPage-C2U1kxKw.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-ltcSZ0tw.js +1 -0
- package/assets/assets/ProjectPage-ZcGjsDlb.js +12 -0
- package/assets/assets/{RunRow-3ZwTR4Bv.js → RunRow-DxO-zxCm.js} +1 -1
- package/assets/assets/{RunsPage-BCAJulR1.js → RunsPage-B1ON2nQC.js} +1 -1
- package/assets/assets/{SettingsPage-BT2_l0Do.js → SettingsPage-Cp0bHFHk.js} +1 -1
- package/assets/assets/{TrafficPage-Cux8rj5G.js → TrafficPage-QzitDjhV.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-DI1Ad8KS.js → TrafficSourceDetailPage-BjfFyG2y.js} +1 -1
- package/assets/assets/{arrow-left-BMSx9HQB.js → arrow-left-DJ8ZwUlj.js} +1 -1
- package/assets/assets/extract-error-message-CX8ZNJ8S.js +1 -0
- package/assets/assets/{index-C6E5hp28.css → index-D5NO3NEG.css} +1 -1
- package/assets/assets/index-DF8X6nM0.js +213 -0
- package/assets/assets/{trash-2-CyoJtRAr.js → trash-2-UHAxuTT7.js} +1 -1
- package/assets/assets/{v2-overview-adapter-owDeFdUc.js → v2-overview-adapter-BHmxTmCf.js} +1 -1
- package/assets/index.html +2 -2
- package/dist/{chunk-UQOTEIA6.js → chunk-2NTWZHNF.js} +712 -330
- package/dist/{chunk-B5H55ZMA.js → chunk-BVOU4UJM.js} +3687 -3025
- package/dist/{chunk-Z7B6BRPP.js → chunk-GNKVF6TZ.js} +7 -4
- package/dist/{chunk-ED7C5TWT.js → chunk-ZRUNFIGA.js} +3818 -1439
- package/dist/cli.js +419 -15
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-M5UNHF7X.js → intelligence-service-2E5YAXI3.js} +2 -2
- package/dist/mcp.js +5 -5
- package/package.json +12 -11
- package/assets/assets/MeasurementPropertyPage-CvmQeoo7.js +0 -1
- package/assets/assets/ProjectPage-BE1MUAB5.js +0 -11
- package/assets/assets/extract-error-message-B-9FdQh8.js +0 -1
- package/assets/assets/index-kOXUzdqD.js +0 -213
|
@@ -26,8 +26,11 @@ import {
|
|
|
26
26
|
gscPerformanceOrderBySchema,
|
|
27
27
|
keywordBatchRequestSchema,
|
|
28
28
|
keywordGenerateRequestSchema,
|
|
29
|
+
measurementChangesQuerySchema,
|
|
30
|
+
measurementDataQualityQuerySchema,
|
|
29
31
|
measurementDiscoveryRequestSchema,
|
|
30
32
|
measurementDraftApplyAssignmentsRequestSchema,
|
|
33
|
+
measurementDraftApplyGroupMembershipRequestSchema,
|
|
31
34
|
measurementDraftApplyPairedAssignmentsRequestSchema,
|
|
32
35
|
measurementDraftApplySitemapSelectionRequestSchema,
|
|
33
36
|
measurementDraftClassifyAssignmentsRequestSchema,
|
|
@@ -37,12 +40,15 @@ import {
|
|
|
37
40
|
measurementDraftExcludeTargetRequestSchema,
|
|
38
41
|
measurementDraftImportSitemapRequestSchema,
|
|
39
42
|
measurementDraftMergeTargetsRequestSchema,
|
|
43
|
+
measurementDraftPreviewAssignmentsRequestSchema,
|
|
44
|
+
measurementDraftPreviewGroupMembershipRequestSchema,
|
|
40
45
|
measurementDraftPublishRequestSchema,
|
|
41
46
|
measurementDraftRebindTargetRequestSchema,
|
|
42
47
|
measurementDraftRemoveAssignmentRequestSchema,
|
|
43
48
|
measurementDraftRemoveCompetitorRequestSchema,
|
|
44
49
|
measurementDraftRemoveGroupRequestSchema,
|
|
45
50
|
measurementDraftRenameTargetRequestSchema,
|
|
51
|
+
measurementDraftReplaceAssignmentsRequestSchema,
|
|
46
52
|
measurementDraftUpsertCompetitorRequestSchema,
|
|
47
53
|
measurementDraftUpsertGroupRequestSchema,
|
|
48
54
|
measurementDraftUpsertTargetRequestSchema,
|
|
@@ -50,10 +56,14 @@ import {
|
|
|
50
56
|
measurementPlanAuthoringSchema,
|
|
51
57
|
measurementPlanDeactivateRequestSchema,
|
|
52
58
|
measurementPlanPublishRequestSchema,
|
|
59
|
+
measurementPortfolioSummaryQuerySchema,
|
|
60
|
+
measurementPropertyCompetitorsQuerySchema,
|
|
53
61
|
measurementPropertyEvidenceQuerySchema,
|
|
62
|
+
measurementPropertyQuestionsQuerySchema,
|
|
54
63
|
measurementQuerySetUpsertRequestSchema,
|
|
55
64
|
measurementQueryTemplateApplyRequestSchema,
|
|
56
65
|
measurementQueryTemplateUpsertRequestSchema,
|
|
66
|
+
measurementQuestionResultQuerySchema,
|
|
57
67
|
notificationCreateRequestSchema,
|
|
58
68
|
notificationEventSchema,
|
|
59
69
|
organicEvidencePeriodSchema,
|
|
@@ -71,7 +81,7 @@ import {
|
|
|
71
81
|
trafficConnectWordpressRequestSchema,
|
|
72
82
|
trafficEventKindSchema,
|
|
73
83
|
trafficSeriesGranularitySchema
|
|
74
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-BVOU4UJM.js";
|
|
75
85
|
|
|
76
86
|
// src/config.ts
|
|
77
87
|
import fs from "fs";
|
|
@@ -298,6 +308,15 @@ function isEndpointMissing(err) {
|
|
|
298
308
|
const status = err.details?.httpStatus;
|
|
299
309
|
return status === 404 || status === 405;
|
|
300
310
|
}
|
|
311
|
+
function systemError(message, options) {
|
|
312
|
+
return new CliError({
|
|
313
|
+
code: "CLI_SYSTEM_ERROR",
|
|
314
|
+
message,
|
|
315
|
+
displayMessage: options?.displayMessage,
|
|
316
|
+
details: options?.details,
|
|
317
|
+
exitCode: EXIT_SYSTEM_ERROR
|
|
318
|
+
});
|
|
319
|
+
}
|
|
301
320
|
function printCliError(err, format) {
|
|
302
321
|
if (isMachineFormat(format)) {
|
|
303
322
|
const envelope = err instanceof CliError ? { error: { code: err.code, message: err.message, ...err.details ? { details: err.details } : {} } } : { error: { code: "CLI_ERROR", message: err instanceof Error ? err.message : "An unexpected error occurred" } };
|
|
@@ -1500,6 +1519,38 @@ var postApiV1ProjectsByNameMeasurementPlanDraftActionsApplyAssignments = (option
|
|
|
1500
1519
|
}
|
|
1501
1520
|
});
|
|
1502
1521
|
};
|
|
1522
|
+
var postApiV1ProjectsByNameMeasurementPlanDraftActionsPreviewAssignments = (options) => {
|
|
1523
|
+
return (options.client ?? client).post({
|
|
1524
|
+
security: [
|
|
1525
|
+
{
|
|
1526
|
+
scheme: "bearer",
|
|
1527
|
+
type: "http"
|
|
1528
|
+
}
|
|
1529
|
+
],
|
|
1530
|
+
url: "/api/v1/projects/{name}/measurement-plan/draft/actions/preview-assignments",
|
|
1531
|
+
...options,
|
|
1532
|
+
headers: {
|
|
1533
|
+
"Content-Type": "application/json",
|
|
1534
|
+
...options.headers
|
|
1535
|
+
}
|
|
1536
|
+
});
|
|
1537
|
+
};
|
|
1538
|
+
var postApiV1ProjectsByNameMeasurementPlanDraftActionsReplaceAssignments = (options) => {
|
|
1539
|
+
return (options.client ?? client).post({
|
|
1540
|
+
security: [
|
|
1541
|
+
{
|
|
1542
|
+
scheme: "bearer",
|
|
1543
|
+
type: "http"
|
|
1544
|
+
}
|
|
1545
|
+
],
|
|
1546
|
+
url: "/api/v1/projects/{name}/measurement-plan/draft/actions/replace-assignments",
|
|
1547
|
+
...options,
|
|
1548
|
+
headers: {
|
|
1549
|
+
"Content-Type": "application/json",
|
|
1550
|
+
...options.headers
|
|
1551
|
+
}
|
|
1552
|
+
});
|
|
1553
|
+
};
|
|
1503
1554
|
var postApiV1ProjectsByNameMeasurementPlanDraftActionsApplyPairedAssignments = (options) => {
|
|
1504
1555
|
return (options.client ?? client).post({
|
|
1505
1556
|
security: [
|
|
@@ -1596,6 +1647,38 @@ var postApiV1ProjectsByNameMeasurementPlanDraftActionsRemoveGroup = (options) =>
|
|
|
1596
1647
|
}
|
|
1597
1648
|
});
|
|
1598
1649
|
};
|
|
1650
|
+
var postApiV1ProjectsByNameMeasurementPlanDraftActionsPreviewGroupMembership = (options) => {
|
|
1651
|
+
return (options.client ?? client).post({
|
|
1652
|
+
security: [
|
|
1653
|
+
{
|
|
1654
|
+
scheme: "bearer",
|
|
1655
|
+
type: "http"
|
|
1656
|
+
}
|
|
1657
|
+
],
|
|
1658
|
+
url: "/api/v1/projects/{name}/measurement-plan/draft/actions/preview-group-membership",
|
|
1659
|
+
...options,
|
|
1660
|
+
headers: {
|
|
1661
|
+
"Content-Type": "application/json",
|
|
1662
|
+
...options.headers
|
|
1663
|
+
}
|
|
1664
|
+
});
|
|
1665
|
+
};
|
|
1666
|
+
var postApiV1ProjectsByNameMeasurementPlanDraftActionsApplyGroupMembership = (options) => {
|
|
1667
|
+
return (options.client ?? client).post({
|
|
1668
|
+
security: [
|
|
1669
|
+
{
|
|
1670
|
+
scheme: "bearer",
|
|
1671
|
+
type: "http"
|
|
1672
|
+
}
|
|
1673
|
+
],
|
|
1674
|
+
url: "/api/v1/projects/{name}/measurement-plan/draft/actions/apply-group-membership",
|
|
1675
|
+
...options,
|
|
1676
|
+
headers: {
|
|
1677
|
+
"Content-Type": "application/json",
|
|
1678
|
+
...options.headers
|
|
1679
|
+
}
|
|
1680
|
+
});
|
|
1681
|
+
};
|
|
1599
1682
|
var postApiV1ProjectsByNameMeasurementPlanDraftActionsUpsertCompetitor = (options) => {
|
|
1600
1683
|
return (options.client ?? client).post({
|
|
1601
1684
|
security: [
|
|
@@ -1720,6 +1803,78 @@ var getApiV1ProjectsByNameMeasurementPropertyEvidence = (options) => {
|
|
|
1720
1803
|
...options
|
|
1721
1804
|
});
|
|
1722
1805
|
};
|
|
1806
|
+
var getApiV1ProjectsByNameMeasurementPortfolioSummary = (options) => {
|
|
1807
|
+
return (options.client ?? client).get({
|
|
1808
|
+
security: [
|
|
1809
|
+
{
|
|
1810
|
+
scheme: "bearer",
|
|
1811
|
+
type: "http"
|
|
1812
|
+
}
|
|
1813
|
+
],
|
|
1814
|
+
url: "/api/v1/projects/{name}/measurement-portfolio-summary",
|
|
1815
|
+
...options
|
|
1816
|
+
});
|
|
1817
|
+
};
|
|
1818
|
+
var getApiV1ProjectsByNameMeasurementPropertyQuestions = (options) => {
|
|
1819
|
+
return (options.client ?? client).get({
|
|
1820
|
+
security: [
|
|
1821
|
+
{
|
|
1822
|
+
scheme: "bearer",
|
|
1823
|
+
type: "http"
|
|
1824
|
+
}
|
|
1825
|
+
],
|
|
1826
|
+
url: "/api/v1/projects/{name}/measurement-property-questions",
|
|
1827
|
+
...options
|
|
1828
|
+
});
|
|
1829
|
+
};
|
|
1830
|
+
var getApiV1ProjectsByNameMeasurementQuestionResult = (options) => {
|
|
1831
|
+
return (options.client ?? client).get({
|
|
1832
|
+
security: [
|
|
1833
|
+
{
|
|
1834
|
+
scheme: "bearer",
|
|
1835
|
+
type: "http"
|
|
1836
|
+
}
|
|
1837
|
+
],
|
|
1838
|
+
url: "/api/v1/projects/{name}/measurement-question-result",
|
|
1839
|
+
...options
|
|
1840
|
+
});
|
|
1841
|
+
};
|
|
1842
|
+
var getApiV1ProjectsByNameMeasurementPropertyCompetitors = (options) => {
|
|
1843
|
+
return (options.client ?? client).get({
|
|
1844
|
+
security: [
|
|
1845
|
+
{
|
|
1846
|
+
scheme: "bearer",
|
|
1847
|
+
type: "http"
|
|
1848
|
+
}
|
|
1849
|
+
],
|
|
1850
|
+
url: "/api/v1/projects/{name}/measurement-property-competitors",
|
|
1851
|
+
...options
|
|
1852
|
+
});
|
|
1853
|
+
};
|
|
1854
|
+
var getApiV1ProjectsByNameMeasurementChanges = (options) => {
|
|
1855
|
+
return (options.client ?? client).get({
|
|
1856
|
+
security: [
|
|
1857
|
+
{
|
|
1858
|
+
scheme: "bearer",
|
|
1859
|
+
type: "http"
|
|
1860
|
+
}
|
|
1861
|
+
],
|
|
1862
|
+
url: "/api/v1/projects/{name}/measurement-changes",
|
|
1863
|
+
...options
|
|
1864
|
+
});
|
|
1865
|
+
};
|
|
1866
|
+
var getApiV1ProjectsByNameMeasurementDataQuality = (options) => {
|
|
1867
|
+
return (options.client ?? client).get({
|
|
1868
|
+
security: [
|
|
1869
|
+
{
|
|
1870
|
+
scheme: "bearer",
|
|
1871
|
+
type: "http"
|
|
1872
|
+
}
|
|
1873
|
+
],
|
|
1874
|
+
url: "/api/v1/projects/{name}/measurement-data-quality",
|
|
1875
|
+
...options
|
|
1876
|
+
});
|
|
1877
|
+
};
|
|
1723
1878
|
var getApiV1ProjectsByNameMeasurementQuerySets = (options) => {
|
|
1724
1879
|
return (options.client ?? client).get({
|
|
1725
1880
|
security: [
|
|
@@ -5383,6 +5538,60 @@ var ApiClient = class {
|
|
|
5383
5538
|
})
|
|
5384
5539
|
);
|
|
5385
5540
|
}
|
|
5541
|
+
async getMeasurementPortfolioSummary(project, query) {
|
|
5542
|
+
return this.invoke(
|
|
5543
|
+
() => getApiV1ProjectsByNameMeasurementPortfolioSummary({
|
|
5544
|
+
client: this.heyClient,
|
|
5545
|
+
path: { name: project },
|
|
5546
|
+
query
|
|
5547
|
+
})
|
|
5548
|
+
);
|
|
5549
|
+
}
|
|
5550
|
+
async getMeasurementPropertyQuestions(project, query) {
|
|
5551
|
+
return this.invoke(
|
|
5552
|
+
() => getApiV1ProjectsByNameMeasurementPropertyQuestions({
|
|
5553
|
+
client: this.heyClient,
|
|
5554
|
+
path: { name: project },
|
|
5555
|
+
query
|
|
5556
|
+
})
|
|
5557
|
+
);
|
|
5558
|
+
}
|
|
5559
|
+
async getMeasurementQuestionResult(project, query) {
|
|
5560
|
+
return this.invoke(
|
|
5561
|
+
() => getApiV1ProjectsByNameMeasurementQuestionResult({
|
|
5562
|
+
client: this.heyClient,
|
|
5563
|
+
path: { name: project },
|
|
5564
|
+
query
|
|
5565
|
+
})
|
|
5566
|
+
);
|
|
5567
|
+
}
|
|
5568
|
+
async getMeasurementPropertyCompetitors(project, query) {
|
|
5569
|
+
return this.invoke(
|
|
5570
|
+
() => getApiV1ProjectsByNameMeasurementPropertyCompetitors({
|
|
5571
|
+
client: this.heyClient,
|
|
5572
|
+
path: { name: project },
|
|
5573
|
+
query
|
|
5574
|
+
})
|
|
5575
|
+
);
|
|
5576
|
+
}
|
|
5577
|
+
async getMeasurementChanges(project, query) {
|
|
5578
|
+
return this.invoke(
|
|
5579
|
+
() => getApiV1ProjectsByNameMeasurementChanges({
|
|
5580
|
+
client: this.heyClient,
|
|
5581
|
+
path: { name: project },
|
|
5582
|
+
query
|
|
5583
|
+
})
|
|
5584
|
+
);
|
|
5585
|
+
}
|
|
5586
|
+
async getMeasurementDataQuality(project, query) {
|
|
5587
|
+
return this.invoke(
|
|
5588
|
+
() => getApiV1ProjectsByNameMeasurementDataQuality({
|
|
5589
|
+
client: this.heyClient,
|
|
5590
|
+
path: { name: project },
|
|
5591
|
+
query
|
|
5592
|
+
})
|
|
5593
|
+
);
|
|
5594
|
+
}
|
|
5386
5595
|
async getMeasurementPlanDraft(project) {
|
|
5387
5596
|
return this.invoke(
|
|
5388
5597
|
() => getApiV1ProjectsByNameMeasurementPlanDraft({ client: this.heyClient, path: { name: project } })
|
|
@@ -5506,6 +5715,25 @@ var ApiClient = class {
|
|
|
5506
5715
|
})
|
|
5507
5716
|
);
|
|
5508
5717
|
}
|
|
5718
|
+
async previewMeasurementDraftAssignments(project, request) {
|
|
5719
|
+
return this.invoke(
|
|
5720
|
+
() => postApiV1ProjectsByNameMeasurementPlanDraftActionsPreviewAssignments({
|
|
5721
|
+
client: this.heyClient,
|
|
5722
|
+
path: { name: project },
|
|
5723
|
+
body: request
|
|
5724
|
+
})
|
|
5725
|
+
);
|
|
5726
|
+
}
|
|
5727
|
+
async replaceMeasurementDraftAssignments(project, request, idempotencyKey, etag) {
|
|
5728
|
+
return this.invoke(
|
|
5729
|
+
() => postApiV1ProjectsByNameMeasurementPlanDraftActionsReplaceAssignments({
|
|
5730
|
+
client: this.heyClient,
|
|
5731
|
+
path: { name: project },
|
|
5732
|
+
body: request,
|
|
5733
|
+
headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
|
|
5734
|
+
})
|
|
5735
|
+
);
|
|
5736
|
+
}
|
|
5509
5737
|
async applyPairedMeasurementDraftAssignments(project, request, idempotencyKey, etag) {
|
|
5510
5738
|
return this.invoke(
|
|
5511
5739
|
() => postApiV1ProjectsByNameMeasurementPlanDraftActionsApplyPairedAssignments({
|
|
@@ -5566,6 +5794,25 @@ var ApiClient = class {
|
|
|
5566
5794
|
})
|
|
5567
5795
|
);
|
|
5568
5796
|
}
|
|
5797
|
+
async previewMeasurementDraftGroupMembership(project, request) {
|
|
5798
|
+
return this.invoke(
|
|
5799
|
+
() => postApiV1ProjectsByNameMeasurementPlanDraftActionsPreviewGroupMembership({
|
|
5800
|
+
client: this.heyClient,
|
|
5801
|
+
path: { name: project },
|
|
5802
|
+
body: request
|
|
5803
|
+
})
|
|
5804
|
+
);
|
|
5805
|
+
}
|
|
5806
|
+
async applyMeasurementDraftGroupMembership(project, request, idempotencyKey, etag) {
|
|
5807
|
+
return this.invoke(
|
|
5808
|
+
() => postApiV1ProjectsByNameMeasurementPlanDraftActionsApplyGroupMembership({
|
|
5809
|
+
client: this.heyClient,
|
|
5810
|
+
path: { name: project },
|
|
5811
|
+
body: request,
|
|
5812
|
+
headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
|
|
5813
|
+
})
|
|
5814
|
+
);
|
|
5815
|
+
}
|
|
5569
5816
|
async upsertMeasurementDraftCompetitor(project, request, idempotencyKey, etag) {
|
|
5570
5817
|
return this.invoke(
|
|
5571
5818
|
() => postApiV1ProjectsByNameMeasurementPlanDraftActionsUpsertCompetitor({
|
|
@@ -7193,21 +7440,133 @@ var _require = createRequire(import.meta.url);
|
|
|
7193
7440
|
var PACKAGE_VERSION = _require("../package.json").version;
|
|
7194
7441
|
|
|
7195
7442
|
// src/mcp/tool-registry.ts
|
|
7196
|
-
import { z as
|
|
7443
|
+
import { z as z3 } from "zod";
|
|
7197
7444
|
|
|
7198
|
-
// src/
|
|
7445
|
+
// src/measurement-draft-actions.ts
|
|
7199
7446
|
import { z } from "zod";
|
|
7200
|
-
var
|
|
7201
|
-
|
|
7202
|
-
|
|
7203
|
-
var
|
|
7204
|
-
|
|
7205
|
-
|
|
7447
|
+
var idempotencyKeySchema = z.string().trim().min(1).describe(
|
|
7448
|
+
"A fresh request key. Reuse it only when retrying the identical request."
|
|
7449
|
+
);
|
|
7450
|
+
var draftEtagSchema = z.string().trim().min(1).optional().describe(
|
|
7451
|
+
"Current draft ETag from canonry_measurement_draft_get. The API requires it for draft edits, publish, and discard; omit it only to receive the API\u2019s actionable 428 response."
|
|
7452
|
+
);
|
|
7453
|
+
function mutationOperationSchema(action, request) {
|
|
7454
|
+
return z.object({
|
|
7455
|
+
action: z.literal(action),
|
|
7456
|
+
request,
|
|
7457
|
+
etag: draftEtagSchema,
|
|
7458
|
+
idempotencyKey: idempotencyKeySchema
|
|
7459
|
+
}).strict().describe(`Operation for ${action}.`);
|
|
7460
|
+
}
|
|
7461
|
+
var measurementDraftOperationSchema = z.discriminatedUnion("action", [
|
|
7462
|
+
z.object({
|
|
7463
|
+
action: z.literal("create"),
|
|
7464
|
+
request: measurementDraftCreateRequestSchema,
|
|
7465
|
+
idempotencyKey: idempotencyKeySchema
|
|
7466
|
+
}).strict().describe("Operation for create."),
|
|
7467
|
+
mutationOperationSchema("import-sitemap", measurementDraftImportSitemapRequestSchema),
|
|
7468
|
+
mutationOperationSchema("apply-sitemap-selection", measurementDraftApplySitemapSelectionRequestSchema),
|
|
7469
|
+
mutationOperationSchema("upsert-target", measurementDraftUpsertTargetRequestSchema),
|
|
7470
|
+
mutationOperationSchema("rename-target", measurementDraftRenameTargetRequestSchema),
|
|
7471
|
+
mutationOperationSchema("merge-targets", measurementDraftMergeTargetsRequestSchema),
|
|
7472
|
+
mutationOperationSchema("exclude-target", measurementDraftExcludeTargetRequestSchema),
|
|
7473
|
+
mutationOperationSchema("rebind-target", measurementDraftRebindTargetRequestSchema),
|
|
7474
|
+
mutationOperationSchema("apply-assignments", measurementDraftApplyAssignmentsRequestSchema),
|
|
7475
|
+
z.object({
|
|
7476
|
+
action: z.literal("preview-assignments"),
|
|
7477
|
+
request: measurementDraftPreviewAssignmentsRequestSchema
|
|
7478
|
+
}).strict().describe("Read-semantic assignment impact preview."),
|
|
7479
|
+
mutationOperationSchema("replace-assignments", measurementDraftReplaceAssignmentsRequestSchema),
|
|
7480
|
+
mutationOperationSchema("apply-paired-assignments", measurementDraftApplyPairedAssignmentsRequestSchema),
|
|
7481
|
+
mutationOperationSchema("remove-assignment", measurementDraftRemoveAssignmentRequestSchema),
|
|
7482
|
+
mutationOperationSchema("clear-assignments", measurementDraftClearAssignmentsRequestSchema),
|
|
7483
|
+
mutationOperationSchema("classify-assignments", measurementDraftClassifyAssignmentsRequestSchema),
|
|
7484
|
+
mutationOperationSchema("upsert-group", measurementDraftUpsertGroupRequestSchema),
|
|
7485
|
+
mutationOperationSchema("remove-group", measurementDraftRemoveGroupRequestSchema),
|
|
7486
|
+
z.object({
|
|
7487
|
+
action: z.literal("preview-group-membership"),
|
|
7488
|
+
request: measurementDraftPreviewGroupMembershipRequestSchema
|
|
7489
|
+
}).strict().describe("Read-semantic CSV group-membership preview."),
|
|
7490
|
+
mutationOperationSchema("apply-group-membership", measurementDraftApplyGroupMembershipRequestSchema),
|
|
7491
|
+
mutationOperationSchema("upsert-competitor", measurementDraftUpsertCompetitorRequestSchema),
|
|
7492
|
+
mutationOperationSchema("remove-competitor", measurementDraftRemoveCompetitorRequestSchema),
|
|
7493
|
+
z.object({ action: z.literal("compile-preview") }).strict().describe("Operation for compile-preview."),
|
|
7494
|
+
z.object({ action: z.literal("diff-preview") }).strict().describe("Operation for diff-preview."),
|
|
7495
|
+
mutationOperationSchema("publish", measurementDraftPublishRequestSchema),
|
|
7496
|
+
z.object({
|
|
7497
|
+
action: z.literal("discard"),
|
|
7498
|
+
etag: draftEtagSchema,
|
|
7499
|
+
idempotencyKey: idempotencyKeySchema
|
|
7500
|
+
}).strict().describe("Operation for discard.")
|
|
7501
|
+
]);
|
|
7502
|
+
function runMeasurementDraftAction(client2, project, actionInput) {
|
|
7503
|
+
switch (actionInput.action) {
|
|
7504
|
+
case "create":
|
|
7505
|
+
return client2.createMeasurementPlanDraft(project, actionInput.request, actionInput.idempotencyKey);
|
|
7506
|
+
case "import-sitemap":
|
|
7507
|
+
return client2.importMeasurementDraftSitemap(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7508
|
+
case "apply-sitemap-selection":
|
|
7509
|
+
return client2.applyMeasurementDraftSitemapSelection(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7510
|
+
case "upsert-target":
|
|
7511
|
+
return client2.upsertMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7512
|
+
case "rename-target":
|
|
7513
|
+
return client2.renameMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7514
|
+
case "merge-targets":
|
|
7515
|
+
return client2.mergeMeasurementDraftTargets(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7516
|
+
case "exclude-target":
|
|
7517
|
+
return client2.excludeMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7518
|
+
case "rebind-target":
|
|
7519
|
+
return client2.rebindMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7520
|
+
case "apply-assignments":
|
|
7521
|
+
return client2.applyMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7522
|
+
case "preview-assignments":
|
|
7523
|
+
return client2.previewMeasurementDraftAssignments(project, actionInput.request);
|
|
7524
|
+
case "replace-assignments":
|
|
7525
|
+
return client2.replaceMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7526
|
+
case "apply-paired-assignments":
|
|
7527
|
+
return client2.applyPairedMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7528
|
+
case "remove-assignment":
|
|
7529
|
+
return client2.removeMeasurementDraftAssignment(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7530
|
+
case "clear-assignments":
|
|
7531
|
+
return client2.clearMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7532
|
+
case "classify-assignments":
|
|
7533
|
+
return client2.classifyMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7534
|
+
case "upsert-group":
|
|
7535
|
+
return client2.upsertMeasurementDraftGroup(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7536
|
+
case "remove-group":
|
|
7537
|
+
return client2.removeMeasurementDraftGroup(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7538
|
+
case "preview-group-membership":
|
|
7539
|
+
return client2.previewMeasurementDraftGroupMembership(project, actionInput.request);
|
|
7540
|
+
case "apply-group-membership":
|
|
7541
|
+
return client2.applyMeasurementDraftGroupMembership(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7542
|
+
case "upsert-competitor":
|
|
7543
|
+
return client2.upsertMeasurementDraftCompetitor(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7544
|
+
case "remove-competitor":
|
|
7545
|
+
return client2.removeMeasurementDraftCompetitor(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7546
|
+
case "compile-preview":
|
|
7547
|
+
return client2.compileMeasurementDraftPreview(project);
|
|
7548
|
+
case "diff-preview":
|
|
7549
|
+
return client2.diffMeasurementDraftPreview(project);
|
|
7550
|
+
case "publish":
|
|
7551
|
+
return client2.publishMeasurementDraft(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7552
|
+
case "discard":
|
|
7553
|
+
return client2.discardMeasurementDraft(project, actionInput.idempotencyKey, actionInput.etag);
|
|
7554
|
+
}
|
|
7555
|
+
}
|
|
7556
|
+
|
|
7557
|
+
// src/mcp/schema.ts
|
|
7558
|
+
import { z as z2 } from "zod";
|
|
7559
|
+
var projectNameSchema = z2.string().min(1).describe("Canonry project name.");
|
|
7560
|
+
var runIdSchema = z2.string().min(1).describe("Canonry run ID.");
|
|
7561
|
+
var insightIdSchema = z2.string().min(1).describe("Canonry insight ID.");
|
|
7562
|
+
var analyticsWindowSchema = z2.enum(["7d", "30d", "90d", "all"]).describe("Analytics time window.");
|
|
7563
|
+
var emptyInputSchema = z2.object({});
|
|
7564
|
+
var projectInputSchema = z2.object({
|
|
7206
7565
|
project: projectNameSchema
|
|
7207
7566
|
});
|
|
7208
7567
|
function toJsonSchema(schema, name) {
|
|
7209
7568
|
return {
|
|
7210
|
-
...
|
|
7569
|
+
...z2.toJSONSchema(schema, { target: "draft-7" }),
|
|
7211
7570
|
title: name
|
|
7212
7571
|
};
|
|
7213
7572
|
}
|
|
@@ -7253,23 +7612,20 @@ function defineTool(tool) {
|
|
|
7253
7612
|
inputJsonSchema: toJsonSchema(tool.inputSchema, tool.name)
|
|
7254
7613
|
};
|
|
7255
7614
|
}
|
|
7256
|
-
var runTriggerInputSchema =
|
|
7615
|
+
var runTriggerInputSchema = z3.object({
|
|
7257
7616
|
project: projectNameSchema,
|
|
7258
7617
|
request: runTriggerRequestSchema.optional()
|
|
7259
7618
|
});
|
|
7260
|
-
var measurementPlanVersionInputSchema =
|
|
7619
|
+
var measurementPlanVersionInputSchema = z3.object({ project: projectNameSchema, revision: z3.number().int().positive() });
|
|
7261
7620
|
var measurementReportInputSchema = measurementPlanVersionInputSchema.extend({
|
|
7262
7621
|
runId: runIdSchema.optional().describe("Exact eligible full measurement run to reconstruct. Omit for the latest run in the revision.")
|
|
7263
7622
|
});
|
|
7264
|
-
var measurementPlanPreviewInputSchema =
|
|
7623
|
+
var measurementPlanPreviewInputSchema = z3.object({ project: projectNameSchema, plan: measurementPlanAuthoringSchema });
|
|
7265
7624
|
var measurementPlanPublishInputSchema = measurementPlanPublishRequestSchema.extend({ project: projectNameSchema });
|
|
7266
|
-
var measurementPlanRetireInputSchema =
|
|
7625
|
+
var measurementPlanRetireInputSchema = z3.object({ project: projectNameSchema, stableKey: z3.string().min(1) });
|
|
7267
7626
|
var measurementDiscoveryInputSchema = measurementDiscoveryRequestSchema.extend({ project: projectNameSchema });
|
|
7268
|
-
var idempotencyKeyInputSchema =
|
|
7269
|
-
var
|
|
7270
|
-
"Current draft ETag from canonry_measurement_draft_get. The API requires it for draft edits, publish, and discard; omit it only to receive the API\u2019s actionable 428 response."
|
|
7271
|
-
);
|
|
7272
|
-
var measurementOverviewInputSchema = z2.object({
|
|
7627
|
+
var idempotencyKeyInputSchema = z3.string().trim().min(1).describe("A fresh request key. Reuse it only when retrying the identical request.");
|
|
7628
|
+
var measurementOverviewInputSchema = z3.object({
|
|
7273
7629
|
project: projectNameSchema,
|
|
7274
7630
|
scope: measurementOverviewQuerySchema.shape.scope.describe("Read all Properties, one reporting group, or one Property."),
|
|
7275
7631
|
groupKey: measurementOverviewQuerySchema.shape.groupKey.describe("Group stable key. Required only for group scope."),
|
|
@@ -7300,19 +7656,40 @@ var measurementOverviewInputSchema = z2.object({
|
|
|
7300
7656
|
});
|
|
7301
7657
|
var measurementPropertyEvidenceInputSchema = measurementPropertyEvidenceQuerySchema.extend({
|
|
7302
7658
|
project: projectNameSchema,
|
|
7303
|
-
targetKey: measurementPropertyEvidenceQuerySchema.shape.targetKey.describe("Property stable key. Required \u2014 this read is scoped to exactly one Property.")
|
|
7659
|
+
targetKey: measurementPropertyEvidenceQuerySchema.shape.targetKey.describe("Property stable key. Required \u2014 this read is scoped to exactly one Property."),
|
|
7660
|
+
shape: measurementPropertyEvidenceQuerySchema.shape.shape.describe(
|
|
7661
|
+
"What one row is. Omit for sources (one row per cited URL). answers gives one row per measured answer with its cited URLs nested, including the answers that cited nothing."
|
|
7662
|
+
)
|
|
7663
|
+
}).strict();
|
|
7664
|
+
var measurementPortfolioSummaryInputSchema = measurementPortfolioSummaryQuerySchema.extend({
|
|
7665
|
+
project: projectNameSchema
|
|
7666
|
+
}).strict();
|
|
7667
|
+
var measurementPropertyQuestionsInputSchema = measurementPropertyQuestionsQuerySchema.extend({
|
|
7668
|
+
project: projectNameSchema
|
|
7669
|
+
}).strict();
|
|
7670
|
+
var measurementQuestionResultInputSchema = measurementQuestionResultQuerySchema.extend({
|
|
7671
|
+
project: projectNameSchema
|
|
7672
|
+
}).strict();
|
|
7673
|
+
var measurementPropertyCompetitorsInputSchema = measurementPropertyCompetitorsQuerySchema.extend({
|
|
7674
|
+
project: projectNameSchema
|
|
7675
|
+
}).strict();
|
|
7676
|
+
var measurementChangesInputSchema = measurementChangesQuerySchema.extend({
|
|
7677
|
+
project: projectNameSchema
|
|
7678
|
+
}).strict();
|
|
7679
|
+
var measurementDataQualityInputSchema = measurementDataQualityQuerySchema.extend({
|
|
7680
|
+
project: projectNameSchema
|
|
7304
7681
|
}).strict();
|
|
7305
7682
|
var measurementDraftCollectionInputSchema = measurementDraftCollectionQuerySchema.extend({ project: projectNameSchema });
|
|
7306
|
-
var measurementQuerySetInputSchema =
|
|
7683
|
+
var measurementQuerySetInputSchema = z3.object({
|
|
7307
7684
|
project: projectNameSchema,
|
|
7308
|
-
setId:
|
|
7685
|
+
setId: z3.string().trim().min(1)
|
|
7309
7686
|
}).strict();
|
|
7310
7687
|
var measurementQuerySetUpsertInputSchema = measurementQuerySetInputSchema.extend({
|
|
7311
7688
|
request: measurementQuerySetUpsertRequestSchema
|
|
7312
7689
|
}).strict();
|
|
7313
|
-
var measurementQueryTemplateInputSchema =
|
|
7690
|
+
var measurementQueryTemplateInputSchema = z3.object({
|
|
7314
7691
|
project: projectNameSchema,
|
|
7315
|
-
templateId:
|
|
7692
|
+
templateId: z3.string().trim().min(1)
|
|
7316
7693
|
}).strict();
|
|
7317
7694
|
var measurementQueryTemplateUpsertInputSchema = measurementQueryTemplateInputSchema.extend({
|
|
7318
7695
|
request: measurementQueryTemplateUpsertRequestSchema
|
|
@@ -7325,46 +7702,7 @@ var measurementPlanDeactivateInputSchema = measurementPlanDeactivateRequestSchem
|
|
|
7325
7702
|
project: projectNameSchema,
|
|
7326
7703
|
idempotencyKey: idempotencyKeyInputSchema
|
|
7327
7704
|
}).strict();
|
|
7328
|
-
|
|
7329
|
-
return z2.object({
|
|
7330
|
-
action: z2.literal(action),
|
|
7331
|
-
request,
|
|
7332
|
-
etag: measurementDraftEtagInputSchema,
|
|
7333
|
-
idempotencyKey: idempotencyKeyInputSchema
|
|
7334
|
-
}).strict().describe(`Operation for ${action}.`);
|
|
7335
|
-
}
|
|
7336
|
-
var measurementDraftOperationSchema = z2.discriminatedUnion("action", [
|
|
7337
|
-
z2.object({
|
|
7338
|
-
action: z2.literal("create"),
|
|
7339
|
-
request: measurementDraftCreateRequestSchema,
|
|
7340
|
-
idempotencyKey: idempotencyKeyInputSchema
|
|
7341
|
-
}).strict().describe("Operation for create."),
|
|
7342
|
-
measurementDraftMutationOperationSchema("import-sitemap", measurementDraftImportSitemapRequestSchema),
|
|
7343
|
-
measurementDraftMutationOperationSchema("apply-sitemap-selection", measurementDraftApplySitemapSelectionRequestSchema),
|
|
7344
|
-
measurementDraftMutationOperationSchema("upsert-target", measurementDraftUpsertTargetRequestSchema),
|
|
7345
|
-
measurementDraftMutationOperationSchema("rename-target", measurementDraftRenameTargetRequestSchema),
|
|
7346
|
-
measurementDraftMutationOperationSchema("merge-targets", measurementDraftMergeTargetsRequestSchema),
|
|
7347
|
-
measurementDraftMutationOperationSchema("exclude-target", measurementDraftExcludeTargetRequestSchema),
|
|
7348
|
-
measurementDraftMutationOperationSchema("rebind-target", measurementDraftRebindTargetRequestSchema),
|
|
7349
|
-
measurementDraftMutationOperationSchema("apply-assignments", measurementDraftApplyAssignmentsRequestSchema),
|
|
7350
|
-
measurementDraftMutationOperationSchema("apply-paired-assignments", measurementDraftApplyPairedAssignmentsRequestSchema),
|
|
7351
|
-
measurementDraftMutationOperationSchema("remove-assignment", measurementDraftRemoveAssignmentRequestSchema),
|
|
7352
|
-
measurementDraftMutationOperationSchema("clear-assignments", measurementDraftClearAssignmentsRequestSchema),
|
|
7353
|
-
measurementDraftMutationOperationSchema("classify-assignments", measurementDraftClassifyAssignmentsRequestSchema),
|
|
7354
|
-
measurementDraftMutationOperationSchema("upsert-group", measurementDraftUpsertGroupRequestSchema),
|
|
7355
|
-
measurementDraftMutationOperationSchema("remove-group", measurementDraftRemoveGroupRequestSchema),
|
|
7356
|
-
measurementDraftMutationOperationSchema("upsert-competitor", measurementDraftUpsertCompetitorRequestSchema),
|
|
7357
|
-
measurementDraftMutationOperationSchema("remove-competitor", measurementDraftRemoveCompetitorRequestSchema),
|
|
7358
|
-
z2.object({ action: z2.literal("compile-preview") }).strict().describe("Operation for compile-preview."),
|
|
7359
|
-
z2.object({ action: z2.literal("diff-preview") }).strict().describe("Operation for diff-preview."),
|
|
7360
|
-
measurementDraftMutationOperationSchema("publish", measurementDraftPublishRequestSchema),
|
|
7361
|
-
z2.object({
|
|
7362
|
-
action: z2.literal("discard"),
|
|
7363
|
-
etag: measurementDraftEtagInputSchema,
|
|
7364
|
-
idempotencyKey: idempotencyKeyInputSchema
|
|
7365
|
-
}).strict().describe("Operation for discard.")
|
|
7366
|
-
]);
|
|
7367
|
-
var measurementDraftActionInputSchema = z2.object({
|
|
7705
|
+
var measurementDraftActionInputSchema = z3.object({
|
|
7368
7706
|
project: projectNameSchema,
|
|
7369
7707
|
operation: measurementDraftOperationSchema.describe("Typed draft operation. Select exactly one action branch.")
|
|
7370
7708
|
}).strict();
|
|
@@ -7378,12 +7716,16 @@ var measurementDraftActionOpenApiOperations = [
|
|
|
7378
7716
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/exclude-target",
|
|
7379
7717
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/rebind-target",
|
|
7380
7718
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/apply-assignments",
|
|
7719
|
+
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/preview-assignments",
|
|
7720
|
+
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/replace-assignments",
|
|
7381
7721
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/apply-paired-assignments",
|
|
7382
7722
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/remove-assignment",
|
|
7383
7723
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/clear-assignments",
|
|
7384
7724
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/classify-assignments",
|
|
7385
7725
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/upsert-group",
|
|
7386
7726
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/remove-group",
|
|
7727
|
+
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/preview-group-membership",
|
|
7728
|
+
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/apply-group-membership",
|
|
7387
7729
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/upsert-competitor",
|
|
7388
7730
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/remove-competitor",
|
|
7389
7731
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/compile-preview",
|
|
@@ -7391,144 +7733,97 @@ var measurementDraftActionOpenApiOperations = [
|
|
|
7391
7733
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/publish",
|
|
7392
7734
|
"POST /api/v1/projects/{name}/measurement-plan/draft/actions/discard"
|
|
7393
7735
|
];
|
|
7394
|
-
|
|
7395
|
-
const { project, operation: actionInput } = input;
|
|
7396
|
-
switch (actionInput.action) {
|
|
7397
|
-
case "create":
|
|
7398
|
-
return client2.createMeasurementPlanDraft(project, actionInput.request, actionInput.idempotencyKey);
|
|
7399
|
-
case "import-sitemap":
|
|
7400
|
-
return client2.importMeasurementDraftSitemap(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7401
|
-
case "apply-sitemap-selection":
|
|
7402
|
-
return client2.applyMeasurementDraftSitemapSelection(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7403
|
-
case "upsert-target":
|
|
7404
|
-
return client2.upsertMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7405
|
-
case "rename-target":
|
|
7406
|
-
return client2.renameMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7407
|
-
case "merge-targets":
|
|
7408
|
-
return client2.mergeMeasurementDraftTargets(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7409
|
-
case "exclude-target":
|
|
7410
|
-
return client2.excludeMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7411
|
-
case "rebind-target":
|
|
7412
|
-
return client2.rebindMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7413
|
-
case "apply-assignments":
|
|
7414
|
-
return client2.applyMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7415
|
-
case "apply-paired-assignments":
|
|
7416
|
-
return client2.applyPairedMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7417
|
-
case "remove-assignment":
|
|
7418
|
-
return client2.removeMeasurementDraftAssignment(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7419
|
-
case "clear-assignments":
|
|
7420
|
-
return client2.clearMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7421
|
-
case "classify-assignments":
|
|
7422
|
-
return client2.classifyMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7423
|
-
case "upsert-group":
|
|
7424
|
-
return client2.upsertMeasurementDraftGroup(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7425
|
-
case "remove-group":
|
|
7426
|
-
return client2.removeMeasurementDraftGroup(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7427
|
-
case "upsert-competitor":
|
|
7428
|
-
return client2.upsertMeasurementDraftCompetitor(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7429
|
-
case "remove-competitor":
|
|
7430
|
-
return client2.removeMeasurementDraftCompetitor(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7431
|
-
case "compile-preview":
|
|
7432
|
-
return client2.compileMeasurementDraftPreview(project);
|
|
7433
|
-
case "diff-preview":
|
|
7434
|
-
return client2.diffMeasurementDraftPreview(project);
|
|
7435
|
-
case "publish":
|
|
7436
|
-
return client2.publishMeasurementDraft(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
|
|
7437
|
-
case "discard":
|
|
7438
|
-
return client2.discardMeasurementDraft(project, actionInput.idempotencyKey, actionInput.etag);
|
|
7439
|
-
}
|
|
7440
|
-
}
|
|
7441
|
-
var runsListInputSchema = z2.object({
|
|
7736
|
+
var runsListInputSchema = z3.object({
|
|
7442
7737
|
project: projectNameSchema,
|
|
7443
|
-
limit:
|
|
7738
|
+
limit: z3.number().int().positive().max(500).optional()
|
|
7444
7739
|
});
|
|
7445
|
-
var runGetInputSchema =
|
|
7740
|
+
var runGetInputSchema = z3.object({
|
|
7446
7741
|
runId: runIdSchema
|
|
7447
7742
|
});
|
|
7448
|
-
var timelineInputSchema =
|
|
7743
|
+
var timelineInputSchema = z3.object({
|
|
7449
7744
|
project: projectNameSchema,
|
|
7450
|
-
location:
|
|
7451
|
-
limit:
|
|
7745
|
+
location: z3.string().optional().describe("Location label. Use an empty string for locationless results."),
|
|
7746
|
+
limit: z3.number().int().positive().max(100).optional().describe("Restrict history to the most recent N project runs.")
|
|
7452
7747
|
});
|
|
7453
7748
|
var historyFilterShape = {
|
|
7454
|
-
limit:
|
|
7455
|
-
offset:
|
|
7456
|
-
since:
|
|
7457
|
-
action:
|
|
7458
|
-
actor:
|
|
7459
|
-
entityType:
|
|
7460
|
-
};
|
|
7461
|
-
var projectHistoryInputSchema =
|
|
7462
|
-
var globalHistoryInputSchema =
|
|
7463
|
-
var snapshotsListInputSchema =
|
|
7749
|
+
limit: z3.number().int().positive().max(500).optional(),
|
|
7750
|
+
offset: z3.number().int().nonnegative().optional(),
|
|
7751
|
+
since: z3.string().optional().describe("ISO 8601 lower bound."),
|
|
7752
|
+
action: z3.string().optional().describe("Exact audit action filter."),
|
|
7753
|
+
actor: z3.string().optional().describe("Exact actor filter."),
|
|
7754
|
+
entityType: z3.string().optional().describe("Exact entity type filter.")
|
|
7755
|
+
};
|
|
7756
|
+
var projectHistoryInputSchema = z3.object({ project: projectNameSchema, ...historyFilterShape });
|
|
7757
|
+
var globalHistoryInputSchema = z3.object(historyFilterShape);
|
|
7758
|
+
var snapshotsListInputSchema = z3.object({
|
|
7464
7759
|
project: projectNameSchema,
|
|
7465
|
-
limit:
|
|
7466
|
-
offset:
|
|
7467
|
-
location:
|
|
7760
|
+
limit: z3.number().int().positive().max(500).optional(),
|
|
7761
|
+
offset: z3.number().int().nonnegative().optional(),
|
|
7762
|
+
location: z3.string().optional().describe("Location label. Use an empty string for locationless results.")
|
|
7468
7763
|
});
|
|
7469
|
-
var snapshotsDiffInputSchema =
|
|
7764
|
+
var snapshotsDiffInputSchema = z3.object({
|
|
7470
7765
|
project: projectNameSchema,
|
|
7471
7766
|
run1: runIdSchema,
|
|
7472
7767
|
run2: runIdSchema
|
|
7473
7768
|
});
|
|
7474
|
-
var insightsListInputSchema =
|
|
7769
|
+
var insightsListInputSchema = z3.object({
|
|
7475
7770
|
project: projectNameSchema,
|
|
7476
|
-
dismissed:
|
|
7771
|
+
dismissed: z3.boolean().optional(),
|
|
7477
7772
|
runId: runIdSchema.optional()
|
|
7478
7773
|
});
|
|
7479
|
-
var insightInputSchema =
|
|
7774
|
+
var insightInputSchema = z3.object({
|
|
7480
7775
|
project: projectNameSchema,
|
|
7481
7776
|
insightId: insightIdSchema
|
|
7482
7777
|
});
|
|
7483
|
-
var healthHistoryInputSchema =
|
|
7778
|
+
var healthHistoryInputSchema = z3.object({
|
|
7484
7779
|
project: projectNameSchema,
|
|
7485
|
-
limit:
|
|
7780
|
+
limit: z3.number().int().positive().max(100).optional()
|
|
7486
7781
|
});
|
|
7487
|
-
var gscPerformanceInputSchema =
|
|
7782
|
+
var gscPerformanceInputSchema = z3.object({
|
|
7488
7783
|
project: projectNameSchema,
|
|
7489
|
-
startDate:
|
|
7490
|
-
endDate:
|
|
7491
|
-
query:
|
|
7492
|
-
page:
|
|
7493
|
-
limit:
|
|
7494
|
-
offset:
|
|
7784
|
+
startDate: z3.string().optional(),
|
|
7785
|
+
endDate: z3.string().optional(),
|
|
7786
|
+
query: z3.string().optional(),
|
|
7787
|
+
page: z3.string().optional(),
|
|
7788
|
+
limit: z3.number().int().positive().max(5e3).optional(),
|
|
7789
|
+
offset: z3.number().int().nonnegative().optional(),
|
|
7495
7790
|
orderBy: gscPerformanceOrderBySchema.optional(),
|
|
7496
7791
|
window: analyticsWindowSchema.optional()
|
|
7497
7792
|
});
|
|
7498
|
-
var gscPerformanceDailyInputSchema =
|
|
7793
|
+
var gscPerformanceDailyInputSchema = z3.object({
|
|
7499
7794
|
project: projectNameSchema,
|
|
7500
|
-
startDate:
|
|
7501
|
-
endDate:
|
|
7795
|
+
startDate: z3.string().optional(),
|
|
7796
|
+
endDate: z3.string().optional(),
|
|
7502
7797
|
window: analyticsWindowSchema.optional()
|
|
7503
7798
|
});
|
|
7504
|
-
var gscTopPagesInputSchema =
|
|
7799
|
+
var gscTopPagesInputSchema = z3.object({
|
|
7505
7800
|
project: projectNameSchema,
|
|
7506
|
-
startDate:
|
|
7507
|
-
endDate:
|
|
7508
|
-
limit:
|
|
7801
|
+
startDate: z3.string().optional(),
|
|
7802
|
+
endDate: z3.string().optional(),
|
|
7803
|
+
limit: z3.number().int().positive().max(500).optional(),
|
|
7509
7804
|
window: analyticsWindowSchema.optional()
|
|
7510
7805
|
});
|
|
7511
|
-
var gscInspectionsInputSchema =
|
|
7806
|
+
var gscInspectionsInputSchema = z3.object({
|
|
7512
7807
|
project: projectNameSchema,
|
|
7513
|
-
url:
|
|
7514
|
-
limit:
|
|
7808
|
+
url: z3.string().optional(),
|
|
7809
|
+
limit: z3.number().int().positive().max(500).optional()
|
|
7515
7810
|
});
|
|
7516
|
-
var gscCoverageHistoryInputSchema =
|
|
7811
|
+
var gscCoverageHistoryInputSchema = z3.object({
|
|
7517
7812
|
project: projectNameSchema,
|
|
7518
|
-
limit:
|
|
7813
|
+
limit: z3.number().int().positive().max(500).optional()
|
|
7519
7814
|
});
|
|
7520
|
-
var gscSitemapsInputSchema =
|
|
7815
|
+
var gscSitemapsInputSchema = z3.object({
|
|
7521
7816
|
project: projectNameSchema,
|
|
7522
|
-
sitemapIndex:
|
|
7817
|
+
sitemapIndex: z3.string().url().optional()
|
|
7523
7818
|
});
|
|
7524
|
-
var gscSitemapsSubmitInputSchema =
|
|
7525
|
-
|
|
7819
|
+
var gscSitemapsSubmitInputSchema = z3.union([
|
|
7820
|
+
z3.object({
|
|
7526
7821
|
project: projectNameSchema,
|
|
7527
|
-
sitemapUrls:
|
|
7822
|
+
sitemapUrls: z3.array(z3.string().url()).min(1).max(50)
|
|
7528
7823
|
}).strict(),
|
|
7529
|
-
|
|
7824
|
+
z3.object({
|
|
7530
7825
|
project: projectNameSchema,
|
|
7531
|
-
mode:
|
|
7826
|
+
mode: z3.enum(["indexes", "all-files"])
|
|
7532
7827
|
}).strict()
|
|
7533
7828
|
]);
|
|
7534
7829
|
async function submitGscSitemapsFromMcp(client2, input) {
|
|
@@ -7603,82 +7898,82 @@ async function submitGscSitemapsFromMcp(client2, input) {
|
|
|
7603
7898
|
}
|
|
7604
7899
|
return aggregate;
|
|
7605
7900
|
}
|
|
7606
|
-
var gaWindowInputSchema =
|
|
7901
|
+
var gaWindowInputSchema = z3.object({
|
|
7607
7902
|
project: projectNameSchema,
|
|
7608
7903
|
window: analyticsWindowSchema.optional(),
|
|
7609
|
-
startDate:
|
|
7610
|
-
endDate:
|
|
7904
|
+
startDate: z3.string().optional(),
|
|
7905
|
+
endDate: z3.string().optional()
|
|
7611
7906
|
});
|
|
7612
7907
|
var GA_RANGE_PARAMS = ["window", "startDate", "endDate"];
|
|
7613
7908
|
var gaTrafficInputSchema = gaWindowInputSchema.extend({
|
|
7614
|
-
limit:
|
|
7909
|
+
limit: z3.number().int().positive().max(500).optional()
|
|
7615
7910
|
});
|
|
7616
|
-
var gaMeasurementAnalysisInputSchema =
|
|
7911
|
+
var gaMeasurementAnalysisInputSchema = z3.object({
|
|
7617
7912
|
project: projectNameSchema,
|
|
7618
7913
|
window: gaMeasurementAnalysisWindowSchema.optional(),
|
|
7619
7914
|
hostScope: gaMeasurementHostScopeSchema.optional(),
|
|
7620
|
-
pathPrefix:
|
|
7621
|
-
limit:
|
|
7915
|
+
pathPrefix: z3.string().min(1).optional(),
|
|
7916
|
+
limit: z3.number().int().positive().max(100).optional()
|
|
7622
7917
|
});
|
|
7623
|
-
var queriesInputSchema =
|
|
7918
|
+
var queriesInputSchema = z3.object({
|
|
7624
7919
|
project: projectNameSchema,
|
|
7625
7920
|
request: queryBatchRequestSchema
|
|
7626
7921
|
});
|
|
7627
|
-
var queryGenerateInputSchema =
|
|
7922
|
+
var queryGenerateInputSchema = z3.object({
|
|
7628
7923
|
project: projectNameSchema,
|
|
7629
7924
|
request: queryGenerateRequestSchema
|
|
7630
7925
|
});
|
|
7631
|
-
var gbpListLocationsInputSchema =
|
|
7926
|
+
var gbpListLocationsInputSchema = z3.object({
|
|
7632
7927
|
project: projectNameSchema,
|
|
7633
|
-
selected:
|
|
7928
|
+
selected: z3.boolean().optional()
|
|
7634
7929
|
});
|
|
7635
|
-
var gbpDiscoverInputSchema =
|
|
7930
|
+
var gbpDiscoverInputSchema = z3.object({
|
|
7636
7931
|
project: projectNameSchema,
|
|
7637
|
-
selectAllNew:
|
|
7638
|
-
accountName:
|
|
7639
|
-
switchAccount:
|
|
7932
|
+
selectAllNew: z3.boolean().optional().default(true),
|
|
7933
|
+
accountName: z3.string().regex(/^accounts\//, 'accountName must be a Google resource name like "accounts/12345"').optional(),
|
|
7934
|
+
switchAccount: z3.boolean().optional().default(false)
|
|
7640
7935
|
});
|
|
7641
|
-
var gbpLocationSelectionInputSchema =
|
|
7936
|
+
var gbpLocationSelectionInputSchema = z3.object({
|
|
7642
7937
|
project: projectNameSchema,
|
|
7643
|
-
locationName:
|
|
7644
|
-
selected:
|
|
7938
|
+
locationName: z3.string().min(1).regex(/^locations\//, 'locationName must be a Google resource name like "locations/12345"'),
|
|
7939
|
+
selected: z3.boolean()
|
|
7645
7940
|
});
|
|
7646
|
-
var gbpSyncInputSchema =
|
|
7941
|
+
var gbpSyncInputSchema = z3.object({
|
|
7647
7942
|
project: projectNameSchema,
|
|
7648
|
-
locationNames:
|
|
7649
|
-
daysOfMetrics:
|
|
7650
|
-
monthsOfKeywords:
|
|
7943
|
+
locationNames: z3.array(z3.string()).optional(),
|
|
7944
|
+
daysOfMetrics: z3.number().int().positive().max(540).optional(),
|
|
7945
|
+
monthsOfKeywords: z3.number().int().positive().max(18).optional()
|
|
7651
7946
|
});
|
|
7652
|
-
var gbpMetricsInputSchema =
|
|
7947
|
+
var gbpMetricsInputSchema = z3.object({
|
|
7653
7948
|
project: projectNameSchema,
|
|
7654
|
-
locationName:
|
|
7655
|
-
metric:
|
|
7949
|
+
locationName: z3.string().optional(),
|
|
7950
|
+
metric: z3.string().optional()
|
|
7656
7951
|
});
|
|
7657
|
-
var gbpLocationScopedInputSchema =
|
|
7952
|
+
var gbpLocationScopedInputSchema = z3.object({
|
|
7658
7953
|
project: projectNameSchema,
|
|
7659
|
-
locationName:
|
|
7954
|
+
locationName: z3.string().optional()
|
|
7660
7955
|
});
|
|
7661
|
-
var gbpAccountsInputSchema =
|
|
7956
|
+
var gbpAccountsInputSchema = z3.object({
|
|
7662
7957
|
project: projectNameSchema
|
|
7663
7958
|
});
|
|
7664
|
-
var adsInsightsInputSchema =
|
|
7959
|
+
var adsInsightsInputSchema = z3.object({
|
|
7665
7960
|
project: projectNameSchema,
|
|
7666
|
-
level:
|
|
7667
|
-
entityId:
|
|
7668
|
-
from:
|
|
7669
|
-
to:
|
|
7961
|
+
level: z3.enum(["campaign", "ad_group"]).optional(),
|
|
7962
|
+
entityId: z3.string().optional(),
|
|
7963
|
+
from: z3.string().optional(),
|
|
7964
|
+
to: z3.string().optional()
|
|
7670
7965
|
});
|
|
7671
7966
|
var adsGeoSearchInputSchema = adsGeoSearchQuerySchema.extend({
|
|
7672
7967
|
project: projectNameSchema
|
|
7673
7968
|
});
|
|
7674
|
-
var adsLiveDeliveryInputSchema =
|
|
7969
|
+
var adsLiveDeliveryInputSchema = z3.object({
|
|
7675
7970
|
project: projectNameSchema,
|
|
7676
|
-
campaignId:
|
|
7677
|
-
lookbackDays:
|
|
7971
|
+
campaignId: z3.string().min(1).max(200).optional(),
|
|
7972
|
+
lookbackDays: z3.number().int().min(1).max(30).optional()
|
|
7678
7973
|
});
|
|
7679
|
-
var adsOperationInputSchema =
|
|
7974
|
+
var adsOperationInputSchema = z3.object({
|
|
7680
7975
|
project: projectNameSchema,
|
|
7681
|
-
operationKey:
|
|
7976
|
+
operationKey: z3.string().min(8).max(128)
|
|
7682
7977
|
});
|
|
7683
7978
|
var adsOperationResumeActivationInputSchema = adsOperationInputSchema.strict();
|
|
7684
7979
|
var adsUnresolvedOperationsInputSchema = adsUnresolvedOperationListQuerySchema.extend({
|
|
@@ -7686,238 +7981,238 @@ var adsUnresolvedOperationsInputSchema = adsUnresolvedOperationListQuerySchema.e
|
|
|
7686
7981
|
});
|
|
7687
7982
|
var adsOperationReconcileInputSchema = adsOperationReconcileRequestSchema.extend({
|
|
7688
7983
|
project: projectNameSchema,
|
|
7689
|
-
operationKey:
|
|
7984
|
+
operationKey: z3.string().min(8).max(128)
|
|
7690
7985
|
});
|
|
7691
|
-
var adsImageUploadInputSchema =
|
|
7986
|
+
var adsImageUploadInputSchema = z3.object({
|
|
7692
7987
|
project: projectNameSchema,
|
|
7693
7988
|
request: adsImageUploadRequestSchema
|
|
7694
7989
|
});
|
|
7695
|
-
var adsCampaignCreateInputSchema =
|
|
7990
|
+
var adsCampaignCreateInputSchema = z3.object({
|
|
7696
7991
|
project: projectNameSchema,
|
|
7697
7992
|
request: adsCampaignCreateRequestSchema
|
|
7698
7993
|
});
|
|
7699
|
-
var adsCampaignUpdateInputSchema =
|
|
7994
|
+
var adsCampaignUpdateInputSchema = z3.object({
|
|
7700
7995
|
project: projectNameSchema,
|
|
7701
|
-
campaignId:
|
|
7996
|
+
campaignId: z3.string().min(1),
|
|
7702
7997
|
request: adsCampaignUpdateRequestSchema
|
|
7703
7998
|
});
|
|
7704
|
-
var adsCampaignActivateTreeInputSchema =
|
|
7999
|
+
var adsCampaignActivateTreeInputSchema = z3.object({
|
|
7705
8000
|
project: projectNameSchema,
|
|
7706
|
-
campaignId:
|
|
8001
|
+
campaignId: z3.string().min(1),
|
|
7707
8002
|
request: adsActivateTreeRequestSchema
|
|
7708
8003
|
});
|
|
7709
|
-
var adsCampaignPauseInputSchema =
|
|
8004
|
+
var adsCampaignPauseInputSchema = z3.object({
|
|
7710
8005
|
project: projectNameSchema,
|
|
7711
|
-
campaignId:
|
|
8006
|
+
campaignId: z3.string().min(1),
|
|
7712
8007
|
request: adsPauseRequestSchema
|
|
7713
8008
|
});
|
|
7714
|
-
var adsAdGroupCreateInputSchema =
|
|
8009
|
+
var adsAdGroupCreateInputSchema = z3.object({
|
|
7715
8010
|
project: projectNameSchema,
|
|
7716
8011
|
request: adsAdGroupCreateRequestSchema
|
|
7717
8012
|
});
|
|
7718
|
-
var adsAdGroupUpdateInputSchema =
|
|
8013
|
+
var adsAdGroupUpdateInputSchema = z3.object({
|
|
7719
8014
|
project: projectNameSchema,
|
|
7720
|
-
adGroupId:
|
|
8015
|
+
adGroupId: z3.string().min(1),
|
|
7721
8016
|
request: adsAdGroupUpdateRequestSchema
|
|
7722
8017
|
});
|
|
7723
|
-
var adsAdGroupPauseInputSchema =
|
|
8018
|
+
var adsAdGroupPauseInputSchema = z3.object({
|
|
7724
8019
|
project: projectNameSchema,
|
|
7725
|
-
adGroupId:
|
|
8020
|
+
adGroupId: z3.string().min(1),
|
|
7726
8021
|
request: adsPauseRequestSchema
|
|
7727
8022
|
});
|
|
7728
|
-
var adsAdCreateInputSchema =
|
|
8023
|
+
var adsAdCreateInputSchema = z3.object({
|
|
7729
8024
|
project: projectNameSchema,
|
|
7730
8025
|
request: adsAdCreateRequestSchema
|
|
7731
8026
|
});
|
|
7732
|
-
var adsAdUpdateInputSchema =
|
|
8027
|
+
var adsAdUpdateInputSchema = z3.object({
|
|
7733
8028
|
project: projectNameSchema,
|
|
7734
|
-
adId:
|
|
8029
|
+
adId: z3.string().min(1),
|
|
7735
8030
|
request: adsAdUpdateRequestSchema
|
|
7736
8031
|
});
|
|
7737
|
-
var adsAdPauseInputSchema =
|
|
8032
|
+
var adsAdPauseInputSchema = z3.object({
|
|
7738
8033
|
project: projectNameSchema,
|
|
7739
|
-
adId:
|
|
8034
|
+
adId: z3.string().min(1),
|
|
7740
8035
|
request: adsPauseRequestSchema
|
|
7741
8036
|
});
|
|
7742
|
-
var keywordsInputSchema =
|
|
8037
|
+
var keywordsInputSchema = z3.object({
|
|
7743
8038
|
project: projectNameSchema,
|
|
7744
8039
|
request: keywordBatchRequestSchema
|
|
7745
8040
|
});
|
|
7746
|
-
var keywordGenerateInputSchema =
|
|
8041
|
+
var keywordGenerateInputSchema = z3.object({
|
|
7747
8042
|
project: projectNameSchema,
|
|
7748
8043
|
request: keywordGenerateRequestSchema
|
|
7749
8044
|
});
|
|
7750
|
-
var competitorsInputSchema =
|
|
8045
|
+
var competitorsInputSchema = z3.object({
|
|
7751
8046
|
project: projectNameSchema,
|
|
7752
8047
|
request: competitorBatchRequestSchema
|
|
7753
8048
|
});
|
|
7754
|
-
var projectUpsertInputSchema =
|
|
8049
|
+
var projectUpsertInputSchema = z3.object({
|
|
7755
8050
|
project: projectNameSchema,
|
|
7756
8051
|
request: projectUpsertRequestSchema
|
|
7757
8052
|
});
|
|
7758
|
-
var applyConfigInputSchema =
|
|
8053
|
+
var applyConfigInputSchema = z3.object({
|
|
7759
8054
|
config: projectConfigSchema
|
|
7760
8055
|
});
|
|
7761
|
-
var scheduleSetInputSchema =
|
|
8056
|
+
var scheduleSetInputSchema = z3.object({
|
|
7762
8057
|
project: projectNameSchema,
|
|
7763
8058
|
schedule: scheduleUpsertRequestSchema
|
|
7764
8059
|
});
|
|
7765
|
-
var scheduleReadInputSchema =
|
|
8060
|
+
var scheduleReadInputSchema = z3.object({
|
|
7766
8061
|
project: projectNameSchema,
|
|
7767
8062
|
kind: schedulableRunKindSchema.optional().describe('Schedulable run kind. Defaults to "answer-visibility" if omitted.')
|
|
7768
8063
|
});
|
|
7769
|
-
var agentWebhookAttachInputSchema =
|
|
8064
|
+
var agentWebhookAttachInputSchema = z3.object({
|
|
7770
8065
|
project: projectNameSchema,
|
|
7771
|
-
url:
|
|
8066
|
+
url: z3.string().url()
|
|
7772
8067
|
});
|
|
7773
|
-
var doctorInputSchema =
|
|
8068
|
+
var doctorInputSchema = z3.object({
|
|
7774
8069
|
project: projectNameSchema.optional().describe("Project name to scope project-level checks. Omit to run global checks (provider keys, config, etc.)."),
|
|
7775
|
-
checks:
|
|
8070
|
+
checks: z3.array(z3.string().min(1)).optional().describe('Optional check IDs or wildcard prefixes (e.g. "google.auth.*", "config.providers"). Empty/omitted runs all matching checks for the chosen scope.')
|
|
7776
8071
|
});
|
|
7777
|
-
var contentTargetsInputSchema =
|
|
8072
|
+
var contentTargetsInputSchema = z3.object({
|
|
7778
8073
|
project: projectNameSchema,
|
|
7779
|
-
limit:
|
|
7780
|
-
includeInProgress:
|
|
7781
|
-
winnabilityClass:
|
|
7782
|
-
ownable:
|
|
8074
|
+
limit: z3.number().int().positive().max(500).optional().describe("Max rows. Defaults to all. Use a small number (3-10) when summarizing for the user."),
|
|
8075
|
+
includeInProgress: z3.boolean().optional().describe("Include rows that already have an in-flight tracked action. Default false."),
|
|
8076
|
+
winnabilityClass: z3.enum(["ownable", "ceded"]).optional().describe('Filter by winnability: "ownable" (worth a brief) or "ceded" (aggregator/editorial head term to skip).'),
|
|
8077
|
+
ownable: z3.boolean().optional().describe('Convenience: when true, return only ownable targets (same as winnabilityClass="ownable").')
|
|
7783
8078
|
});
|
|
7784
|
-
var contentBriefInputSchema =
|
|
8079
|
+
var contentBriefInputSchema = z3.object({
|
|
7785
8080
|
project: projectNameSchema,
|
|
7786
|
-
targetRef:
|
|
7787
|
-
provider:
|
|
7788
|
-
model:
|
|
7789
|
-
forceRefresh:
|
|
8081
|
+
targetRef: z3.string().min(1).describe("Stable target ref from canonry_content_targets. The target must be ownable; ceded targets are rejected."),
|
|
8082
|
+
provider: z3.string().optional().describe("Optional provider override (claude|openai|gemini|zai|deepinfra)."),
|
|
8083
|
+
model: z3.string().optional().describe("Optional model override within the chosen provider."),
|
|
8084
|
+
forceRefresh: z3.boolean().optional().describe("Force a fresh synthesis even if a cached brief exists.")
|
|
7790
8085
|
});
|
|
7791
|
-
var contentMapInputSchema =
|
|
8086
|
+
var contentMapInputSchema = z3.object({
|
|
7792
8087
|
project: projectNameSchema
|
|
7793
8088
|
});
|
|
7794
|
-
var backlinksDomainsInputSchema =
|
|
8089
|
+
var backlinksDomainsInputSchema = z3.object({
|
|
7795
8090
|
project: projectNameSchema,
|
|
7796
|
-
limit:
|
|
7797
|
-
release:
|
|
8091
|
+
limit: z3.number().int().positive().max(200).optional().describe("Max linking-domain rows. Default 50, max 200."),
|
|
8092
|
+
release: z3.string().optional().describe("Common Crawl release id, e.g. cc-main-2026-jan-feb-mar. Omit for the most recent release with data."),
|
|
7798
8093
|
source: backlinkSourceSchema.optional().describe("Stored source. Common Crawl is active; bing-webmaster is historical-only.")
|
|
7799
8094
|
});
|
|
7800
|
-
var backlinksSourcesInputSchema =
|
|
8095
|
+
var backlinksSourcesInputSchema = z3.object({
|
|
7801
8096
|
project: projectNameSchema
|
|
7802
8097
|
});
|
|
7803
|
-
var memoryUpsertInputSchema =
|
|
8098
|
+
var memoryUpsertInputSchema = z3.object({
|
|
7804
8099
|
project: projectNameSchema,
|
|
7805
|
-
key:
|
|
7806
|
-
value:
|
|
8100
|
+
key: z3.string().min(1).max(AGENT_MEMORY_KEY_MAX_LENGTH).describe(`Stable identifier for the note (max ${AGENT_MEMORY_KEY_MAX_LENGTH} chars). Writing the same key overwrites the prior value.`),
|
|
8101
|
+
value: z3.string().min(1).describe(`Plain-text note body (max ${AGENT_MEMORY_VALUE_MAX_BYTES} bytes). Use for durable operator preferences, migration context, or non-obvious reasoning that should survive future sessions.`)
|
|
7807
8102
|
});
|
|
7808
|
-
var memoryForgetInputSchema =
|
|
8103
|
+
var memoryForgetInputSchema = z3.object({
|
|
7809
8104
|
project: projectNameSchema,
|
|
7810
|
-
key:
|
|
8105
|
+
key: z3.string().min(1).max(AGENT_MEMORY_KEY_MAX_LENGTH).describe("Exact key of the note to remove. No-op (status=missing) when no note exists for that key.")
|
|
7811
8106
|
});
|
|
7812
|
-
var trafficConnectCloudRunInputSchema =
|
|
8107
|
+
var trafficConnectCloudRunInputSchema = z3.object({
|
|
7813
8108
|
project: projectNameSchema,
|
|
7814
8109
|
request: trafficConnectCloudRunRequestSchema
|
|
7815
8110
|
});
|
|
7816
|
-
var trafficConnectWordpressInputSchema =
|
|
8111
|
+
var trafficConnectWordpressInputSchema = z3.object({
|
|
7817
8112
|
project: projectNameSchema,
|
|
7818
8113
|
request: trafficConnectWordpressRequestSchema
|
|
7819
8114
|
});
|
|
7820
|
-
var trafficConnectVercelInputSchema =
|
|
8115
|
+
var trafficConnectVercelInputSchema = z3.object({
|
|
7821
8116
|
project: projectNameSchema,
|
|
7822
8117
|
request: trafficConnectVercelRequestSchema
|
|
7823
8118
|
});
|
|
7824
|
-
var trafficSyncInputSchema =
|
|
8119
|
+
var trafficSyncInputSchema = z3.object({
|
|
7825
8120
|
project: projectNameSchema,
|
|
7826
|
-
sourceId:
|
|
7827
|
-
sinceMinutes:
|
|
8121
|
+
sourceId: z3.string().min(1).describe("Traffic source ID returned by canonry_traffic_connect_cloud_run or canonry_traffic_sources_list."),
|
|
8122
|
+
sinceMinutes: z3.number().int().positive().max(7 * 24 * 60).optional().describe("Lookback window in minutes. Defaults to the source's configured window (60 min) when omitted; clamped forward to lastSyncedAt to avoid double-counting.")
|
|
7828
8123
|
});
|
|
7829
|
-
var trafficBackfillInputSchema =
|
|
8124
|
+
var trafficBackfillInputSchema = z3.object({
|
|
7830
8125
|
project: projectNameSchema,
|
|
7831
|
-
sourceId:
|
|
7832
|
-
days:
|
|
8126
|
+
sourceId: z3.string().min(1).describe("Traffic source ID returned by canonry_traffic_sources_list."),
|
|
8127
|
+
days: z3.number().int().positive().max(30).optional().describe("Lookback window in days. Default 30, capped server-side at the upstream log retention ceiling (Cloud Logging _Default = 30d).")
|
|
7833
8128
|
});
|
|
7834
|
-
var trafficResetInputSchema =
|
|
8129
|
+
var trafficResetInputSchema = z3.object({
|
|
7835
8130
|
project: projectNameSchema,
|
|
7836
|
-
sourceId:
|
|
7837
|
-
advanceToNow:
|
|
8131
|
+
sourceId: z3.string().min(1).describe("Traffic source ID returned by canonry_traffic_sources_list."),
|
|
8132
|
+
advanceToNow: z3.literal(true).describe("Must be `true`. Explicit gate against accidental resets. Advances lastSyncedAt to NOW and clears the source's error state.")
|
|
7838
8133
|
});
|
|
7839
|
-
var trafficEventsInputSchema =
|
|
8134
|
+
var trafficEventsInputSchema = z3.object({
|
|
7840
8135
|
project: projectNameSchema,
|
|
7841
|
-
since:
|
|
7842
|
-
until:
|
|
7843
|
-
kind:
|
|
7844
|
-
sourceId:
|
|
7845
|
-
limit:
|
|
8136
|
+
since: z3.string().optional().describe("ISO 8601 lower bound. Defaults to 24h ago when omitted."),
|
|
8137
|
+
until: z3.string().optional().describe("ISO 8601 upper bound. Defaults to now when omitted."),
|
|
8138
|
+
kind: z3.union([trafficEventKindSchema, z3.literal("all")]).optional().describe('Filter to one traffic kind; "all" (default) returns every kind.'),
|
|
8139
|
+
sourceId: z3.string().min(1).optional().describe("Restrict to a single traffic source ID."),
|
|
8140
|
+
limit: z3.number().int().positive().max(5e3).optional().describe("Max combined rows. Defaults to 500, max 5000. Totals always reflect the full window."),
|
|
7846
8141
|
granularity: trafficSeriesGranularitySchema.optional().describe("Full-window chart series bucket size: hour (default) or day.")
|
|
7847
8142
|
});
|
|
7848
|
-
var trafficSourceIdInputSchema =
|
|
8143
|
+
var trafficSourceIdInputSchema = z3.object({
|
|
7849
8144
|
project: projectNameSchema,
|
|
7850
|
-
sourceId:
|
|
8145
|
+
sourceId: z3.string().min(1).describe("Traffic source ID.")
|
|
7851
8146
|
});
|
|
7852
|
-
var discoveryRunInputSchema =
|
|
8147
|
+
var discoveryRunInputSchema = z3.object({
|
|
7853
8148
|
project: projectNameSchema,
|
|
7854
8149
|
request: discoveryRunRequestSchema.extend({
|
|
7855
8150
|
// Stronger descriptions for the LLM. The base Zod schema enforces the
|
|
7856
8151
|
// upper bound; this just clarifies the meaning of each knob.
|
|
7857
|
-
icpDescription:
|
|
7858
|
-
buyerDescription:
|
|
7859
|
-
seedProviders:
|
|
7860
|
-
dedupThreshold:
|
|
7861
|
-
maxProbes:
|
|
7862
|
-
probeConcurrency:
|
|
8152
|
+
icpDescription: z3.string().min(1).optional().describe("Free-text ICP description. If omitted, the project must already have spec.icpDescription stored."),
|
|
8153
|
+
buyerDescription: z3.string().min(1).optional().describe("Who evaluates or buys the offering, separate from the ICP. When present, every generated query is anchored on this buyer."),
|
|
8154
|
+
seedProviders: z3.array(z3.enum(["gemini", "openai"])).min(1).optional().describe('Which providers generate seed candidates. Omit for the Gemini-only default; ["gemini","openai"] merges both phrasing distributions before dedup.'),
|
|
8155
|
+
dedupThreshold: z3.number().min(0).max(1).optional().describe("Cosine similarity threshold for clustering seed candidates. Defaults to 0.85. Lower values dedupe more aggressively."),
|
|
8156
|
+
maxProbes: z3.number().int().positive().max(DISCOVERY_MAX_PROBES_CAP).optional().describe(`Max canonical queries to probe in this session. Default 100, hard cap ${DISCOVERY_MAX_PROBES_CAP}.`),
|
|
8157
|
+
probeConcurrency: z3.number().int().min(1).max(DISCOVERY_PROBE_CONCURRENCY_CAP).optional().describe(`How many probes may run in parallel. Default 1 (strictly serial), hard cap ${DISCOVERY_PROBE_CONCURRENCY_CAP}. Probe rows are persisted in canonical order regardless of concurrency, so this only shortens wall-clock time.`)
|
|
7863
8158
|
}).optional()
|
|
7864
8159
|
});
|
|
7865
|
-
var discoverySessionsListInputSchema =
|
|
8160
|
+
var discoverySessionsListInputSchema = z3.object({
|
|
7866
8161
|
project: projectNameSchema,
|
|
7867
|
-
limit:
|
|
8162
|
+
limit: z3.number().int().positive().max(200).optional().describe("Max sessions returned. Default 50.")
|
|
7868
8163
|
});
|
|
7869
|
-
var discoverySessionIdInputSchema =
|
|
8164
|
+
var discoverySessionIdInputSchema = z3.object({
|
|
7870
8165
|
project: projectNameSchema,
|
|
7871
|
-
sessionId:
|
|
8166
|
+
sessionId: z3.string().min(1).describe("Discovery session ID returned by canonry_discover_run_start.")
|
|
7872
8167
|
});
|
|
7873
|
-
var researchRunStartInputSchema =
|
|
8168
|
+
var researchRunStartInputSchema = z3.object({
|
|
7874
8169
|
project: projectNameSchema,
|
|
7875
8170
|
request: researchRunCreateSchema.describe("One shared provider/model/location context for every free-form query in this saved research batch.")
|
|
7876
8171
|
});
|
|
7877
|
-
var researchRunsListInputSchema =
|
|
8172
|
+
var researchRunsListInputSchema = z3.object({
|
|
7878
8173
|
project: projectNameSchema,
|
|
7879
|
-
limit:
|
|
8174
|
+
limit: z3.number().int().positive().max(100).optional().describe("Max saved research runs returned. Default 20.")
|
|
7880
8175
|
});
|
|
7881
|
-
var researchRunIdInputSchema =
|
|
8176
|
+
var researchRunIdInputSchema = z3.object({
|
|
7882
8177
|
project: projectNameSchema,
|
|
7883
|
-
runId:
|
|
8178
|
+
runId: z3.string().min(1).describe("Research run ID returned by canonry_research_run_start.")
|
|
7884
8179
|
});
|
|
7885
|
-
var discoveryHarvestInputSchema =
|
|
8180
|
+
var discoveryHarvestInputSchema = z3.object({
|
|
7886
8181
|
project: projectNameSchema,
|
|
7887
|
-
sessionId:
|
|
7888
|
-
minProbeHits:
|
|
7889
|
-
anchor:
|
|
8182
|
+
sessionId: z3.string().min(1).describe("Discovery session ID returned by canonry_discover_run_start."),
|
|
8183
|
+
minProbeHits: z3.number().int().positive().optional().describe("Recurrence floor \u2014 a candidate must have appeared in at least this many distinct probes to be admitted. Default 1."),
|
|
8184
|
+
anchor: z3.boolean().optional().describe("Apply the subject-anchor filter that drops off-topic acronym collisions. Default true; pass false for new-subject discovery on a well-scoped project.")
|
|
7890
8185
|
});
|
|
7891
|
-
var discoveryPromoteInputSchema =
|
|
8186
|
+
var discoveryPromoteInputSchema = z3.object({
|
|
7892
8187
|
project: projectNameSchema,
|
|
7893
|
-
sessionId:
|
|
8188
|
+
sessionId: z3.string().min(1).describe("Discovery session ID returned by canonry_discover_run_start."),
|
|
7894
8189
|
request: discoveryPromoteRequestSchema.extend({
|
|
7895
8190
|
// Stronger descriptions for the LLM. The base Zod schema enforces the shape.
|
|
7896
|
-
buckets:
|
|
7897
|
-
includeCompetitors:
|
|
7898
|
-
competitorTypes:
|
|
8191
|
+
buckets: z3.array(discoveryBucketSchema).min(1).optional().describe("Which probe buckets to adopt into the tracked basket. Omitted promotes cited + aspirational; include wasted-surface explicitly for off-ICP competitor gaps."),
|
|
8192
|
+
includeCompetitors: z3.boolean().optional().describe("Whether to also merge recurring discovered competitor domains into the project. Defaults to true."),
|
|
8193
|
+
competitorTypes: z3.array(discoveryCompetitorTypeSchema).min(1).optional().describe("Which classified competitor types to merge. Omitted promotes direct-competitor only; pass an explicit list to also adopt editorial-media channels or to recover legacy unknown entries. Ignored when includeCompetitors is false.")
|
|
7899
8194
|
}).optional()
|
|
7900
8195
|
});
|
|
7901
|
-
var technicalAeoScoreInputSchema =
|
|
8196
|
+
var technicalAeoScoreInputSchema = z3.object({
|
|
7902
8197
|
project: projectNameSchema,
|
|
7903
8198
|
runId: runIdSchema.optional().describe("Historical site-audit run ID. Omit for the latest audit.")
|
|
7904
8199
|
});
|
|
7905
|
-
var technicalAeoPagesInputSchema =
|
|
8200
|
+
var technicalAeoPagesInputSchema = z3.object({
|
|
7906
8201
|
project: projectNameSchema,
|
|
7907
8202
|
runId: runIdSchema.optional().describe("Historical site-audit run ID. Omit for the latest audit."),
|
|
7908
|
-
status:
|
|
7909
|
-
sort:
|
|
7910
|
-
limit:
|
|
7911
|
-
offset:
|
|
8203
|
+
status: z3.enum(["success", "error"]).optional().describe("Filter to successfully-audited or errored pages."),
|
|
8204
|
+
sort: z3.enum(["score-asc", "score-desc", "url"]).optional().describe("Sort order. Defaults to score-asc (worst pages first)."),
|
|
8205
|
+
limit: z3.number().int().positive().max(500).optional(),
|
|
8206
|
+
offset: z3.number().int().nonnegative().optional()
|
|
7912
8207
|
});
|
|
7913
|
-
var technicalAeoTrendInputSchema =
|
|
8208
|
+
var technicalAeoTrendInputSchema = z3.object({
|
|
7914
8209
|
project: projectNameSchema,
|
|
7915
|
-
limit:
|
|
8210
|
+
limit: z3.number().int().positive().max(365).optional()
|
|
7916
8211
|
});
|
|
7917
|
-
var technicalAeoRunInputSchema =
|
|
8212
|
+
var technicalAeoRunInputSchema = z3.object({
|
|
7918
8213
|
project: projectNameSchema,
|
|
7919
|
-
sitemapUrl:
|
|
7920
|
-
limit:
|
|
8214
|
+
sitemapUrl: z3.string().url().optional().describe("Override the sitemap URL. Defaults to https://<canonicalDomain>/sitemap.xml."),
|
|
8215
|
+
limit: z3.number().int().positive().max(2e3).optional().describe("Cap pages audited (highest sitemap <priority> first).")
|
|
7921
8216
|
});
|
|
7922
8217
|
var AGENT_WEBHOOK_EVENTS = [
|
|
7923
8218
|
notificationEventSchema.enum["run.completed"],
|
|
@@ -7943,7 +8238,7 @@ var canonryMcpTools = [
|
|
|
7943
8238
|
description: "Get a Canonry project by name.",
|
|
7944
8239
|
access: "read",
|
|
7945
8240
|
tier: "core",
|
|
7946
|
-
inputSchema:
|
|
8241
|
+
inputSchema: projectInputSchema,
|
|
7947
8242
|
annotations: readAnnotations(),
|
|
7948
8243
|
openApiOperations: ["GET /api/v1/projects/{name}"],
|
|
7949
8244
|
handler: (client2, input) => client2.getProject(input.project)
|
|
@@ -7965,10 +8260,10 @@ var canonryMcpTools = [
|
|
|
7965
8260
|
description: 'One-call summary for "how is project X doing?". Returns independent mention and citation coverage, separate query-level movement for each signal, query-basket comparability with added/removed counts, latest run and health, insights, provider/model breakdowns, competitors, attention items, and recent history. Movement excludes queries not shared by both sweeps. Filterable by location and time window. Prefer this over fanning out to separate tools.',
|
|
7966
8261
|
access: "read",
|
|
7967
8262
|
tier: "core",
|
|
7968
|
-
inputSchema:
|
|
8263
|
+
inputSchema: z3.object({
|
|
7969
8264
|
project: projectNameSchema,
|
|
7970
|
-
location:
|
|
7971
|
-
since:
|
|
8265
|
+
location: z3.string().optional().describe('Filter to runs from this location label (e.g. "Boston, MA, US"). Omit for all locations.'),
|
|
8266
|
+
since: z3.string().optional().describe("ISO 8601 datetime \u2014 only include runs at or after this time. Omit for full history.")
|
|
7972
8267
|
}),
|
|
7973
8268
|
annotations: readAnnotations(),
|
|
7974
8269
|
openApiOperations: ["GET /api/v1/projects/{name}/overview"],
|
|
@@ -7983,7 +8278,7 @@ var canonryMcpTools = [
|
|
|
7983
8278
|
description: "Returns the full canonical AEO report bundle for a project \u2014 executive summary, client summary, agency diagnostics, action plan, per-query \xD7 per-provider citation matrix, competitor landscape, AI citation sources, GSC/GA4 performance, social and AI referrals, indexing health, citations trend, prioritized insights, and recommended next steps. Same payload `canonry report <project>` consumes to render audience-specific HTML. Pass `period` (7/14/30/90 days, default 30) to scope the GSC/GA4/server-activity sections and the period-over-period comparisons.",
|
|
7984
8279
|
access: "read",
|
|
7985
8280
|
tier: "monitoring",
|
|
7986
|
-
inputSchema:
|
|
8281
|
+
inputSchema: z3.object({
|
|
7987
8282
|
project: projectNameSchema,
|
|
7988
8283
|
period: reportPeriodSchema.optional()
|
|
7989
8284
|
}),
|
|
@@ -7997,7 +8292,7 @@ var canonryMcpTools = [
|
|
|
7997
8292
|
description: "One-call investigation of whether organic work is gaining visibility, traffic, or AI attention. Returns source-specific 30-day GSC and GA4 cohorts, URL-agnostic page evidence, available GA4 lead-event evidence (not lead attribution), server-observed AI crawling/user-fetch/referral evidence, the latest answer-visibility sweep, source coverage, findings, and limitations. It preserves native units. Prefer this over fanning out across GSC, GA, traffic, and visibility tools.",
|
|
7998
8293
|
access: "read",
|
|
7999
8294
|
tier: "monitoring",
|
|
8000
|
-
inputSchema:
|
|
8295
|
+
inputSchema: z3.object({
|
|
8001
8296
|
project: projectNameSchema,
|
|
8002
8297
|
period: organicEvidencePeriodSchema.optional().describe("Evidence window: 60 or 90 days (default 90).")
|
|
8003
8298
|
}),
|
|
@@ -8011,7 +8306,7 @@ var canonryMcpTools = [
|
|
|
8011
8306
|
description: "Citation and mention rates over time for a project, bucketed adaptively (daily \u2192 monthly by span) and probe-excluded. Returns overall + per-provider window aggregates AND a per-bucket `byProvider` breakdown so you can read how each engine's cited/mentioned rate moved run-over-run \u2014 the same data the dashboard's \"Citations & mentions over time\" chart plots. Includes trend direction (improving/declining/stable) for both signals and query-set-change annotations. Filter the range with `window` (7d/30d/90d/all).",
|
|
8012
8307
|
access: "read",
|
|
8013
8308
|
tier: "monitoring",
|
|
8014
|
-
inputSchema:
|
|
8309
|
+
inputSchema: z3.object({
|
|
8015
8310
|
project: projectNameSchema,
|
|
8016
8311
|
window: analyticsWindowSchema.optional().describe("Time range: 7d, 30d, 90d, or all (default all).")
|
|
8017
8312
|
}),
|
|
@@ -8025,10 +8320,10 @@ var canonryMcpTools = [
|
|
|
8025
8320
|
description: "Where AI engines get the facts they cite for a project. Returns the FULL ranked list of cited domains (not truncated) \u2014 each tagged with a category and an actionable surface class (own / direct-competitor / ota-aggregator / editorial-media / other) \u2014 plus a surface-class roll-up and a per-provider breakdown (each provider's cited-domain mix + total cited slots). The surface class is deterministic (own/competitor from project data, the rest from the source allow-list) and enriched by discovery's stored per-domain classifications when present \u2014 no new LLM calls. Probe-excluded, window-filterable (7d/30d/90d/all). Use `limit` to cap each ranked list to the top N domains (an explicit long-tail rollup preserves the totals). All counts/shares/classification are computed server-side.",
|
|
8026
8321
|
access: "read",
|
|
8027
8322
|
tier: "monitoring",
|
|
8028
|
-
inputSchema:
|
|
8323
|
+
inputSchema: z3.object({
|
|
8029
8324
|
project: projectNameSchema,
|
|
8030
8325
|
window: analyticsWindowSchema.optional().describe("Time range: 7d, 30d, 90d, or all (default all)."),
|
|
8031
|
-
limit:
|
|
8326
|
+
limit: z3.number().int().positive().optional().describe("Cap each ranked list to the top N domains. Omit for the full list.")
|
|
8032
8327
|
}),
|
|
8033
8328
|
annotations: readAnnotations(),
|
|
8034
8329
|
openApiOperations: ["GET /api/v1/projects/{name}/analytics/sources"],
|
|
@@ -8040,10 +8335,10 @@ var canonryMcpTools = [
|
|
|
8040
8335
|
description: "Search query snapshots and intelligence insights for the given text. Looks at snapshot answer text, cited domains, raw provider responses, and insight title/query/recommendation/cause. Returns ranked hits with snippets \u2014 use it instead of paginating snapshots when you need to find a competitor mention or term.",
|
|
8041
8336
|
access: "read",
|
|
8042
8337
|
tier: "core",
|
|
8043
|
-
inputSchema:
|
|
8338
|
+
inputSchema: z3.object({
|
|
8044
8339
|
project: projectNameSchema,
|
|
8045
|
-
q:
|
|
8046
|
-
limit:
|
|
8340
|
+
q: z3.string().min(2).describe("Search term, at least 2 characters."),
|
|
8341
|
+
limit: z3.number().int().positive().max(50).optional().describe("Max combined hits (1-50, default 25).")
|
|
8047
8342
|
}),
|
|
8048
8343
|
annotations: readAnnotations(),
|
|
8049
8344
|
openApiOperations: ["GET /api/v1/projects/{name}/search"],
|
|
@@ -8231,14 +8526,14 @@ var canonryMcpTools = [
|
|
|
8231
8526
|
description: 'Per-query mention (answer-text) and citation (source-list) counts WITH a sample size, pooled across many answer-visibility runs (probe-excluded) \u2014 the data to compute a confidence-aware (Wilson) proportion or detect drift without fetching every run. Tri-state aware: `checked` (the n for the mention proportion) counts only snapshots where answerMentioned was recorded; `null` ("not checked") is excluded, never counted as not-mentioned. Returns per-query `total`/`checked`/`mentioned`/`cited` + derived `mentionRate` (mentioned/checked) and `citedRate` (cited/total), `firstObserved`/`lastObserved`, and pooled `totals`. Window with `since`/`until` (ISO), `lastRuns`, or `month=YYYY-MM` (mutually exclusive); with none set, EVERY completed/partial run is pooled (`window.runCount` says how many) \u2014 pass `lastRuns` for a recent sample. Set `groupBy=provider` for a per-provider breakdown whose counts sum to the pooled counts (`groupBy` is omitted from the response otherwise). Set `shareOfVoice=true` for pooled project-vs-tracked-competitor brand-mention share across the same attributed snapshot set.',
|
|
8232
8527
|
access: "read",
|
|
8233
8528
|
tier: "monitoring",
|
|
8234
|
-
inputSchema:
|
|
8529
|
+
inputSchema: z3.object({
|
|
8235
8530
|
project: projectNameSchema,
|
|
8236
|
-
since:
|
|
8237
|
-
until:
|
|
8238
|
-
lastRuns:
|
|
8239
|
-
month:
|
|
8240
|
-
groupBy:
|
|
8241
|
-
shareOfVoice:
|
|
8531
|
+
since: z3.string().optional().describe("Inclusive lower bound on run createdAt (ISO 8601). A date-only value (YYYY-MM-DD) is the start of that UTC day. Mutually exclusive with lastRuns/month."),
|
|
8532
|
+
until: z3.string().optional().describe("Inclusive upper bound on run createdAt (ISO 8601). A date-only value (YYYY-MM-DD) covers the whole UTC day (through 23:59:59.999). Mutually exclusive with lastRuns/month."),
|
|
8533
|
+
lastRuns: z3.number().int().positive().optional().describe("Aggregate only the most recent N answer-visibility runs. Mutually exclusive with since/until/month."),
|
|
8534
|
+
month: z3.string().optional().describe("Aggregate one calendar month (YYYY-MM), expanded to that month's inclusive UTC bounds. Mutually exclusive with since/until/lastRuns."),
|
|
8535
|
+
groupBy: z3.enum(["provider"]).optional().describe('Set to "provider" for a per-provider breakdown.'),
|
|
8536
|
+
shareOfVoice: z3.boolean().optional().describe("Include pooled project-vs-tracked-competitor brand-mention share across the same window.")
|
|
8242
8537
|
}),
|
|
8243
8538
|
annotations: readAnnotations(),
|
|
8244
8539
|
openApiOperations: ["GET /api/v1/projects/{name}/visibility-stats"],
|
|
@@ -8257,10 +8552,10 @@ var canonryMcpTools = [
|
|
|
8257
8552
|
description: "Statistically honest month-over-month AEO comparison in ONE call \u2014 use this instead of hand-computing deltas from two visibility-stats calls. Share of voice (`mention-share-of-voice`, `driftRobust: true`) is less exposed to broad model-wide naming propensity than absolute rates, but it never overrides model continuity. The response restricts to common query/provider pairs, then includes only providers with exactly one known, identical configured model id in both months. `continuity` surfaces every provider, its model evidence, and whether it was excluded for a changed, mixed mid-month, or unknown model. When no provider remains, metrics return `model-discontinuous` or `model-unknown`, never a directional call. A silent upstream version bump under an unchanged configured id remains undetectable. `from` must be a month strictly before `to`.",
|
|
8258
8553
|
access: "read",
|
|
8259
8554
|
tier: "monitoring",
|
|
8260
|
-
inputSchema:
|
|
8555
|
+
inputSchema: z3.object({
|
|
8261
8556
|
project: projectNameSchema,
|
|
8262
|
-
from:
|
|
8263
|
-
to:
|
|
8557
|
+
from: z3.string().describe('Earlier calendar month (YYYY-MM), the baseline. Must be strictly before "to".'),
|
|
8558
|
+
to: z3.string().describe('Later calendar month (YYYY-MM), compared against "from".')
|
|
8264
8559
|
}),
|
|
8265
8560
|
annotations: readAnnotations(),
|
|
8266
8561
|
openApiOperations: ["GET /api/v1/projects/{name}/visibility-compare"],
|
|
@@ -9122,7 +9417,7 @@ var canonryMcpTools = [
|
|
|
9122
9417
|
defineTool({
|
|
9123
9418
|
name: "canonry_measurement_property_evidence",
|
|
9124
9419
|
title: "Page one Property's measurement evidence",
|
|
9125
|
-
description: "Return the stored
|
|
9420
|
+
description: "Return the stored evidence rows for exactly one Property out of one revision-pinned run, optionally narrowed to a question class, provider, or location. shape chooses what a row is: sources (the default) returns one row per cited URL under evidence; answers returns one row per measured answer under answers, with the cited URLs nested inside and both signals on the row (mentioned, cited). Use shape=answers to explain a GAP \u2014 an answer that mentioned the Property without linking it, or that named nobody at all, has no URL to hang a source row on and does not appear in the default shape, so counting source rows understates what was measured. mentioned is null, never false, when the answer text was never captured: that is a missing signal, not a measured no. Exactly one of evidence or answers is returned and the other is absent rather than empty. A cursor is bound to the shape that issued it and is refused on the other. Prefer this over canonry_measurement_report when you want one Property: the report reconstructs every group and every Target for a revision and does not paginate. Run selection matches canonry_measurement_overview \u2014 the most recent completed run pinned to the active revision unless runId names another, and a run pinned to a different revision is refused rather than joined. The cursor also pins the active revision, displayed run, evidence snapshot, and filters; reuse it unchanged. Not available for a schema v1 revision, which records no question class to scope by. It never starts provider work; page size is at most 100. An empty page under measurement.state = not_measured means the Property has not been measured at all, which is NOT a measured result of zero.",
|
|
9126
9421
|
access: "read",
|
|
9127
9422
|
tier: "setup",
|
|
9128
9423
|
inputSchema: measurementPropertyEvidenceInputSchema,
|
|
@@ -9133,6 +9428,90 @@ var canonryMcpTools = [
|
|
|
9133
9428
|
return client2.getMeasurementPropertyEvidence(project, query);
|
|
9134
9429
|
}
|
|
9135
9430
|
}),
|
|
9431
|
+
defineTool({
|
|
9432
|
+
name: "canonry_measurement_portfolio_summary",
|
|
9433
|
+
title: "Summarize measured Properties",
|
|
9434
|
+
description: "Start here to rank the weakest measured Properties and their stored replacement names. Reads stored data only; it never starts provider work.",
|
|
9435
|
+
access: "read",
|
|
9436
|
+
tier: "monitoring",
|
|
9437
|
+
inputSchema: measurementPortfolioSummaryInputSchema,
|
|
9438
|
+
annotations: readAnnotations(),
|
|
9439
|
+
openApiOperations: ["GET /api/v1/projects/{name}/measurement-portfolio-summary"],
|
|
9440
|
+
handler: (client2, input) => {
|
|
9441
|
+
const { project, ...query } = input;
|
|
9442
|
+
return client2.getMeasurementPortfolioSummary(project, query);
|
|
9443
|
+
}
|
|
9444
|
+
}),
|
|
9445
|
+
defineTool({
|
|
9446
|
+
name: "canonry_measurement_property_questions",
|
|
9447
|
+
title: "List a Property\u2019s stored questions",
|
|
9448
|
+
description: "After identifying a Property, list its stored question outcomes and use a returned resultId with canonry_measurement_question_result. Reads stored data only; it never starts provider work.",
|
|
9449
|
+
access: "read",
|
|
9450
|
+
tier: "monitoring",
|
|
9451
|
+
inputSchema: measurementPropertyQuestionsInputSchema,
|
|
9452
|
+
annotations: readAnnotations(),
|
|
9453
|
+
openApiOperations: ["GET /api/v1/projects/{name}/measurement-property-questions"],
|
|
9454
|
+
handler: (client2, input) => {
|
|
9455
|
+
const { project, ...query } = input;
|
|
9456
|
+
return client2.getMeasurementPropertyQuestions(project, query);
|
|
9457
|
+
}
|
|
9458
|
+
}),
|
|
9459
|
+
defineTool({
|
|
9460
|
+
name: "canonry_measurement_question_result",
|
|
9461
|
+
title: "Get a stored question result",
|
|
9462
|
+
description: "After listing a Property\u2019s questions, expand one returned resultId into its stored answer and attribution sources. Reads stored data only; it never starts provider work.",
|
|
9463
|
+
access: "read",
|
|
9464
|
+
tier: "monitoring",
|
|
9465
|
+
inputSchema: measurementQuestionResultInputSchema,
|
|
9466
|
+
annotations: readAnnotations(),
|
|
9467
|
+
openApiOperations: ["GET /api/v1/projects/{name}/measurement-question-result"],
|
|
9468
|
+
handler: (client2, input) => {
|
|
9469
|
+
const { project, ...query } = input;
|
|
9470
|
+
return client2.getMeasurementQuestionResult(project, query);
|
|
9471
|
+
}
|
|
9472
|
+
}),
|
|
9473
|
+
defineTool({
|
|
9474
|
+
name: "canonry_measurement_property_competitors",
|
|
9475
|
+
title: "List a Property\u2019s stored replacements",
|
|
9476
|
+
description: "After reviewing a Property\u2019s question outcomes, find repeated stored replacement names for its misses. Reads stored data only; it never starts provider work.",
|
|
9477
|
+
access: "read",
|
|
9478
|
+
tier: "monitoring",
|
|
9479
|
+
inputSchema: measurementPropertyCompetitorsInputSchema,
|
|
9480
|
+
annotations: readAnnotations(),
|
|
9481
|
+
openApiOperations: ["GET /api/v1/projects/{name}/measurement-property-competitors"],
|
|
9482
|
+
handler: (client2, input) => {
|
|
9483
|
+
const { project, ...query } = input;
|
|
9484
|
+
return client2.getMeasurementPropertyCompetitors(project, query);
|
|
9485
|
+
}
|
|
9486
|
+
}),
|
|
9487
|
+
defineTool({
|
|
9488
|
+
name: "canonry_measurement_changes",
|
|
9489
|
+
title: "Compare stored measurement changes",
|
|
9490
|
+
description: "After reviewing the current summary, compare stored runs only when their execution identity is compatible. Reads stored data only; it never starts provider work.",
|
|
9491
|
+
access: "read",
|
|
9492
|
+
tier: "monitoring",
|
|
9493
|
+
inputSchema: measurementChangesInputSchema,
|
|
9494
|
+
annotations: readAnnotations(),
|
|
9495
|
+
openApiOperations: ["GET /api/v1/projects/{name}/measurement-changes"],
|
|
9496
|
+
handler: (client2, input) => {
|
|
9497
|
+
const { project, ...query } = input;
|
|
9498
|
+
return client2.getMeasurementChanges(project, query);
|
|
9499
|
+
}
|
|
9500
|
+
}),
|
|
9501
|
+
defineTool({
|
|
9502
|
+
name: "canonry_measurement_data_quality",
|
|
9503
|
+
title: "Inspect stored measurement data quality",
|
|
9504
|
+
description: "Before acting on a measurement, inspect its stored completeness, capture, retrieval, and comparability context. Reads stored data only; it never starts provider work.",
|
|
9505
|
+
access: "read",
|
|
9506
|
+
tier: "monitoring",
|
|
9507
|
+
inputSchema: measurementDataQualityInputSchema,
|
|
9508
|
+
annotations: readAnnotations(),
|
|
9509
|
+
openApiOperations: ["GET /api/v1/projects/{name}/measurement-data-quality"],
|
|
9510
|
+
handler: (client2, input) => {
|
|
9511
|
+
const { project, ...query } = input;
|
|
9512
|
+
return client2.getMeasurementDataQuality(project, query);
|
|
9513
|
+
}
|
|
9514
|
+
}),
|
|
9136
9515
|
defineTool({
|
|
9137
9516
|
name: "canonry_measurement_draft_get",
|
|
9138
9517
|
title: "Get Advanced Measurement draft",
|
|
@@ -9228,7 +9607,7 @@ var canonryMcpTools = [
|
|
|
9228
9607
|
inputSchema: measurementDraftActionInputSchema,
|
|
9229
9608
|
annotations: writeAnnotations({ idempotentHint: true, destructiveHint: true, openWorldHint: true }),
|
|
9230
9609
|
openApiOperations: measurementDraftActionOpenApiOperations,
|
|
9231
|
-
handler: runMeasurementDraftAction
|
|
9610
|
+
handler: (client2, input) => runMeasurementDraftAction(client2, input.project, input.operation)
|
|
9232
9611
|
}),
|
|
9233
9612
|
defineTool({
|
|
9234
9613
|
name: "canonry_measurement_plan_deactivate",
|
|
@@ -10011,10 +10390,13 @@ export {
|
|
|
10011
10390
|
CliError,
|
|
10012
10391
|
usageError,
|
|
10013
10392
|
isEndpointMissing,
|
|
10393
|
+
systemError,
|
|
10014
10394
|
printCliError,
|
|
10015
10395
|
createApiClient,
|
|
10016
10396
|
ApiClient,
|
|
10017
10397
|
PACKAGE_VERSION,
|
|
10398
|
+
measurementDraftOperationSchema,
|
|
10399
|
+
runMeasurementDraftAction,
|
|
10018
10400
|
canonryMcpTools,
|
|
10019
10401
|
CanonryMcpToolNames
|
|
10020
10402
|
};
|