@canonry/canonry 7.87.2 → 7.90.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/assets/agent-workspace/skills/canonry/references/canonry-cli.md +43 -5
- package/assets/assets/{AgentSetupPage-_ZP3F_zA.js → AgentSetupPage-oSoM5flN.js} +6 -6
- package/assets/assets/AuditHistoryPanel-YrEggsyA.js +1 -0
- package/assets/assets/{BacklinksPage-CsvVgXTZ.js → BacklinksPage-vXUxxplH.js} +1 -1
- package/assets/assets/{ChartPrimitives-4D5wgAn5.js → ChartPrimitives-Cs2iavxU.js} +1 -1
- package/assets/assets/{Hint-CfeZmZig.js → Hint-uoVNfr0U.js} +1 -1
- package/assets/assets/{HistoryPage-BCxpCul0.js → HistoryPage-VJ_JQ7R3.js} +1 -1
- package/assets/assets/{InfoTooltip-DrBIPuSU.js → InfoTooltip-CNLlIWeP.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-BZKiS1V0.js +4 -0
- package/assets/assets/ProjectPage-p-rDlzSq.js +11 -0
- package/assets/assets/{RunsPage-CfQ_kqlu.js → RunsPage-CjkPCc9Z.js} +1 -1
- package/assets/assets/{SettingsPage-PIgRvqJc.js → SettingsPage-BNHMlx6C.js} +1 -1
- package/assets/assets/SiteHealthSection-BZhulwSy.js +2 -0
- package/assets/assets/ToneBadge-B3rD6bDF.js +60 -0
- package/assets/assets/TrafficPage-Dr8NTQpA.js +40 -0
- package/assets/assets/TrafficSourceDetailPage-C79eQilP.js +1 -0
- package/assets/assets/{account-context-CVjb3ZSn.js → account-context-GstYbqpX.js} +1 -1
- package/assets/assets/agent-trust-copy-Ca4ys8J2.js +1 -0
- package/assets/assets/{card-BnVez9nG.js → card-CgdGerYK.js} +1 -1
- package/assets/assets/{format-helpers-DVXZD864.js → format-helpers-ByAY4dv0.js} +2 -2
- package/assets/assets/{index-BOUrrC9J.css → index-Bhpq6fUo.css} +1 -1
- package/assets/assets/index-BrHemYsG.js +60 -0
- package/assets/assets/query-client-DjRrRIsq.js +1 -0
- package/assets/assets/react-query-B8JD_K7g.js +1 -0
- package/assets/assets/{react-sigma_core.esm.min-CVfGIEIE.js → react-sigma_core.esm.min-OHqBWE8n.js} +1 -1
- package/assets/assets/server-traffic-Bt9bexaP.js +1 -0
- package/assets/assets/{service-BGqeyqhZ.js → service-SgtD5EOS.js} +1 -1
- package/assets/assets/{vendor-lucide-CoTHJwai.js → vendor-lucide-Bo69m9KC.js} +1 -1
- package/assets/assets/{vendor-markdown-cQgSk2i0.js → vendor-markdown-BiRP51B0.js} +1 -1
- package/assets/assets/{vendor-radix-wS8sWIWE.js → vendor-radix-PQeN8gOe.js} +1 -1
- package/assets/assets/{vendor-recharts-AnNqECZW.js → vendor-recharts-CY6tH-r6.js} +1 -1
- package/assets/assets/{vendor-tanstack-q5SvZtcv.js → vendor-tanstack-tBjrfzKu.js} +1 -1
- package/assets/index.html +15 -15
- package/dist/{ads-ZUZWSIBV.js → ads-6BAITIBY.js} +3 -3
- package/dist/{agent-YDS3WY7B.js → agent-BE3D65U4.js} +7 -7
- package/dist/{agent-ask-7VUPXTXL.js → agent-ask-TT6BAV2T.js} +3 -3
- package/dist/{agent-conversations-WPEBK3BS.js → agent-conversations-GJDAWU36.js} +3 -3
- package/dist/{agent-journeys-H5CCYLNB.js → agent-journeys-UEL27GNY.js} +3 -3
- package/dist/{agent-memory-CNPKPIWD.js → agent-memory-PB74OP46.js} +3 -3
- package/dist/{agent-providers-U7FLJO5I.js → agent-providers-5WFMNRRK.js} +3 -3
- package/dist/{agent-transcript-VY3BQNPU.js → agent-transcript-IAGB3JXG.js} +3 -3
- package/dist/{analytics-PYUNO7C2.js → analytics-5BVE7KUN.js} +3 -3
- package/dist/{apply-YNBEYC2G.js → apply-YJJWQ4JX.js} +3 -3
- package/dist/{backfill-6AYHWEQX.js → backfill-6OLGZIEV.js} +10 -10
- package/dist/{backlinks-LVHZ2MQ7.js → backlinks-4JK26OIO.js} +3 -3
- package/dist/bing-NZYYPB2M.js +794 -0
- package/dist/{bootstrap-27NOBWTP.js → bootstrap-6KHK63W3.js} +10 -10
- package/dist/{cdp-HCYY4SXR.js → cdp-PTXWVX6T.js} +7 -7
- package/dist/{chunk-JDTKG7KJ.js → chunk-2UULABPI.js} +7 -3
- package/dist/{chunk-GXTCDNX7.js → chunk-7ASKZHS4.js} +1 -1
- package/dist/{chunk-ICS2WJ7H.js → chunk-7VJJXLRP.js} +3 -3
- package/dist/{chunk-DOPUEXMC.js → chunk-AFYKUX2X.js} +2 -2
- package/dist/{chunk-LYTBHEID.js → chunk-C2XWWIJZ.js} +571 -346
- package/dist/{chunk-TFB2S6TQ.js → chunk-DF4B6OGX.js} +4 -4
- package/dist/{chunk-6F5ULQDY.js → chunk-DZO6CATO.js} +4 -4
- package/dist/{chunk-F643WELJ.js → chunk-ETIIPSWL.js} +412 -9
- package/dist/{chunk-BJHHD7VE.js → chunk-F442MSX2.js} +2 -2
- package/dist/{chunk-TEQF4ZJA.js → chunk-F6WNKKGG.js} +188 -2
- package/dist/{chunk-JAYUWQAV.js → chunk-GKX5F7NX.js} +1 -1
- package/dist/{chunk-IE4D47JE.js → chunk-HUQDD26S.js} +7 -7
- package/dist/{chunk-BVJA3TV2.js → chunk-I7DAEE3L.js} +5 -5
- package/dist/{chunk-4LNZTL7M.js → chunk-L2MDMZFT.js} +3 -3
- package/dist/{chunk-3KK6FWDF.js → chunk-LQWMNDZR.js} +1 -1
- package/dist/{chunk-INH773FB.js → chunk-LTZNUDSI.js} +3 -3
- package/dist/{chunk-ZJVQ72VC.js → chunk-N7LRPMWR.js} +2 -2
- package/dist/{chunk-T2MGGW6Y.js → chunk-NKGQCCUS.js} +6 -6
- package/dist/{chunk-POMLL2OZ.js → chunk-NPX5SL54.js} +1 -1
- package/dist/{chunk-2FJB3CSS.js → chunk-OOVWMWMT.js} +1 -1
- package/dist/{chunk-IVGVPPQT.js → chunk-OVUFIG22.js} +1156 -646
- package/dist/{chunk-MNLAIB67.js → chunk-PID3C4B7.js} +1 -1
- package/dist/{chunk-FAMCDCVK.js → chunk-Q6EZEVXE.js} +1 -1
- package/dist/{chunk-GDU6IMGB.js → chunk-QLVTMPFW.js} +2 -2
- package/dist/{chunk-2AXFKYJU.js → chunk-QWNDNZJ3.js} +2 -2
- package/dist/{chunk-AI75KS7G.js → chunk-SDXMG4VX.js} +2792 -1612
- package/dist/{chunk-IK7QEKKD.js → chunk-TA4L7U2M.js} +1 -1
- package/dist/{chunk-4FWDITQG.js → chunk-UG7TZJIG.js} +1 -1
- package/dist/{chunk-AYYZ4HKJ.js → chunk-USHY3SH6.js} +291 -1
- package/dist/{chunk-TN53B5AB.js → chunk-WNDBACO7.js} +240 -3
- package/dist/{chunk-CBWGUGME.js → chunk-WYMBWCG5.js} +20 -2
- package/dist/{chunk-IBGZ6D6R.js → chunk-XCEA5OMI.js} +2 -2
- package/dist/{chunk-ZCNKGBIV.js → chunk-YB2GAK32.js} +5 -5
- package/dist/{chunk-3FHBPJ5R.js → chunk-YPJCZD5H.js} +4 -4
- package/dist/{chunk-GBWCEOZR.js → chunk-ZV6PMFF4.js} +1 -1
- package/dist/{citations-3EZTHA65.js → citations-WX4VO6ZI.js} +3 -3
- package/dist/{cli-catalog-CBTM3JKP.js → cli-catalog-BTRNR2UP.js} +3 -3
- package/dist/{cli-commands-H7BFVUGC.js → cli-commands-5ISZA43S.js} +7 -7
- package/dist/cli.js +13 -13
- package/dist/{competitor-VH4TXJLT.js → competitor-HZRZWCEN.js} +3 -3
- package/dist/{content-TSMNHXJZ.js → content-NOZDHI3M.js} +3 -3
- package/dist/{dashboard-KT2ACPI5.js → dashboard-TZLWHXP4.js} +6 -6
- package/dist/{demo-LWSLULEZ.js → demo-2PYBQD47.js} +1 -1
- package/dist/{demo-server-UENMDVMG.js → demo-server-JEQNGMMV.js} +12 -12
- package/dist/{discover-XTJXTKCI.js → discover-A2XFXHOC.js} +3 -3
- package/dist/{discover-eval-IVQI5YEW.js → discover-eval-A6SBUYXF.js} +3 -3
- package/dist/{doctor-SJ4SHSQO.js → doctor-GZACELPF.js} +3 -3
- package/dist/{evidence-C6T556YH.js → evidence-RVFMUWIL.js} +3 -3
- package/dist/{export-cmd-JQZ5ZRSI.js → export-cmd-X2TFZGNJ.js} +3 -3
- package/dist/{ga-W2WHVRHN.js → ga-TOT3V67A.js} +3 -3
- package/dist/{gbp-3AZIV5WF.js → gbp-KP4YZU6S.js} +3 -3
- package/dist/{google-3CKWPZT7.js → google-GCFSTV5N.js} +4 -4
- package/dist/{google-marketing-PJBGQYYW.js → google-marketing-ANS65KQN.js} +1 -1
- package/dist/{health-cmd-4JTQMCXM.js → health-cmd-UKMNLU6D.js} +3 -3
- package/dist/{history-TXUJFEO2.js → history-TWGYSAZZ.js} +3 -3
- package/dist/index.d.ts +1861 -11
- package/dist/index.js +25 -25
- package/dist/{init-TF3OPCEC.js → init-K4623VOY.js} +12 -12
- package/dist/{insights-XZQO4B45.js → insights-7IOC7WIR.js} +3 -3
- package/dist/intelligence-service-42Q3OVI5.js +16 -0
- package/dist/{journeys-VFIV5JYV.js → journeys-NWKT45PT.js} +3 -3
- package/dist/{keys-PV23G4LW.js → keys-ZZYZUHUK.js} +3 -3
- package/dist/{keyword-D76KBIV5.js → keyword-F6EIX5KM.js} +3 -3
- package/dist/{logs-DYDZ6IEJ.js → logs-B45FXS6E.js} +3 -3
- package/dist/{mcp-GAR5LDQD.js → mcp-WPNCNWA5.js} +4 -4
- package/dist/mcp.js +9 -9
- package/dist/{measurement-plan-K24EOGMI.js → measurement-plan-QT5HJ3KC.js} +5 -5
- package/dist/{notify-XQHMPDQQ.js → notify-Z3LIF3SO.js} +3 -3
- package/dist/{organic-evidence-UHHE7AO4.js → organic-evidence-R5TM7XUB.js} +3 -3
- package/dist/{overview-AUZ3XRS5.js → overview-6TZHJLQN.js} +4 -4
- package/dist/{project-FUCPU2BD.js → project-VMPVOQ2A.js} +3 -3
- package/dist/{query-HRMSXDKL.js → query-EXSH5QP7.js} +3 -3
- package/dist/{research-R23XLZJ3.js → research-6R6BEL4X.js} +3 -3
- package/dist/{results-export-N6IV3KG4.js → results-export-ZJRL3ECU.js} +3 -3
- package/dist/{run-CJLG5EXH.js → run-C4VXAJE3.js} +4 -4
- package/dist/{schedule-IPDCQ2I5.js → schedule-KC6ETWMO.js} +3 -3
- package/dist/{search-ZU4AKJ76.js → search-SUR6BEQD.js} +3 -3
- package/dist/{serve-LLIUILD2.js → serve-TVODHNFU.js} +26 -26
- package/dist/{session-2NQKSF2N.js → session-D42KUKCZ.js} +13 -13
- package/dist/{settings-4FS5NRKP.js → settings-LTCG3D5B.js} +3 -3
- package/dist/sitemaps-YMTZLF5S.js +46 -0
- package/dist/{skills-GSFHACGN.js → skills-THMG3L64.js} +2 -2
- package/dist/{snapshot-4NUVPDK3.js → snapshot-ZEVB3EE4.js} +3 -3
- package/dist/{src-JQYZ2TP6.js → src-HPVSTXVF.js} +20 -2
- package/dist/{status-ASBLMFP2.js → status-LPCPTWKO.js} +4 -4
- package/dist/{technical-aeo-QXHRBGYY.js → technical-aeo-J6LNT45B.js} +3 -3
- package/dist/{telemetry-J2I577I3.js → telemetry-BPY34GDV.js} +4 -4
- package/dist/{tools-UPJRW4DN.js → tools-K3G43ESI.js} +11 -11
- package/dist/{traffic-GWBZKYR5.js → traffic-BOIFAPAR.js} +5 -5
- package/dist/{trends-YOLCJBNM.js → trends-A2MDRSQQ.js} +3 -3
- package/dist/{users-LPSCZV3M.js → users-VJOQODJK.js} +3 -3
- package/dist/{visibility-stats-JJQTZSSK.js → visibility-stats-YNMJYASA.js} +3 -3
- package/dist/{wordpress-4IKDT5KT.js → wordpress-BWG6D7VH.js} +3 -3
- package/package.json +1 -1
- package/assets/assets/AuditHistoryPanel-9B0XpYsN.js +0 -1
- package/assets/assets/MeasurementPropertyPage-BObvWjVx.js +0 -4
- package/assets/assets/ProjectPage-y378tOaT.js +0 -11
- package/assets/assets/SiteHealthSection-DuUE1cB0.js +0 -2
- package/assets/assets/ToneBadge-BgTLSTKp.js +0 -60
- package/assets/assets/TrafficPage-B_YunwjH.js +0 -40
- package/assets/assets/TrafficSourceDetailPage-C51W87fU.js +0 -1
- package/assets/assets/agent-trust-copy-BlpC8jo5.js +0 -1
- package/assets/assets/extract-error-message-Dqirbrl0.js +0 -1
- package/assets/assets/index-CsvEqhK4.js +0 -60
- package/assets/assets/query-client-CVc7wMKJ.js +0 -1
- package/assets/assets/react-query-CSlTSOjz.js +0 -1
- package/dist/bing-A2MUG6AV.js +0 -418
- package/dist/intelligence-service-LEH5UVIC.js +0 -16
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
templateLinkRatio,
|
|
21
21
|
templateLinkUbiquityAvailable,
|
|
22
22
|
validationError
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-ETIIPSWL.js";
|
|
24
24
|
import {
|
|
25
25
|
__export
|
|
26
26
|
} from "./chunk-MLKGABMK.js";
|
|
@@ -61,7 +61,14 @@ __export(schema_exports, {
|
|
|
61
61
|
backlinkSummaries: () => backlinkSummaries,
|
|
62
62
|
bingConnections: () => bingConnections,
|
|
63
63
|
bingCoverageSnapshots: () => bingCoverageSnapshots,
|
|
64
|
+
bingCrawlStats: () => bingCrawlStats,
|
|
65
|
+
bingKeywordDemand: () => bingKeywordDemand,
|
|
64
66
|
bingKeywordStats: () => bingKeywordStats,
|
|
67
|
+
bingPageStats: () => bingPageStats,
|
|
68
|
+
bingQueryStats: () => bingQueryStats,
|
|
69
|
+
bingSiteSnapshots: () => bingSiteSnapshots,
|
|
70
|
+
bingSitemaps: () => bingSitemaps,
|
|
71
|
+
bingTrafficDaily: () => bingTrafficDaily,
|
|
65
72
|
bingUrlInspections: () => bingUrlInspections,
|
|
66
73
|
ccReleaseSyncs: () => ccReleaseSyncs,
|
|
67
74
|
competitors: () => competitors,
|
|
@@ -107,6 +114,7 @@ __export(schema_exports, {
|
|
|
107
114
|
gscDataWatermarks: () => gscDataWatermarks,
|
|
108
115
|
gscQueryDailyTotals: () => gscQueryDailyTotals,
|
|
109
116
|
gscSearchData: () => gscSearchData,
|
|
117
|
+
gscSitemaps: () => gscSitemaps,
|
|
110
118
|
gscUrlInspections: () => gscUrlInspections,
|
|
111
119
|
gtmConnections: () => gtmConnections,
|
|
112
120
|
gtmRawSnapshots: () => gtmRawSnapshots,
|
|
@@ -178,6 +186,7 @@ __export(schema_exports, {
|
|
|
178
186
|
siteCrawlRunRequests: () => siteCrawlRunRequests,
|
|
179
187
|
siteCrawlSnapshots: () => siteCrawlSnapshots,
|
|
180
188
|
siteLivenessState: () => siteLivenessState,
|
|
189
|
+
sitemapListSyncs: () => sitemapListSyncs,
|
|
181
190
|
trafficEventReceipts: () => trafficEventReceipts,
|
|
182
191
|
trafficReclassificationState: () => trafficReclassificationState,
|
|
183
192
|
trafficSources: () => trafficSources,
|
|
@@ -1791,6 +1800,141 @@ var bingKeywordStats = sqliteTable2("bing_keyword_stats", {
|
|
|
1791
1800
|
index2("idx_bing_keyword_project").on(table.projectId),
|
|
1792
1801
|
index2("idx_bing_keyword_query").on(table.query)
|
|
1793
1802
|
]);
|
|
1803
|
+
var bingTrafficDaily = sqliteTable2("bing_traffic_daily", {
|
|
1804
|
+
id: text2("id").primaryKey(),
|
|
1805
|
+
projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
|
1806
|
+
date: text2("date").notNull(),
|
|
1807
|
+
clicks: integer2("clicks").notNull(),
|
|
1808
|
+
impressions: integer2("impressions").notNull(),
|
|
1809
|
+
syncRunId: text2("sync_run_id").references(() => runs.id, { onDelete: "set null" }),
|
|
1810
|
+
syncedAt: text2("synced_at").notNull()
|
|
1811
|
+
}, (table) => [
|
|
1812
|
+
uniqueIndex2("idx_bing_traffic_daily_project_date").on(table.projectId, table.date)
|
|
1813
|
+
]);
|
|
1814
|
+
var bingQueryStats = sqliteTable2("bing_query_stats", {
|
|
1815
|
+
id: text2("id").primaryKey(),
|
|
1816
|
+
projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
|
1817
|
+
date: text2("date").notNull(),
|
|
1818
|
+
query: text2("query").notNull(),
|
|
1819
|
+
clicks: integer2("clicks").notNull(),
|
|
1820
|
+
impressions: integer2("impressions").notNull(),
|
|
1821
|
+
avgClickPosition: real("avg_click_position"),
|
|
1822
|
+
avgImpressionPosition: real("avg_impression_position"),
|
|
1823
|
+
syncRunId: text2("sync_run_id").references(() => runs.id, { onDelete: "set null" }),
|
|
1824
|
+
syncedAt: text2("synced_at").notNull()
|
|
1825
|
+
}, (table) => [
|
|
1826
|
+
uniqueIndex2("idx_bing_query_stats_project_date_query").on(table.projectId, table.date, table.query),
|
|
1827
|
+
index2("idx_bing_query_stats_project_query").on(table.projectId, table.query)
|
|
1828
|
+
]);
|
|
1829
|
+
var bingPageStats = sqliteTable2("bing_page_stats", {
|
|
1830
|
+
id: text2("id").primaryKey(),
|
|
1831
|
+
projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
|
1832
|
+
date: text2("date").notNull(),
|
|
1833
|
+
page: text2("page").notNull(),
|
|
1834
|
+
clicks: integer2("clicks").notNull(),
|
|
1835
|
+
impressions: integer2("impressions").notNull(),
|
|
1836
|
+
avgClickPosition: real("avg_click_position"),
|
|
1837
|
+
avgImpressionPosition: real("avg_impression_position"),
|
|
1838
|
+
syncRunId: text2("sync_run_id").references(() => runs.id, { onDelete: "set null" }),
|
|
1839
|
+
syncedAt: text2("synced_at").notNull()
|
|
1840
|
+
}, (table) => [
|
|
1841
|
+
uniqueIndex2("idx_bing_page_stats_project_date_page").on(table.projectId, table.date, table.page),
|
|
1842
|
+
index2("idx_bing_page_stats_project_page").on(table.projectId, table.page)
|
|
1843
|
+
]);
|
|
1844
|
+
var bingCrawlStats = sqliteTable2("bing_crawl_stats", {
|
|
1845
|
+
id: text2("id").primaryKey(),
|
|
1846
|
+
projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
|
1847
|
+
date: text2("date").notNull(),
|
|
1848
|
+
crawledPages: integer2("crawled_pages").notNull().default(0),
|
|
1849
|
+
inIndex: integer2("in_index").notNull().default(0),
|
|
1850
|
+
crawlErrors: integer2("crawl_errors").notNull().default(0),
|
|
1851
|
+
inLinks: integer2("in_links").notNull().default(0),
|
|
1852
|
+
code2xx: integer2("code_2xx").notNull().default(0),
|
|
1853
|
+
code301: integer2("code_301").notNull().default(0),
|
|
1854
|
+
code302: integer2("code_302").notNull().default(0),
|
|
1855
|
+
code4xx: integer2("code_4xx").notNull().default(0),
|
|
1856
|
+
code5xx: integer2("code_5xx").notNull().default(0),
|
|
1857
|
+
allOtherCodes: integer2("all_other_codes").notNull().default(0),
|
|
1858
|
+
blockedByRobotsTxt: integer2("blocked_by_robots_txt").notNull().default(0),
|
|
1859
|
+
connectionTimeout: integer2("connection_timeout").notNull().default(0),
|
|
1860
|
+
containsMalware: integer2("contains_malware").notNull().default(0),
|
|
1861
|
+
dnsFailures: integer2("dns_failures").notNull().default(0),
|
|
1862
|
+
syncRunId: text2("sync_run_id").references(() => runs.id, { onDelete: "set null" }),
|
|
1863
|
+
syncedAt: text2("synced_at").notNull()
|
|
1864
|
+
}, (table) => [
|
|
1865
|
+
uniqueIndex2("idx_bing_crawl_stats_project_date").on(table.projectId, table.date)
|
|
1866
|
+
]);
|
|
1867
|
+
var bingSitemaps = sqliteTable2("bing_sitemaps", {
|
|
1868
|
+
id: text2("id").primaryKey(),
|
|
1869
|
+
projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
|
1870
|
+
url: text2("url").notNull(),
|
|
1871
|
+
parentUrl: text2("parent_url"),
|
|
1872
|
+
type: text2("type").notNull(),
|
|
1873
|
+
status: text2("status").notNull(),
|
|
1874
|
+
urlCount: integer2("url_count").notNull().default(0),
|
|
1875
|
+
fileSize: integer2("file_size").notNull().default(0),
|
|
1876
|
+
compressed: integer2("compressed", { mode: "boolean" }).notNull().default(false),
|
|
1877
|
+
submittedAt: text2("submitted_at"),
|
|
1878
|
+
lastCrawledAt: text2("last_crawled_at"),
|
|
1879
|
+
syncRunId: text2("sync_run_id").references(() => runs.id, { onDelete: "set null" }),
|
|
1880
|
+
syncedAt: text2("synced_at").notNull()
|
|
1881
|
+
}, (table) => [
|
|
1882
|
+
uniqueIndex2("idx_bing_sitemaps_project_url").on(table.projectId, table.url)
|
|
1883
|
+
]);
|
|
1884
|
+
var gscSitemaps = sqliteTable2("gsc_sitemaps", {
|
|
1885
|
+
id: text2("id").primaryKey(),
|
|
1886
|
+
projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
|
1887
|
+
url: text2("url").notNull(),
|
|
1888
|
+
parentUrl: text2("parent_url"),
|
|
1889
|
+
isIndex: integer2("is_index", { mode: "boolean" }).notNull().default(false),
|
|
1890
|
+
isPending: integer2("is_pending", { mode: "boolean" }).notNull().default(false),
|
|
1891
|
+
type: text2("type"),
|
|
1892
|
+
/** URLs the sitemap lists, summed over Google's content types; null when Google sent no contents. */
|
|
1893
|
+
urlCount: integer2("url_count"),
|
|
1894
|
+
warnings: integer2("warnings"),
|
|
1895
|
+
errors: integer2("errors"),
|
|
1896
|
+
submittedAt: text2("submitted_at"),
|
|
1897
|
+
lastDownloadedAt: text2("last_downloaded_at"),
|
|
1898
|
+
syncRunId: text2("sync_run_id").references(() => runs.id, { onDelete: "set null" }),
|
|
1899
|
+
syncedAt: text2("synced_at").notNull()
|
|
1900
|
+
}, (table) => [
|
|
1901
|
+
uniqueIndex2("idx_gsc_sitemaps_project_url").on(table.projectId, table.url)
|
|
1902
|
+
]);
|
|
1903
|
+
var sitemapListSyncs = sqliteTable2("sitemap_list_syncs", {
|
|
1904
|
+
projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
|
1905
|
+
engine: text2("engine").notNull(),
|
|
1906
|
+
syncedAt: text2("synced_at").notNull(),
|
|
1907
|
+
syncRunId: text2("sync_run_id").references(() => runs.id, { onDelete: "set null" })
|
|
1908
|
+
}, (table) => [
|
|
1909
|
+
uniqueIndex2("idx_sitemap_list_syncs_project_engine").on(table.projectId, table.engine)
|
|
1910
|
+
]);
|
|
1911
|
+
var bingSiteSnapshots = sqliteTable2("bing_site_snapshots", {
|
|
1912
|
+
id: text2("id").primaryKey(),
|
|
1913
|
+
projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
|
1914
|
+
kind: text2("kind").notNull(),
|
|
1915
|
+
status: text2("status").notNull(),
|
|
1916
|
+
payload: text2("payload", { mode: "json" }).$type(),
|
|
1917
|
+
error: text2("error"),
|
|
1918
|
+
syncRunId: text2("sync_run_id").references(() => runs.id, { onDelete: "set null" }),
|
|
1919
|
+
syncedAt: text2("synced_at").notNull()
|
|
1920
|
+
}, (table) => [
|
|
1921
|
+
uniqueIndex2("idx_bing_site_snapshots_project_kind").on(table.projectId, table.kind)
|
|
1922
|
+
]);
|
|
1923
|
+
var bingKeywordDemand = sqliteTable2("bing_keyword_demand", {
|
|
1924
|
+
id: text2("id").primaryKey(),
|
|
1925
|
+
projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
|
1926
|
+
query: text2("query").notNull(),
|
|
1927
|
+
country: text2("country").notNull(),
|
|
1928
|
+
language: text2("language").notNull(),
|
|
1929
|
+
date: text2("date").notNull(),
|
|
1930
|
+
impressions: integer2("impressions").notNull(),
|
|
1931
|
+
broadImpressions: integer2("broad_impressions").notNull(),
|
|
1932
|
+
syncRunId: text2("sync_run_id").references(() => runs.id, { onDelete: "set null" }),
|
|
1933
|
+
syncedAt: text2("synced_at").notNull()
|
|
1934
|
+
}, (table) => [
|
|
1935
|
+
uniqueIndex2("idx_bing_keyword_demand_unique").on(table.projectId, table.query, table.country, table.language, table.date),
|
|
1936
|
+
index2("idx_bing_keyword_demand_project_synced").on(table.projectId, table.syncedAt)
|
|
1937
|
+
]);
|
|
1794
1938
|
var gaConnections = sqliteTable2("ga_connections", {
|
|
1795
1939
|
id: text2("id").primaryKey(),
|
|
1796
1940
|
projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
|
@@ -8638,6 +8782,143 @@ var MIGRATION_VERSIONS = [
|
|
|
8638
8782
|
)`,
|
|
8639
8783
|
`CREATE INDEX IF NOT EXISTS idx_ai_referral_visitors_source_last ON ai_referral_visitors(source_id, last_arrival_at)`
|
|
8640
8784
|
]
|
|
8785
|
+
},
|
|
8786
|
+
{
|
|
8787
|
+
version: 208,
|
|
8788
|
+
name: "bing-full-api-reads",
|
|
8789
|
+
statements: [
|
|
8790
|
+
`CREATE TABLE IF NOT EXISTS bing_traffic_daily (
|
|
8791
|
+
id TEXT PRIMARY KEY,
|
|
8792
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
8793
|
+
date TEXT NOT NULL,
|
|
8794
|
+
clicks INTEGER NOT NULL,
|
|
8795
|
+
impressions INTEGER NOT NULL,
|
|
8796
|
+
sync_run_id TEXT REFERENCES runs(id) ON DELETE SET NULL,
|
|
8797
|
+
synced_at TEXT NOT NULL
|
|
8798
|
+
)`,
|
|
8799
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_bing_traffic_daily_project_date ON bing_traffic_daily(project_id, date)`,
|
|
8800
|
+
`CREATE TABLE IF NOT EXISTS bing_query_stats (
|
|
8801
|
+
id TEXT PRIMARY KEY,
|
|
8802
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
8803
|
+
date TEXT NOT NULL,
|
|
8804
|
+
query TEXT NOT NULL,
|
|
8805
|
+
clicks INTEGER NOT NULL,
|
|
8806
|
+
impressions INTEGER NOT NULL,
|
|
8807
|
+
avg_click_position REAL,
|
|
8808
|
+
avg_impression_position REAL,
|
|
8809
|
+
sync_run_id TEXT REFERENCES runs(id) ON DELETE SET NULL,
|
|
8810
|
+
synced_at TEXT NOT NULL
|
|
8811
|
+
)`,
|
|
8812
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_bing_query_stats_project_date_query ON bing_query_stats(project_id, date, query)`,
|
|
8813
|
+
`CREATE INDEX IF NOT EXISTS idx_bing_query_stats_project_query ON bing_query_stats(project_id, query)`,
|
|
8814
|
+
`CREATE TABLE IF NOT EXISTS bing_page_stats (
|
|
8815
|
+
id TEXT PRIMARY KEY,
|
|
8816
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
8817
|
+
date TEXT NOT NULL,
|
|
8818
|
+
page TEXT NOT NULL,
|
|
8819
|
+
clicks INTEGER NOT NULL,
|
|
8820
|
+
impressions INTEGER NOT NULL,
|
|
8821
|
+
avg_click_position REAL,
|
|
8822
|
+
avg_impression_position REAL,
|
|
8823
|
+
sync_run_id TEXT REFERENCES runs(id) ON DELETE SET NULL,
|
|
8824
|
+
synced_at TEXT NOT NULL
|
|
8825
|
+
)`,
|
|
8826
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_bing_page_stats_project_date_page ON bing_page_stats(project_id, date, page)`,
|
|
8827
|
+
`CREATE INDEX IF NOT EXISTS idx_bing_page_stats_project_page ON bing_page_stats(project_id, page)`,
|
|
8828
|
+
`CREATE TABLE IF NOT EXISTS bing_crawl_stats (
|
|
8829
|
+
id TEXT PRIMARY KEY,
|
|
8830
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
8831
|
+
date TEXT NOT NULL,
|
|
8832
|
+
crawled_pages INTEGER NOT NULL DEFAULT 0,
|
|
8833
|
+
in_index INTEGER NOT NULL DEFAULT 0,
|
|
8834
|
+
crawl_errors INTEGER NOT NULL DEFAULT 0,
|
|
8835
|
+
in_links INTEGER NOT NULL DEFAULT 0,
|
|
8836
|
+
code_2xx INTEGER NOT NULL DEFAULT 0,
|
|
8837
|
+
code_301 INTEGER NOT NULL DEFAULT 0,
|
|
8838
|
+
code_302 INTEGER NOT NULL DEFAULT 0,
|
|
8839
|
+
code_4xx INTEGER NOT NULL DEFAULT 0,
|
|
8840
|
+
code_5xx INTEGER NOT NULL DEFAULT 0,
|
|
8841
|
+
all_other_codes INTEGER NOT NULL DEFAULT 0,
|
|
8842
|
+
blocked_by_robots_txt INTEGER NOT NULL DEFAULT 0,
|
|
8843
|
+
connection_timeout INTEGER NOT NULL DEFAULT 0,
|
|
8844
|
+
contains_malware INTEGER NOT NULL DEFAULT 0,
|
|
8845
|
+
dns_failures INTEGER NOT NULL DEFAULT 0,
|
|
8846
|
+
sync_run_id TEXT REFERENCES runs(id) ON DELETE SET NULL,
|
|
8847
|
+
synced_at TEXT NOT NULL
|
|
8848
|
+
)`,
|
|
8849
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_bing_crawl_stats_project_date ON bing_crawl_stats(project_id, date)`,
|
|
8850
|
+
`CREATE TABLE IF NOT EXISTS bing_sitemaps (
|
|
8851
|
+
id TEXT PRIMARY KEY,
|
|
8852
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
8853
|
+
url TEXT NOT NULL,
|
|
8854
|
+
parent_url TEXT,
|
|
8855
|
+
type TEXT NOT NULL,
|
|
8856
|
+
status TEXT NOT NULL,
|
|
8857
|
+
url_count INTEGER NOT NULL DEFAULT 0,
|
|
8858
|
+
file_size INTEGER NOT NULL DEFAULT 0,
|
|
8859
|
+
compressed INTEGER NOT NULL DEFAULT 0,
|
|
8860
|
+
submitted_at TEXT,
|
|
8861
|
+
last_crawled_at TEXT,
|
|
8862
|
+
sync_run_id TEXT REFERENCES runs(id) ON DELETE SET NULL,
|
|
8863
|
+
synced_at TEXT NOT NULL
|
|
8864
|
+
)`,
|
|
8865
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_bing_sitemaps_project_url ON bing_sitemaps(project_id, url)`,
|
|
8866
|
+
`CREATE TABLE IF NOT EXISTS bing_site_snapshots (
|
|
8867
|
+
id TEXT PRIMARY KEY,
|
|
8868
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
8869
|
+
kind TEXT NOT NULL,
|
|
8870
|
+
status TEXT NOT NULL,
|
|
8871
|
+
payload TEXT,
|
|
8872
|
+
error TEXT,
|
|
8873
|
+
sync_run_id TEXT REFERENCES runs(id) ON DELETE SET NULL,
|
|
8874
|
+
synced_at TEXT NOT NULL
|
|
8875
|
+
)`,
|
|
8876
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_bing_site_snapshots_project_kind ON bing_site_snapshots(project_id, kind)`,
|
|
8877
|
+
`CREATE TABLE IF NOT EXISTS bing_keyword_demand (
|
|
8878
|
+
id TEXT PRIMARY KEY,
|
|
8879
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
8880
|
+
query TEXT NOT NULL,
|
|
8881
|
+
country TEXT NOT NULL,
|
|
8882
|
+
language TEXT NOT NULL,
|
|
8883
|
+
date TEXT NOT NULL,
|
|
8884
|
+
impressions INTEGER NOT NULL,
|
|
8885
|
+
broad_impressions INTEGER NOT NULL,
|
|
8886
|
+
sync_run_id TEXT REFERENCES runs(id) ON DELETE SET NULL,
|
|
8887
|
+
synced_at TEXT NOT NULL
|
|
8888
|
+
)`,
|
|
8889
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_bing_keyword_demand_unique ON bing_keyword_demand(project_id, query, country, language, date)`,
|
|
8890
|
+
`CREATE INDEX IF NOT EXISTS idx_bing_keyword_demand_project_synced ON bing_keyword_demand(project_id, synced_at)`
|
|
8891
|
+
]
|
|
8892
|
+
},
|
|
8893
|
+
{
|
|
8894
|
+
version: 209,
|
|
8895
|
+
name: "gsc-sitemaps-and-list-syncs",
|
|
8896
|
+
statements: [
|
|
8897
|
+
`CREATE TABLE IF NOT EXISTS gsc_sitemaps (
|
|
8898
|
+
id TEXT PRIMARY KEY,
|
|
8899
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
8900
|
+
url TEXT NOT NULL,
|
|
8901
|
+
parent_url TEXT,
|
|
8902
|
+
is_index INTEGER NOT NULL DEFAULT 0,
|
|
8903
|
+
is_pending INTEGER NOT NULL DEFAULT 0,
|
|
8904
|
+
type TEXT,
|
|
8905
|
+
url_count INTEGER,
|
|
8906
|
+
warnings INTEGER,
|
|
8907
|
+
errors INTEGER,
|
|
8908
|
+
submitted_at TEXT,
|
|
8909
|
+
last_downloaded_at TEXT,
|
|
8910
|
+
sync_run_id TEXT REFERENCES runs(id) ON DELETE SET NULL,
|
|
8911
|
+
synced_at TEXT NOT NULL
|
|
8912
|
+
)`,
|
|
8913
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_gsc_sitemaps_project_url ON gsc_sitemaps(project_id, url)`,
|
|
8914
|
+
`CREATE TABLE IF NOT EXISTS sitemap_list_syncs (
|
|
8915
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
8916
|
+
engine TEXT NOT NULL,
|
|
8917
|
+
synced_at TEXT NOT NULL,
|
|
8918
|
+
sync_run_id TEXT REFERENCES runs(id) ON DELETE SET NULL
|
|
8919
|
+
)`,
|
|
8920
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_sitemap_list_syncs_project_engine ON sitemap_list_syncs(project_id, engine)`
|
|
8921
|
+
]
|
|
8641
8922
|
}
|
|
8642
8923
|
];
|
|
8643
8924
|
var AERO_LEDGER_REBUILDS = [
|
|
@@ -10113,6 +10394,15 @@ export {
|
|
|
10113
10394
|
bingConnections,
|
|
10114
10395
|
bingUrlInspections,
|
|
10115
10396
|
bingKeywordStats,
|
|
10397
|
+
bingTrafficDaily,
|
|
10398
|
+
bingQueryStats,
|
|
10399
|
+
bingPageStats,
|
|
10400
|
+
bingCrawlStats,
|
|
10401
|
+
bingSitemaps,
|
|
10402
|
+
gscSitemaps,
|
|
10403
|
+
sitemapListSyncs,
|
|
10404
|
+
bingSiteSnapshots,
|
|
10405
|
+
bingKeywordDemand,
|
|
10116
10406
|
gaConnections,
|
|
10117
10407
|
gaTrafficSnapshots,
|
|
10118
10408
|
gaDailyTotals,
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
dedupeGscSitemapUrls,
|
|
3
3
|
resolveDiscoveredGscSitemapUrls,
|
|
4
4
|
submitGscSitemapBatches
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7ASKZHS4.js";
|
|
6
6
|
import {
|
|
7
7
|
measurementDraftOperationSchema,
|
|
8
8
|
runMeasurementDraftAction
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PID3C4B7.js";
|
|
10
10
|
import {
|
|
11
11
|
CliError
|
|
12
12
|
} from "./chunk-HGMYEDAQ.js";
|
|
@@ -46,6 +46,7 @@ import {
|
|
|
46
46
|
apiKeyDtoSchema,
|
|
47
47
|
auditHistoryQuerySchema,
|
|
48
48
|
backlinkSourceSchema,
|
|
49
|
+
bingSiteSnapshotKindSchema,
|
|
49
50
|
calendarDateSchema,
|
|
50
51
|
canonicalizeGtmAccountId,
|
|
51
52
|
canonicalizeGtmResourceSelection,
|
|
@@ -186,7 +187,7 @@ import {
|
|
|
186
187
|
trendSurfaceSchema,
|
|
187
188
|
visibilityCompareSelectionSchema,
|
|
188
189
|
visibilityReportRequestSchema
|
|
189
|
-
} from "./chunk-
|
|
190
|
+
} from "./chunk-ETIIPSWL.js";
|
|
190
191
|
|
|
191
192
|
// src/mcp/tool-registry.ts
|
|
192
193
|
import { z as z2 } from "zod";
|
|
@@ -486,6 +487,67 @@ var gscPerformanceInputSchema = z2.object({
|
|
|
486
487
|
orderBy: gscPerformanceOrderBySchema.optional(),
|
|
487
488
|
window: analyticsWindowSchema.optional()
|
|
488
489
|
});
|
|
490
|
+
var bingWindowShape = {
|
|
491
|
+
project: projectNameSchema,
|
|
492
|
+
startDate: z2.string().optional().describe("First day, YYYY-MM-DD. Wins over days."),
|
|
493
|
+
endDate: z2.string().optional().describe("Last day, YYYY-MM-DD."),
|
|
494
|
+
days: z2.number().int().positive().optional().describe("Span in days ending at endDate or at the newest stored day (default 28).")
|
|
495
|
+
};
|
|
496
|
+
var bingWindowInputSchema = z2.object(bingWindowShape);
|
|
497
|
+
var bingRangeShape = {
|
|
498
|
+
...bingWindowShape,
|
|
499
|
+
window: z2.enum(["7d", "30d", "90d", "all"]).optional().describe("Window ending at endDate or the newest stored day. Not with startDate or days.")
|
|
500
|
+
};
|
|
501
|
+
var bingTrafficInputSchema = z2.object(bingRangeShape);
|
|
502
|
+
var bingMatchSchema = z2.enum(["contains", "exact"]).optional().describe("contains (default) or exact: one whole query or page, e.g. with groupBy=week for its weeks.");
|
|
503
|
+
var bingQueriesInputSchema = z2.object({
|
|
504
|
+
...bingRangeShape,
|
|
505
|
+
query: z2.string().optional().describe("Filter on the query: a substring, or the whole query with match=exact."),
|
|
506
|
+
match: bingMatchSchema,
|
|
507
|
+
groupBy: z2.enum(["query", "week"]).optional(),
|
|
508
|
+
limit: z2.number().int().positive().max(5e3).optional(),
|
|
509
|
+
offset: z2.number().int().nonnegative().optional()
|
|
510
|
+
});
|
|
511
|
+
var bingPagesInputSchema = z2.object({
|
|
512
|
+
...bingRangeShape,
|
|
513
|
+
page: z2.string().optional().describe("Filter on the page URL: a substring, or the whole URL with match=exact."),
|
|
514
|
+
match: bingMatchSchema,
|
|
515
|
+
groupBy: z2.enum(["page", "week"]).optional(),
|
|
516
|
+
limit: z2.number().int().positive().max(5e3).optional(),
|
|
517
|
+
offset: z2.number().int().nonnegative().optional()
|
|
518
|
+
});
|
|
519
|
+
var bingSiteInputSchema = z2.object({
|
|
520
|
+
project: projectNameSchema,
|
|
521
|
+
kind: bingSiteSnapshotKindSchema.optional()
|
|
522
|
+
});
|
|
523
|
+
var bingKeywordDemandInputSchema = z2.object({
|
|
524
|
+
project: projectNameSchema,
|
|
525
|
+
query: z2.string().optional().describe("A tracked query whose weekly history to include.")
|
|
526
|
+
});
|
|
527
|
+
var bingQueryPagesInputSchema = z2.object({ project: projectNameSchema, query: z2.string().min(1) });
|
|
528
|
+
var bingPageQueriesInputSchema = z2.object({ project: projectNameSchema, page: z2.string().url() });
|
|
529
|
+
var bingQueryHistoryInputSchema = z2.object({ project: projectNameSchema, query: z2.string().min(1), page: z2.string().url().optional() });
|
|
530
|
+
var bingUrlTrafficInputSchema = z2.object({
|
|
531
|
+
project: projectNameSchema,
|
|
532
|
+
url: z2.string().url(),
|
|
533
|
+
children: z2.boolean().optional(),
|
|
534
|
+
page: z2.number().int().nonnegative().optional()
|
|
535
|
+
});
|
|
536
|
+
var bingKeywordsInputSchema = z2.object({
|
|
537
|
+
project: projectNameSchema,
|
|
538
|
+
keyword: z2.string().min(1),
|
|
539
|
+
country: z2.string().optional().describe("Market country, such as us. Defaults to the project country."),
|
|
540
|
+
language: z2.string().optional().describe("Market language tag, such as en-US. Defaults from the project."),
|
|
541
|
+
startDate: z2.string().optional(),
|
|
542
|
+
endDate: z2.string().optional()
|
|
543
|
+
});
|
|
544
|
+
function bingWindowQuery(input) {
|
|
545
|
+
return {
|
|
546
|
+
...input.startDate ? { startDate: input.startDate } : {},
|
|
547
|
+
...input.endDate ? { endDate: input.endDate } : {},
|
|
548
|
+
...input.days !== void 0 ? { days: String(input.days) } : {}
|
|
549
|
+
};
|
|
550
|
+
}
|
|
489
551
|
var gscPerformanceDailyInputSchema = z2.object({
|
|
490
552
|
project: projectNameSchema,
|
|
491
553
|
startDate: z2.string().optional(),
|
|
@@ -2465,6 +2527,170 @@ var rawCanonryMcpTools = [
|
|
|
2465
2527
|
openApiOperations: ["GET /api/v1/projects/{name}/bing/coverage"],
|
|
2466
2528
|
handler: (client, input) => client.bingCoverage(input.project)
|
|
2467
2529
|
}),
|
|
2530
|
+
defineTool({
|
|
2531
|
+
name: "canonry_bing_submit_sitemap",
|
|
2532
|
+
title: "Submit a sitemap to Bing",
|
|
2533
|
+
description: "Ask Bing to read a sitemap for the project's Bing site (SubmitFeed): a new sitemap joins the list once Bing reads it, a listed one is read again. One call to Bing. Check canonry_sitemaps first: submit what Bing is missing. A new sitemap shows in the stored list after the next Bing sync.",
|
|
2534
|
+
access: "write",
|
|
2535
|
+
tier: "bing",
|
|
2536
|
+
inputSchema: z2.object({ project: projectNameSchema, sitemapUrl: z2.string().url().describe("The sitemap URL, on the project's Bing site.") }),
|
|
2537
|
+
annotations: writeAnnotations({ idempotentHint: true, openWorldHint: true }),
|
|
2538
|
+
openApiOperations: ["POST /api/v1/projects/{name}/bing/sitemaps"],
|
|
2539
|
+
handler: (client, input) => client.bingSubmitSitemap(input.project, input.sitemapUrl)
|
|
2540
|
+
}),
|
|
2541
|
+
defineTool({
|
|
2542
|
+
name: "canonry_bing_sync",
|
|
2543
|
+
title: "Sync Bing data",
|
|
2544
|
+
description: "Queue a full Bing Webmaster sync for a project: daily site clicks and impressions, weekly query and page stats, daily crawl stats, sitemaps, site settings (submission quotas, crawl settings, blocked URLs, URL parameters, geo-targeting, preview and sitelink blocks, Fetch as Bingbot history, crawl issues) and weekly search demand for tracked queries. Makes about 20 to 50 calls to Bing, paced on the shared account limit. Runs daily as part of the data refresh; trigger it only when stored data is missing or stale. Returns the queued run.",
|
|
2545
|
+
access: "write",
|
|
2546
|
+
tier: "bing",
|
|
2547
|
+
inputSchema: projectInputSchema,
|
|
2548
|
+
annotations: writeAnnotations({ idempotentHint: true, openWorldHint: true }),
|
|
2549
|
+
openApiOperations: ["POST /api/v1/projects/{name}/bing/sync"],
|
|
2550
|
+
handler: (client, input) => client.bingSync(input.project)
|
|
2551
|
+
}),
|
|
2552
|
+
defineTool({
|
|
2553
|
+
name: "canonry_bing_traffic",
|
|
2554
|
+
title: "Get Bing traffic",
|
|
2555
|
+
description: "Get stored daily Bing search clicks and impressions for the whole site, with window totals and CTR (no call to Bing). These daily rows are the site total; use them for Bing headline numbers, never a sum of canonry_bing_queries rows. periodComparison compares the window with the stored window before it, or its own halves when basis is split-window; trends are fitted over the calendar. latestAvailableDate is the newest stored day (Bing lags 2 to 3 days); earliestAvailableDate says how far back history goes.",
|
|
2556
|
+
access: "read",
|
|
2557
|
+
tier: "bing",
|
|
2558
|
+
inputSchema: bingTrafficInputSchema,
|
|
2559
|
+
annotations: readAnnotations(),
|
|
2560
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/traffic"],
|
|
2561
|
+
handler: (client, input) => client.bingTraffic(input.project, { ...bingWindowQuery(input), window: input.window })
|
|
2562
|
+
}),
|
|
2563
|
+
defineTool({
|
|
2564
|
+
name: "canonry_bing_queries",
|
|
2565
|
+
title: "Get Bing query stats",
|
|
2566
|
+
description: "Get stored Bing search stats per query (no call to Bing). Bing reports queries per WEEK, so each row sums the weekly buckets inside the window, with impression-weighted position and the number of weeks it appeared. Bing names only some queries: never sum rows for a site total, use canonry_bing_traffic. groupBy=week returns weekly totals instead, for a trend. totals sums every matching query before paging, and comparison sets it against the window before. Page with limit/offset until truncated is false.",
|
|
2567
|
+
access: "read",
|
|
2568
|
+
tier: "bing",
|
|
2569
|
+
inputSchema: bingQueriesInputSchema,
|
|
2570
|
+
annotations: readAnnotations(),
|
|
2571
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/queries"],
|
|
2572
|
+
handler: (client, input) => client.bingQueries(input.project, { ...bingWindowQuery(input), window: input.window, query: input.query, match: input.match, groupBy: input.groupBy, limit: input.limit, offset: input.offset })
|
|
2573
|
+
}),
|
|
2574
|
+
defineTool({
|
|
2575
|
+
name: "canonry_bing_pages",
|
|
2576
|
+
title: "Get Bing page stats",
|
|
2577
|
+
description: "Get stored Bing search stats per page URL (no call to Bing), summed from weekly buckets like canonry_bing_queries. groupBy=week returns weekly totals. Never sum rows for a site total; use canonry_bing_traffic.",
|
|
2578
|
+
access: "read",
|
|
2579
|
+
tier: "bing",
|
|
2580
|
+
inputSchema: bingPagesInputSchema,
|
|
2581
|
+
annotations: readAnnotations(),
|
|
2582
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/pages"],
|
|
2583
|
+
handler: (client, input) => client.bingPages(input.project, { ...bingWindowQuery(input), window: input.window, page: input.page, match: input.match, groupBy: input.groupBy, limit: input.limit, offset: input.offset })
|
|
2584
|
+
}),
|
|
2585
|
+
defineTool({
|
|
2586
|
+
name: "canonry_bing_crawl_stats",
|
|
2587
|
+
title: "Get Bing crawl stats",
|
|
2588
|
+
description: "Get stored daily Bingbot crawl counts (no call to Bing): pages crawled, pages in index, crawl errors, inbound links, HTTP 2xx/301/302/4xx/5xx counts, robots.txt blocks, timeouts, DNS failures and malware flags. Newest first.",
|
|
2589
|
+
access: "read",
|
|
2590
|
+
tier: "bing",
|
|
2591
|
+
inputSchema: bingWindowInputSchema,
|
|
2592
|
+
annotations: readAnnotations(),
|
|
2593
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/crawl-stats"],
|
|
2594
|
+
handler: (client, input) => client.bingCrawlStats(input.project, bingWindowQuery(input))
|
|
2595
|
+
}),
|
|
2596
|
+
defineTool({
|
|
2597
|
+
name: "canonry_bing_sitemaps",
|
|
2598
|
+
title: "Get Bing sitemaps",
|
|
2599
|
+
description: "Get the sitemaps Bing has for the site as of the last sync (no call to Bing): type, status, URL count, submitted and last-crawled dates. Child sitemaps carry the parentUrl of their sitemap index.",
|
|
2600
|
+
access: "read",
|
|
2601
|
+
tier: "bing",
|
|
2602
|
+
inputSchema: projectInputSchema,
|
|
2603
|
+
annotations: readAnnotations(),
|
|
2604
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/sitemaps"],
|
|
2605
|
+
handler: (client, input) => client.bingSitemaps(input.project)
|
|
2606
|
+
}),
|
|
2607
|
+
defineTool({
|
|
2608
|
+
name: "canonry_bing_site",
|
|
2609
|
+
title: "Get Bing site settings",
|
|
2610
|
+
description: "Get the stored Bing site settings (no call to Bing): URL and content submission quotas LEFT today and this month, crawl settings, crawl issues, blocked URLs, page preview blocks, sitelink blocks, URL parameters, geo-targeting, Fetch as Bingbot history, connected pages and user roles. status is unauthorized for owner-only settings this key cannot read. A blocked URL or preview block keeps a page out of Bing and Copilot answers.",
|
|
2611
|
+
access: "read",
|
|
2612
|
+
tier: "bing",
|
|
2613
|
+
inputSchema: bingSiteInputSchema,
|
|
2614
|
+
annotations: readAnnotations(),
|
|
2615
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/site"],
|
|
2616
|
+
handler: (client, input) => client.bingSite(input.project, input.kind ? { kind: input.kind } : void 0)
|
|
2617
|
+
}),
|
|
2618
|
+
defineTool({
|
|
2619
|
+
name: "canonry_bing_keyword_demand",
|
|
2620
|
+
title: "Get Bing keyword demand",
|
|
2621
|
+
description: "Get stored weekly Bing search volume for every tracked query in the project market (no call to Bing): average and latest weekly exact-match searches, broad-match searches and weeks stored. This is demand for the query, not traffic to the site. Pass query to include that query's weekly history. Refreshed weekly by the Bing sync.",
|
|
2622
|
+
access: "read",
|
|
2623
|
+
tier: "bing",
|
|
2624
|
+
inputSchema: bingKeywordDemandInputSchema,
|
|
2625
|
+
annotations: readAnnotations(),
|
|
2626
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/keyword-demand"],
|
|
2627
|
+
handler: (client, input) => client.bingKeywordDemand(input.project, input.query ? { query: input.query } : void 0)
|
|
2628
|
+
}),
|
|
2629
|
+
defineTool({
|
|
2630
|
+
name: "canonry_bing_query_pages",
|
|
2631
|
+
title: "Get Bing pages for a query (live)",
|
|
2632
|
+
description: "Ask Bing live which of the site's pages showed for one search query, per week (one call to Bing). Use it to find the page Bing ranks for a query.",
|
|
2633
|
+
access: "read",
|
|
2634
|
+
tier: "bing",
|
|
2635
|
+
inputSchema: bingQueryPagesInputSchema,
|
|
2636
|
+
annotations: readAnnotations(true),
|
|
2637
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/query-pages"],
|
|
2638
|
+
handler: (client, input) => client.bingQueryPages(input.project, input.query)
|
|
2639
|
+
}),
|
|
2640
|
+
defineTool({
|
|
2641
|
+
name: "canonry_bing_page_queries",
|
|
2642
|
+
title: "Get Bing queries for a page (live)",
|
|
2643
|
+
description: "Ask Bing live which search queries one page showed for, per week (one call to Bing).",
|
|
2644
|
+
access: "read",
|
|
2645
|
+
tier: "bing",
|
|
2646
|
+
inputSchema: bingPageQueriesInputSchema,
|
|
2647
|
+
annotations: readAnnotations(true),
|
|
2648
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/page-queries"],
|
|
2649
|
+
handler: (client, input) => client.bingPageQueries(input.project, input.page)
|
|
2650
|
+
}),
|
|
2651
|
+
defineTool({
|
|
2652
|
+
name: "canonry_bing_query_history",
|
|
2653
|
+
title: "Get Bing query history (live)",
|
|
2654
|
+
description: "Ask Bing live for one query's clicks and impressions per day, or per week with position when page is given (one call to Bing).",
|
|
2655
|
+
access: "read",
|
|
2656
|
+
tier: "bing",
|
|
2657
|
+
inputSchema: bingQueryHistoryInputSchema,
|
|
2658
|
+
annotations: readAnnotations(true),
|
|
2659
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/query-history"],
|
|
2660
|
+
handler: (client, input) => client.bingQueryHistory(input.project, { query: input.query, page: input.page })
|
|
2661
|
+
}),
|
|
2662
|
+
defineTool({
|
|
2663
|
+
name: "canonry_bing_url_traffic",
|
|
2664
|
+
title: "Get Bing traffic for a URL (live)",
|
|
2665
|
+
description: "Ask Bing live for one URL's clicks and impressions, optionally with the URLs under it (children, 0-indexed page). One or two calls to Bing.",
|
|
2666
|
+
access: "read",
|
|
2667
|
+
tier: "bing",
|
|
2668
|
+
inputSchema: bingUrlTrafficInputSchema,
|
|
2669
|
+
annotations: readAnnotations(true),
|
|
2670
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/url-traffic"],
|
|
2671
|
+
handler: (client, input) => client.bingUrlTraffic(input.project, {
|
|
2672
|
+
url: input.url,
|
|
2673
|
+
children: input.children ? "true" : void 0,
|
|
2674
|
+
page: input.page === void 0 ? void 0 : String(input.page)
|
|
2675
|
+
})
|
|
2676
|
+
}),
|
|
2677
|
+
defineTool({
|
|
2678
|
+
name: "canonry_bing_keywords",
|
|
2679
|
+
title: "Research a keyword on Bing (live)",
|
|
2680
|
+
description: "Ask Bing live for any keyword's search volume over a window, its weekly history and related keywords with their volume (three calls to Bing). Not tied to the site; use it to size demand for a topic or find new queries to track. impressions is exact-match volume, broadImpressions broad-match.",
|
|
2681
|
+
access: "read",
|
|
2682
|
+
tier: "bing",
|
|
2683
|
+
inputSchema: bingKeywordsInputSchema,
|
|
2684
|
+
annotations: readAnnotations(true),
|
|
2685
|
+
openApiOperations: ["GET /api/v1/projects/{name}/bing/keywords"],
|
|
2686
|
+
handler: (client, input) => client.bingKeywords(input.project, {
|
|
2687
|
+
keyword: input.keyword,
|
|
2688
|
+
country: input.country,
|
|
2689
|
+
language: input.language,
|
|
2690
|
+
startDate: input.startDate,
|
|
2691
|
+
endDate: input.endDate
|
|
2692
|
+
})
|
|
2693
|
+
}),
|
|
2468
2694
|
defineTool({
|
|
2469
2695
|
name: "canonry_gsc_sitemaps",
|
|
2470
2696
|
title: "Get GSC sitemaps",
|
|
@@ -4242,6 +4468,17 @@ var rawCanonryMcpTools = [
|
|
|
4242
4468
|
openApiOperations: ["GET /api/v1/projects/{name}/technical-aeo/trend"],
|
|
4243
4469
|
handler: (client, input) => client.getTechnicalAeoTrend(input.project, input.limit !== void 0 ? { limit: input.limit } : void 0)
|
|
4244
4470
|
}),
|
|
4471
|
+
defineTool({
|
|
4472
|
+
name: "canonry_sitemaps",
|
|
4473
|
+
title: "Compare sitemaps across the site, Google and Bing",
|
|
4474
|
+
description: `Read, from stored data, the sitemap files the latest Site Health scan read pages from, each engine's sitemap list (status, URL count, submitted and last read) and what each engine is missing: sitemaps the site declares or someone submitted to the other engine. google or bing is null when that engine is not connected or its list was never read. Use for "are my sitemaps in Google and Bing?" before submitting anything.`,
|
|
4475
|
+
access: "read",
|
|
4476
|
+
tier: "monitoring",
|
|
4477
|
+
inputSchema: projectInputSchema,
|
|
4478
|
+
annotations: readAnnotations(),
|
|
4479
|
+
openApiOperations: ["GET /api/v1/projects/{name}/sitemaps"],
|
|
4480
|
+
handler: (client, input) => client.sitemaps(input.project)
|
|
4481
|
+
}),
|
|
4245
4482
|
defineTool({
|
|
4246
4483
|
name: "canonry_trends",
|
|
4247
4484
|
title: "Get a dashboard trend card",
|