@canonry/canonry 7.65.1 → 7.66.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.
Files changed (135) hide show
  1. package/assets/agent-workspace/skills/aero/references/seo-analysis.md +15 -1
  2. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +1 -1
  3. package/assets/assets/{AgentSetupPage-BDLMjn1I.js → AgentSetupPage-DXFxOJ1W.js} +1 -1
  4. package/assets/assets/{AuditHistoryPanel-qhIB8KRK.js → AuditHistoryPanel-CS8UfTHc.js} +1 -1
  5. package/assets/assets/{BacklinksPage-iWrZ0-Pp.js → BacklinksPage-D5IA2tNY.js} +1 -1
  6. package/assets/assets/{HistoryPage-BP1_GGlT.js → HistoryPage-DsQAUkgR.js} +1 -1
  7. package/assets/assets/MeasurementPropertyPage-CdCnjCaS.js +4 -0
  8. package/assets/assets/ProjectPage-D3oFKnBG.js +9 -0
  9. package/assets/assets/{RunsPage-Ddd2oE1Y.js → RunsPage-BgjN1N3t.js} +1 -1
  10. package/assets/assets/{SettingsPage-D_QdYWDO.js → SettingsPage-BQuqnEvm.js} +1 -1
  11. package/assets/assets/SiteHealthSection-C6QE9xNk.js +2 -0
  12. package/assets/assets/ToneBadge-DNva5_AM.js +60 -0
  13. package/assets/assets/{TrafficPage-VnBUE1S6.js → TrafficPage-BBqpvwl5.js} +2 -2
  14. package/assets/assets/{TrafficSourceDetailPage-CdoL5Dt9.js → TrafficSourceDetailPage-uxd0ojry.js} +1 -1
  15. package/assets/assets/{account-context-CWRd3KeS.js → account-context-wRthfm6K.js} +1 -1
  16. package/assets/assets/{card-Cb_fM36G.js → card-Bq64-UB5.js} +1 -1
  17. package/assets/assets/{extract-error-message-DSIAoHTR.js → extract-error-message-BRDc8As2.js} +1 -1
  18. package/assets/assets/{format-helpers-CxNDa1oa.js → format-helpers-D5wFtgg2.js} +1 -1
  19. package/assets/assets/{index-D6WlecSB.js → index-Ttz5_bL3.js} +13 -13
  20. package/assets/assets/{query-client-DLdAMlsX.js → query-client-IopmAOx0.js} +1 -1
  21. package/assets/assets/react-query-CISHjSch.js +1 -0
  22. package/assets/assets/{react-sigma_core.esm.min-DEG8vFYD.js → react-sigma_core.esm.min-d72rX0Uo.js} +1 -1
  23. package/assets/assets/{service-DKP-BIBy.js → service-DsDxSQuN.js} +1 -1
  24. package/assets/index.html +7 -7
  25. package/dist/{ads-D4WQOT5K.js → ads-IFKZU7SC.js} +3 -3
  26. package/dist/{agent-E3IYC7OJ.js → agent-3KMENHL3.js} +7 -7
  27. package/dist/{agent-ask-ZSKRPB2Z.js → agent-ask-7WVQLLD5.js} +3 -3
  28. package/dist/{agent-conversations-YHPYPQE2.js → agent-conversations-5LR67TBD.js} +3 -3
  29. package/dist/{agent-memory-6OWOOD5O.js → agent-memory-GKUCCKVX.js} +3 -3
  30. package/dist/{agent-providers-7KZK37UO.js → agent-providers-TVCRM3YZ.js} +3 -3
  31. package/dist/{agent-transcript-3O7GPML6.js → agent-transcript-MUTCOOWG.js} +3 -3
  32. package/dist/{analytics-P2LLIUYK.js → analytics-2IXSG5ML.js} +3 -3
  33. package/dist/{apply-VBNNJOCT.js → apply-7RIYK4VC.js} +3 -3
  34. package/dist/{backfill-F5SSURCH.js → backfill-VU3FV6DQ.js} +9 -9
  35. package/dist/{backlinks-4RE3TNNA.js → backlinks-DLSRYEX2.js} +3 -3
  36. package/dist/{bing-V6UN7D44.js → bing-4CXTZUH4.js} +3 -3
  37. package/dist/{bootstrap-SHTSPAI5.js → bootstrap-OOHSBSDQ.js} +10 -10
  38. package/dist/{cdp-GDL2VFI3.js → cdp-Y53SRSRV.js} +7 -7
  39. package/dist/{chunk-ZWZOQNLD.js → chunk-2YBEI6LE.js} +1 -1
  40. package/dist/{chunk-SL3Y7IOX.js → chunk-6ASEI24F.js} +1 -1
  41. package/dist/{chunk-HI2HCYLB.js → chunk-743NYXIK.js} +2 -2
  42. package/dist/{chunk-BV6NXSAH.js → chunk-ALQEGGYM.js} +21 -3
  43. package/dist/{chunk-JSAYC36T.js → chunk-AVQQRTMD.js} +146 -39
  44. package/dist/{chunk-Q2WZAD5W.js → chunk-BCRRAH5C.js} +1 -1
  45. package/dist/{chunk-ZPRJCSSR.js → chunk-CKTA5374.js} +1 -1
  46. package/dist/{chunk-GZPGDAAF.js → chunk-DE2UI37M.js} +2 -2
  47. package/dist/{chunk-2Y7RN5HG.js → chunk-DH5QRKFW.js} +3 -3
  48. package/dist/{chunk-CRKOGLKJ.js → chunk-DVYS2RMM.js} +4 -4
  49. package/dist/{chunk-F7NZEUXP.js → chunk-EIMXB6UH.js} +14 -2
  50. package/dist/{chunk-C2PYKUD3.js → chunk-EYWC24VC.js} +1 -1
  51. package/dist/{chunk-2AROR73F.js → chunk-FG7KMVA6.js} +5 -5
  52. package/dist/{chunk-QNRMYDK6.js → chunk-FNI3QSVD.js} +1 -1
  53. package/dist/{chunk-H6HIJAIU.js → chunk-H37CDAZX.js} +2 -2
  54. package/dist/{chunk-XMKXXWMO.js → chunk-IHOVPHUW.js} +2 -2
  55. package/dist/{chunk-M3OZL6PQ.js → chunk-IPF2S5G2.js} +4 -4
  56. package/dist/{chunk-3QKKHU7D.js → chunk-J5YZXRD5.js} +8 -8
  57. package/dist/{chunk-XOMUSIM7.js → chunk-JALKQREN.js} +1 -1
  58. package/dist/{chunk-Z2EENWM3.js → chunk-JYOMHNRP.js} +182 -20
  59. package/dist/{chunk-66DPEVLJ.js → chunk-K2HDTMRI.js} +3 -3
  60. package/dist/{chunk-2UFA3DYM.js → chunk-L7DQYID4.js} +4 -4
  61. package/dist/{chunk-HO5W6QC7.js → chunk-LBRG6RKI.js} +2 -1
  62. package/dist/{chunk-HPUZMBS6.js → chunk-OSF27DCY.js} +2 -2
  63. package/dist/{chunk-737TOG2F.js → chunk-PFKBQTYD.js} +1 -1
  64. package/dist/{chunk-S4VCXCRQ.js → chunk-QRBZBJ4U.js} +1 -1
  65. package/dist/{chunk-X4AHYJCE.js → chunk-SGZWOUIZ.js} +5 -5
  66. package/dist/{chunk-AE6HJZBU.js → chunk-TJZLICMB.js} +3 -3
  67. package/dist/{chunk-GM5ZOWBK.js → chunk-VGUZPC3I.js} +4 -4
  68. package/dist/{chunk-DQVJB6CZ.js → chunk-WNCOBSPN.js} +82 -8
  69. package/dist/{chunk-LTX3TJ3E.js → chunk-XC44Q5XR.js} +1 -1
  70. package/dist/{chunk-IYB3EGSD.js → chunk-YJYLFIVT.js} +1 -1
  71. package/dist/{chunk-IJKKK7F4.js → chunk-YRX5UOM3.js} +1 -1
  72. package/dist/{chunk-SRTX6XYR.js → chunk-ZRSNMEB3.js} +364 -336
  73. package/dist/{citations-GO4SPZYS.js → citations-ZTQIYYDB.js} +3 -3
  74. package/dist/{cli-catalog-6XYQY3PI.js → cli-catalog-IZJXAHFQ.js} +3 -3
  75. package/dist/{cli-commands-2TZKVGK6.js → cli-commands-XYM2VMAK.js} +7 -7
  76. package/dist/cli.js +13 -13
  77. package/dist/{competitor-JBTKRJ6Y.js → competitor-SIXAPHOM.js} +3 -3
  78. package/dist/{content-LKXXQ7X4.js → content-XPS3D3Y6.js} +3 -3
  79. package/dist/{dashboard-LUA7UX6B.js → dashboard-FMJDM5PA.js} +6 -6
  80. package/dist/{demo-I7JDZJUW.js → demo-QQKSHTPO.js} +1 -1
  81. package/dist/{demo-server-GNGGWERV.js → demo-server-LQ3QXUAS.js} +71 -11
  82. package/dist/{discover-TODAYYJ2.js → discover-K5HFEU2T.js} +3 -3
  83. package/dist/{discover-eval-FWQESEYB.js → discover-eval-6536Z2YN.js} +3 -3
  84. package/dist/{doctor-AXNJT2UC.js → doctor-STNH3PHH.js} +3 -3
  85. package/dist/{evidence-2XGEY4ZC.js → evidence-W2EWKBAV.js} +3 -3
  86. package/dist/{export-cmd-7RMYBIBZ.js → export-cmd-EGHMY3M6.js} +3 -3
  87. package/dist/{ga-HZDIZGCO.js → ga-DVIG3PVW.js} +3 -3
  88. package/dist/{gbp-SMRBWJEL.js → gbp-SNS4XZBO.js} +3 -3
  89. package/dist/{google-2CN345XS.js → google-KGPHZG6E.js} +4 -4
  90. package/dist/{google-marketing-W7T2VTVW.js → google-marketing-VZR6W3L6.js} +1 -1
  91. package/dist/{health-cmd-W7OWZ4ZI.js → health-cmd-2KWO2GOM.js} +3 -3
  92. package/dist/{history-UVNCBHTE.js → history-ZY27B7JE.js} +3 -3
  93. package/dist/index.d.ts +236 -161
  94. package/dist/index.js +24 -24
  95. package/dist/{init-2IWS2R7G.js → init-5TXIKII2.js} +11 -11
  96. package/dist/{insights-PQ52G5LU.js → insights-MUYEOSOG.js} +3 -3
  97. package/dist/intelligence-service-U4NSGZUH.js +15 -0
  98. package/dist/{journeys-3PP5GYVJ.js → journeys-YO54IRVC.js} +3 -3
  99. package/dist/{keys-CWZUX7IQ.js → keys-M4QZGYVJ.js} +3 -3
  100. package/dist/{keyword-5OMMULLY.js → keyword-MU62MGWT.js} +3 -3
  101. package/dist/{logs-3FTE42E3.js → logs-BAQM334Q.js} +3 -3
  102. package/dist/{mcp-FK5DTI7I.js → mcp-LYS5P3PB.js} +2 -2
  103. package/dist/mcp.js +9 -9
  104. package/dist/{measurement-plan-ICO2BQNT.js → measurement-plan-HVSTZWTW.js} +5 -5
  105. package/dist/{notify-ML4PYD3L.js → notify-XSP5JXU3.js} +3 -3
  106. package/dist/{organic-evidence-4U4H3DCR.js → organic-evidence-4HYW4PVO.js} +3 -3
  107. package/dist/{overview-NF427VFO.js → overview-XH72WTZT.js} +4 -4
  108. package/dist/{project-AAO65OF7.js → project-UKH7FTQX.js} +3 -3
  109. package/dist/{query-7ZOUQNF5.js → query-RRD5M4QV.js} +3 -3
  110. package/dist/{research-UQ7AF5N3.js → research-V2IGDUKL.js} +3 -3
  111. package/dist/{results-export-CZCLC4ZH.js → results-export-5FC7ZT6O.js} +3 -3
  112. package/dist/{run-4XJZW52R.js → run-B2A4LMWU.js} +4 -4
  113. package/dist/{schedule-D3E5FDBE.js → schedule-PLY6CHQT.js} +3 -3
  114. package/dist/{search-DYET2IL4.js → search-ACVK3WH5.js} +3 -3
  115. package/dist/{serve-QWMTR3SN.js → serve-2LTQZPEK.js} +25 -25
  116. package/dist/{session-7CW2V5EH.js → session-IHXMPETX.js} +12 -12
  117. package/dist/{settings-ZISHACFX.js → settings-ZHBNX2I5.js} +3 -3
  118. package/dist/{skills-WU6IN3NL.js → skills-KWRTCXTF.js} +2 -2
  119. package/dist/{snapshot-KCKQDJ2W.js → snapshot-GBDCCV6L.js} +3 -3
  120. package/dist/{src-WIOU5G4V.js → src-NOTQWGYV.js} +2 -2
  121. package/dist/{status-CYZFVMYA.js → status-FGDDGBMJ.js} +4 -4
  122. package/dist/{technical-aeo-P5CS22AR.js → technical-aeo-AK4QI63Q.js} +3 -3
  123. package/dist/{telemetry-LPK5F2WU.js → telemetry-6QPWYMCR.js} +4 -4
  124. package/dist/{tools-E3B2GZ6Q.js → tools-PBNTVVN7.js} +11 -11
  125. package/dist/{traffic-5KZYXXIQ.js → traffic-AS4PIOQL.js} +5 -5
  126. package/dist/{users-2F346HIW.js → users-BNYKF35J.js} +3 -3
  127. package/dist/{visibility-stats-ITA6DNF3.js → visibility-stats-TWL3GJMD.js} +3 -3
  128. package/dist/{wordpress-ZHCFT6V3.js → wordpress-XBWXAACD.js} +3 -3
  129. package/package.json +1 -1
  130. package/assets/assets/MeasurementPropertyPage-dxGJ1GF9.js +0 -4
  131. package/assets/assets/ProjectPage-W6oYA85b.js +0 -9
  132. package/assets/assets/SiteHealthSection-DT20rNw-.js +0 -2
  133. package/assets/assets/ToneBadge-CJ6ObMRe.js +0 -60
  134. package/assets/assets/react-query-BktZZtSC.js +0 -1
  135. package/dist/intelligence-service-IAUGKMDO.js +0 -15
@@ -6,12 +6,12 @@ import {
6
6
  import {
7
7
  createApiClient,
8
8
  runWithUsageTags
9
- } from "./chunk-F7NZEUXP.js";
9
+ } from "./chunk-EIMXB6UH.js";
10
10
  import {
11
11
  canonryMcpTools,
12
12
  mcpOutputSchema,
13
13
  toolOperationAccess
14
- } from "./chunk-BV6NXSAH.js";
14
+ } from "./chunk-ALQEGGYM.js";
15
15
  import {
16
16
  PACKAGE_VERSION
17
17
  } from "./chunk-AOJU5LKX.js";
@@ -24,7 +24,7 @@ import {
24
24
  isReadOnlyKey,
25
25
  restrictedWriteScopes,
26
26
  upgradeCaveatFor
27
- } from "./chunk-DQVJB6CZ.js";
27
+ } from "./chunk-WNCOBSPN.js";
28
28
 
29
29
  // src/mcp/server.ts
30
30
  import { randomUUID } from "crypto";
@@ -258,7 +258,7 @@ var OPERATIONS_GUIDE = {
258
258
  "canonry_seo_sync",
259
259
  "canonry_seo_run_cancel"
260
260
  ],
261
- "guidance": "Read saved SEO evidence first. Preserve profile, exact domain or host, market, language, plan revision, dataset and collection date. SEO traffic and keyword metrics are third-party estimates, separate from Search Console observations and AI citation and mention coverage. Refresh requires explicit approval for the profile and work, a fresh refresh intent and an idempotency key. Hosted financial controls are internal; no credential or billing information belongs in the response."
261
+ "guidance": "Read saved SEO evidence first. Preserve profile, exact domain or host, market, language, plan revision, dataset and collection date. Market rankings (canonry_seo_market_rankings) are the site's Google position for its tracked queries by market, the same queries AI visibility measures. SEO traffic and keyword metrics are third-party estimates, separate from Search Console observations and AI citation and mention coverage. Refresh requires explicit approval for the profile and work, a fresh refresh intent and an idempotency key. Hosted financial controls are internal; no credential or billing information belongs in the response."
262
262
  },
263
263
  "operations": {
264
264
  "keywords": [
@@ -13365,6 +13365,7 @@ var STORED_READ_OPERATIONS = /* @__PURE__ */ new Set([
13365
13365
  "GET /api/v1/projects/{name}/seo/keyword-metrics",
13366
13366
  "GET /api/v1/projects/{name}/seo/domain-intelligence",
13367
13367
  "GET /api/v1/projects/{name}/seo/ranked-keywords",
13368
+ "GET /api/v1/projects/{name}/seo/market-rankings",
13368
13369
  "GET /api/v1/projects/{name}/gbp/local-post-attempt",
13369
13370
  "GET /api/v1/openapi.json",
13370
13371
  "GET /api/v1/screenshots/{snapshotId}",
@@ -21214,7 +21215,7 @@ function uncheckedSourcesLabel(value) {
21214
21215
 
21215
21216
  // ../contracts/src/seo.ts
21216
21217
  import { z as z66 } from "zod";
21217
- var seoCapabilitySchema = z66.enum(["keyword-metrics", "domain-intelligence", "ranked-keywords"]);
21218
+ var seoCapabilitySchema = z66.enum(["keyword-metrics", "domain-intelligence", "ranked-keywords", "market-rankings"]);
21218
21219
  var SeoCapabilities = seoCapabilitySchema.enum;
21219
21220
  var seoProviderSchema = z66.enum(["dataforseo"]);
21220
21221
  var SeoProviders = seoProviderSchema.enum;
@@ -21240,16 +21241,36 @@ var seoScopeSelectionSchema = z66.object({
21240
21241
  key: z66.string().min(1).max(200).optional(),
21241
21242
  expectedPlanRevision: z66.number().int().nonnegative().optional()
21242
21243
  }).strict();
21244
+ var seoDeviceSchema = z66.enum(["desktop", "mobile"]);
21245
+ var SeoDevices = seoDeviceSchema.enum;
21246
+ var seoSearchTextSchema = z66.enum(["query", "query-without-market-region"]);
21247
+ var SeoSearchTexts = seoSearchTextSchema.enum;
21248
+ var seoMarketLocationSchema = z66.object({
21249
+ key: z66.string().trim().min(1).max(200),
21250
+ locationCode: z66.number().int().positive(),
21251
+ /** The provider's name for the location, shown beside results. */
21252
+ label: z66.string().trim().min(1).max(200)
21253
+ }).strict();
21254
+ var SEO_MARKET_RANKING_MAX_SEARCHES = 1e3;
21255
+ var SEO_PROJECT_MARKET_KEY = "project";
21256
+ var seoRankingSettingsSchema = z66.object({
21257
+ locations: z66.array(seoMarketLocationSchema).max(500),
21258
+ /** How many organic results to check per search, in steps of 10. A target past this reads as not ranked. */
21259
+ depth: z66.number().int().min(10).max(100).multipleOf(10),
21260
+ device: seoDeviceSchema,
21261
+ searchText: seoSearchTextSchema
21262
+ }).strict();
21243
21263
  var seoProfileInputSchema = z66.object({
21244
21264
  name: z66.string().trim().min(1).max(120),
21245
21265
  connectionId: z66.string().min(1).max(100),
21246
- capabilities: z66.array(seoCapabilitySchema).min(1).max(3),
21266
+ capabilities: z66.array(seoCapabilitySchema).min(1).max(4),
21247
21267
  targets: z66.array(seoTargetSchema).max(20),
21248
21268
  keywords: z66.array(z66.string().trim().min(1).max(80).regex(/^\S+(?:\s+\S+){0,9}$/, "Use at most 10 words per keyword.")).max(700),
21249
21269
  locationCode: z66.number().int().positive(),
21250
21270
  languageCode: z66.string().min(2).max(10),
21251
21271
  limit: z66.number().int().min(1).max(1e3),
21252
- scope: seoScopeSelectionSchema
21272
+ scope: seoScopeSelectionSchema,
21273
+ rankings: seoRankingSettingsSchema.optional()
21253
21274
  }).strict();
21254
21275
  var seoProfileSchema = seoProfileInputSchema.extend({
21255
21276
  id: z66.string(),
@@ -21311,7 +21332,7 @@ var seoProvenanceSchema = z66.object({
21311
21332
  engine: z66.literal("google"),
21312
21333
  locationCode: z66.number().int().positive(),
21313
21334
  languageCode: z66.string(),
21314
- device: z66.literal("unspecified"),
21335
+ device: z66.union([z66.literal("unspecified"), seoDeviceSchema]),
21315
21336
  collectedAt: z66.string(),
21316
21337
  sourceUpdatedAt: z66.string().nullable()
21317
21338
  }).strict();
@@ -21355,13 +21376,52 @@ var seoRankedKeywordSchema = z66.object({
21355
21376
  serpFeatures: z66.array(z66.string()),
21356
21377
  provenance: seoProvenanceSchema
21357
21378
  }).strict();
21379
+ var seoMarketRankingContextSchema = z66.object({
21380
+ marketKey: z66.string(),
21381
+ marketLabel: z66.string(),
21382
+ /** The market's top-level group (a metro, say), or null when it has none. */
21383
+ regionKey: z66.string().nullable(),
21384
+ regionLabel: z66.string().nullable(),
21385
+ queryId: z66.string().nullable(),
21386
+ queryText: z66.string(),
21387
+ queryClass: queryClassSchema
21388
+ }).strict();
21389
+ var seoMarketRankingSchema = seoMarketRankingContextSchema.extend({
21390
+ /** The exact text searched on Google for `queryText` (see `seoSearchTextSchema`). */
21391
+ searchText: z66.string(),
21392
+ locationLabel: z66.string(),
21393
+ target: seoTargetSchema,
21394
+ rankOrganic: z66.number().int().positive().nullable(),
21395
+ rankAbsolute: z66.number().int().positive().nullable(),
21396
+ url: z66.string().nullable(),
21397
+ depth: z66.number().int().positive(),
21398
+ /** Tracked competitors found in the same results, by their best organic position. */
21399
+ competitors: z66.array(z66.object({ domain: z66.string(), rankOrganic: z66.number().int().positive() }).strict()),
21400
+ provenance: seoProvenanceSchema
21401
+ }).strict();
21358
21402
  var seoResultsSchema = z66.object({
21359
21403
  keywordMetrics: z66.array(seoKeywordMetricsSchema),
21360
21404
  domainIntelligence: z66.array(seoDomainIntelligenceSchema),
21361
- rankedKeywords: z66.array(seoRankedKeywordSchema)
21405
+ rankedKeywords: z66.array(seoRankedKeywordSchema),
21406
+ marketRankings: z66.array(seoMarketRankingSchema)
21362
21407
  }).strict();
21363
21408
  function emptySeoResults() {
21364
- return { keywordMetrics: [], domainIntelligence: [], rankedKeywords: [] };
21409
+ return { keywordMetrics: [], domainIntelligence: [], rankedKeywords: [], marketRankings: [] };
21410
+ }
21411
+ function marketRegionName(marketLabel) {
21412
+ const comma = marketLabel.lastIndexOf(",");
21413
+ if (comma < 0) return null;
21414
+ const region = marketLabel.slice(comma + 1).trim();
21415
+ return region || null;
21416
+ }
21417
+ function seoSearchTextForQuery(queryText, marketLabel, rule) {
21418
+ const text = queryText.replace(/\s+/g, " ").trim();
21419
+ if (rule === SeoSearchTexts.query || marketLabel === null) return text;
21420
+ const region = marketRegionName(marketLabel.replace(/\s+/g, " "));
21421
+ if (!region) return text;
21422
+ const suffix = `, ${region}`;
21423
+ if (text.length <= suffix.length || text.slice(-suffix.length).toLowerCase() !== suffix.toLowerCase()) return text;
21424
+ return text.slice(0, -suffix.length).trim();
21365
21425
  }
21366
21426
  var seoRunSchema = z66.object({
21367
21427
  id: z66.string(),
@@ -21393,7 +21453,8 @@ var seoTaskSchema = z66.object({
21393
21453
  var seoResultCountsSchema = z66.object({
21394
21454
  keywordMetrics: z66.number().int().nonnegative(),
21395
21455
  domainIntelligence: z66.number().int().nonnegative(),
21396
- rankedKeywords: z66.number().int().nonnegative()
21456
+ rankedKeywords: z66.number().int().nonnegative(),
21457
+ marketRankings: z66.number().int().nonnegative()
21397
21458
  }).strict();
21398
21459
  var seoRunDetailSchema = seoRunSchema.extend({
21399
21460
  tasks: z66.array(seoTaskSchema),
@@ -21417,6 +21478,11 @@ var seoPageShape = {
21417
21478
  var seoKeywordMetricsListSchema = z66.object({ ...seoPageShape, items: z66.array(seoKeywordMetricsSchema) }).strict();
21418
21479
  var seoDomainIntelligenceListSchema = z66.object({ ...seoPageShape, items: z66.array(seoDomainIntelligenceSchema) }).strict();
21419
21480
  var seoRankedKeywordListSchema = z66.object({ ...seoPageShape, items: z66.array(seoRankedKeywordSchema) }).strict();
21481
+ var seoMarketRankingQuerySchema = seoEvidenceQuerySchema.extend({
21482
+ marketKey: z66.string().min(1).max(200).optional(),
21483
+ regionKey: z66.string().min(1).max(200).optional()
21484
+ }).strict();
21485
+ var seoMarketRankingListSchema = z66.object({ ...seoPageShape, items: z66.array(seoMarketRankingSchema) }).strict();
21420
21486
  var seoOverviewSchema = z66.object({
21421
21487
  status: seoStatusSchema,
21422
21488
  profiles: z66.array(seoProfileSchema),
@@ -21432,7 +21498,8 @@ var seoOverviewSchema = z66.object({
21432
21498
  }).strict().nullable(),
21433
21499
  keywordMetricsCount: z66.number().int().nonnegative(),
21434
21500
  domainIntelligenceCount: z66.number().int().nonnegative(),
21435
- rankedKeywordCount: z66.number().int().nonnegative()
21501
+ rankedKeywordCount: z66.number().int().nonnegative(),
21502
+ marketRankingCount: z66.number().int().nonnegative()
21436
21503
  }).strict();
21437
21504
  var seoMicrosSchema = z66.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
21438
21505
  var seoOperatorTaskSchema = z66.object({
@@ -27292,6 +27359,10 @@ export {
27292
27359
  SeoScopeKinds,
27293
27360
  SeoRunStatuses,
27294
27361
  SeoAvailability,
27362
+ seoDeviceSchema,
27363
+ SEO_MARKET_RANKING_MAX_SEARCHES,
27364
+ SEO_PROJECT_MARKET_KEY,
27365
+ seoRankingSettingsSchema,
27295
27366
  seoProfileInputSchema,
27296
27367
  seoProfileSchema,
27297
27368
  seoProfileListSchema,
@@ -27301,6 +27372,7 @@ export {
27301
27372
  seoQuoteSchema,
27302
27373
  seoSyncInputSchema,
27303
27374
  emptySeoResults,
27375
+ seoSearchTextForQuery,
27304
27376
  seoRunSchema,
27305
27377
  seoRunDetailSchema,
27306
27378
  seoRunListSchema,
@@ -27308,6 +27380,8 @@ export {
27308
27380
  seoKeywordMetricsListSchema,
27309
27381
  seoDomainIntelligenceListSchema,
27310
27382
  seoRankedKeywordListSchema,
27383
+ seoMarketRankingQuerySchema,
27384
+ seoMarketRankingListSchema,
27311
27385
  seoOverviewSchema,
27312
27386
  seoOperatorTaskSchema,
27313
27387
  seoReconcileInputSchema,
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-HGMYEDAQ.js";
9
9
  import {
10
10
  describeError
11
- } from "./chunk-DQVJB6CZ.js";
11
+ } from "./chunk-WNCOBSPN.js";
12
12
 
13
13
  // src/commands/mcp.ts
14
14
  import fs from "fs";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  API_PROVIDER_NAMES,
3
3
  ProviderNames
4
- } from "./chunk-DQVJB6CZ.js";
4
+ } from "./chunk-WNCOBSPN.js";
5
5
 
6
6
  // src/provider-registration.ts
7
7
  function isApiProviderRegistrable(name, entry) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  USAGE_TELEMETRY_HEADERS,
3
3
  redactLogString
4
- } from "./chunk-DQVJB6CZ.js";
4
+ } from "./chunk-WNCOBSPN.js";
5
5
 
6
6
  // ../api-routes/src/request-context.ts
7
7
  import { AsyncLocalStorage } from "async_hooks";