@digestseo/mcp-gsc 0.4.28 → 0.4.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/package.json +1 -1
- package/src/google.ts +6 -0
- package/src/index.ts +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.29] - 2026-09-23
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- `urls.inspect_many` now rejects exact duplicate URLs before reserving local safety-budget units or calling Google, preventing one batch from wasting URL Inspection quota on repeated identical requests.
|
|
14
|
+
- `analytics.query` now rejects explicit `byPage` aggregation when the request also groups or filters by page, returning deterministic local guidance to use `auto` instead of forwarding a provider-invalid aggregation shape to Google.
|
|
15
|
+
|
|
10
16
|
## [0.4.28] - 2026-09-23
|
|
11
17
|
|
|
12
18
|
### Added
|
package/package.json
CHANGED
package/src/google.ts
CHANGED
|
@@ -371,6 +371,12 @@ export function assertSearchAnalyticsQueryCompatible(body: SearchAnalyticsQuery)
|
|
|
371
371
|
}
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
+
if (body.aggregationType === 'byPage' && hasPageGroupingOrFilter) {
|
|
375
|
+
throw new Error(
|
|
376
|
+
'Search Analytics aggregationType byPage cannot be combined with page grouping or filtering; use auto instead.',
|
|
377
|
+
);
|
|
378
|
+
}
|
|
379
|
+
|
|
374
380
|
if (body.aggregationType === 'byProperty') {
|
|
375
381
|
if (hasPageGroupingOrFilter) {
|
|
376
382
|
throw new Error(
|
package/src/index.ts
CHANGED
|
@@ -987,8 +987,11 @@ class GscMcpRuntime {
|
|
|
987
987
|
.array(z.string().url())
|
|
988
988
|
.min(1)
|
|
989
989
|
.max(10)
|
|
990
|
+
.refine((urls) => new Set(urls).size === urls.length, {
|
|
991
|
+
message: 'inspection_urls must not contain duplicate URLs.',
|
|
992
|
+
})
|
|
990
993
|
.describe(
|
|
991
|
-
'Between 1 and 10 fully-qualified URLs to inspect. Each URL must belong to the site_url property.',
|
|
994
|
+
'Between 1 and 10 unique fully-qualified URLs to inspect. Each URL must belong to the site_url property.',
|
|
992
995
|
),
|
|
993
996
|
language_code: z
|
|
994
997
|
.string()
|
|
@@ -1216,7 +1219,7 @@ class GscMcpRuntime {
|
|
|
1216
1219
|
.enum(['auto', 'byNewsShowcasePanel', 'byPage', 'byProperty'])
|
|
1217
1220
|
.default('auto')
|
|
1218
1221
|
.describe(
|
|
1219
|
-
"How Google aggregates metrics. Leave as 'auto' unless specific semantics are needed. 'byProperty'
|
|
1222
|
+
"How Google aggregates metrics. Leave as 'auto' unless specific semantics are needed. When grouping/filtering by page, use 'auto'; explicit 'byPage' and 'byProperty' are rejected for that request shape. 'byProperty' is also unavailable for search_type discover/googleNews. 'byNewsShowcasePanel' requires search_type discover/googleNews plus a searchAppearance equals NEWS_SHOWCASE filter, and cannot be combined with page grouping/filtering or another searchAppearance filter.",
|
|
1220
1223
|
),
|
|
1221
1224
|
dimension_filter_groups: z
|
|
1222
1225
|
.array(
|