v1.7.0
Added — ga4
ga4_metadata— which dimensions/metrics exist in this property (custom ones included). A property exposes hundreds of fields (375 / 119 on a live account), so the list is searchable and capped. Each field carriestypeandblockedReasons— a blocked metric silently returns zeros and makes a metric filter fail with 400.ga4_check_compatibility— is a combination valid for this property, without paying for a report. When incompatible, the tool isolates and names the offending field (GA4 itself only says "the dimensions and metrics are incompatible"). Filters participate in compatibility, so they can be passed too.- Period comparison in every report tool (
compareStartDate/compareEndDate) — rows gain adateRangecolumn (current/previous). GA4'slimitapplies to the whole response, so a truncated comparison returns an explicit note. metricFilters— filter by metric values (sessions > 50).includeTotals— metric totals, one row per period when comparing.
Fixed — post-release review of 1.6.0 (two passes + live verification)
ga4_events(keyEventsOnly: true)returned ALL events — the flag added a metric but no filter. Now filters onisKeyEvent. This is whyseo-tools-mcp-ga4@1.6.0is deprecated.landingPage→landingPagePlusQueryString;pathContainsfilters the grouping dimension;orderByvalidated locally;ga4_realtimeno longer fabricatestimeZone/currency/thresholded;truncatedaccounts foroffset;ga4_list_propertieswalks all pages.- shared/google: the browser page after OAuth consent named
gsc_oauth_finishfor every server — GA4 users were sent to the wrong tool. 429/403 classification improved, and the 403 hint no longer discards Google's own message (which contains the "enable this API" link).
npm: seo-tools-mcp-<server>@1.7.0 (8 servers). Full details in CHANGELOG.