site_health_cwv_check
Check Core Web Vitals health: per-vital grades (good / needs-improvement / poor), distributions across pages, and the worst LCP pages for a date range. Uses QWA Growth Trends defaults (Web + google/organic) for UI-parity. Snapshot mode selects QWA's latest fully populated daily Performance, Accessibility, Best Practices, and SEO headline; trend mode uses QWA's authoritative day/week/month/quarter bucket aggregates and, with include_lighthouse_scores, returns those Lighthouse diagnostics in every bucket. Never construct a Lighthouse trend by stitching snapshot calls because snapshot headline aggregation is not the QWA period-bucket calculation. Supports an exact page filter, a page-path contains filter such as /blog/, and an exact QWA content-category filter without first enumerating every page. LCP and INP use the same seconds-based values shown by QWA; CLS is unitless. Lighthouse score fields remain raw 0–1 values in the analytics payload; metricSemantics gives the required QWA presentation rule: multiply by 100, round to a whole score point, and do not append %. Every successful response includes dataCoverage, explicit pagePopulation semantics, and aggregationMetadata that forbids unsupported weighting or representativeness inferences. For QWA page-total comparisons, use pagePopulation.qwaDisplayedPages (the period union when comparison_range is present), not the backward-compatible selected-row pageCount. Use for "any Core Web Vitals regressions?" or page-speed questions. Optionally split mobile vs desktop, surface the broader Lighthouse scores (SEO / accessibility / best-practices), compare to a prior period, or return a per-page scorecard.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"date_range": "<date_range>"
},
"name": "site_health_cwv_check"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | "site" for the rollup only; "pages" to include the weakest pages | pages |
| device | No | Restrict to one device (mobile / desktop). | |
| source | No | Where Google search performance data is read from. Use "bigquery" ONLY when the user explicitly asks for BigQuery as the source AND describe_data_sources reports it available from live customer configuration — it returns far more granular per-query data (privacy-suppressed impressions appear under "[anonymized by google]"). | default |
| category | No | Exact QWA content-category label. Applied inside every analytics query leg. This is category equality, not a page-path match. | |
| date_range | Yes | Explicit date range, e.g. "2026-05-01 to 2026-05-31". Both endpoints are INCLUSIVE — the END day is covered (a 7-day range = 7 days). Quattr weeks run Sunday–Saturday; for "last week" use the most recent complete Sun–Sat span. | |
| granularity | No | Return a native QWA TIME SERIES bucketed by day / week / month / quarter — per-bucket RAW metric aggregates (LCP/INP seconds, CLS unitless, Lighthouse scores 0–1), NOT graded into good/needs-improvement/poor. Present score fields as QWA whole score points (value × 100, rounded, without %), as specified by metricSemantics. Set include_lighthouse_scores=true for monthly SEO/accessibility/best-practices and the other Lighthouse diagnostics. Mutually exclusive with comparison_range (and skips the worst-pages / grading logic). | |
| page_filter | No | Optional page scope. Applied inside every analytics query leg; do not enumerate all pages and filter client-side. | |
| date_range_mode | No | REQUIRED when granularity is set. Use "calendar" for YTD or another explicit calendar period: keep the requested start and return only complete buckets inside it. Use "rolling" for "last N days/weeks/months/quarters": preserve N complete buckets by shifting the full window backward when needed. | |
| split_by_device | No | Also return a per-device breakdown (mobile vs desktop), each separately scored. | |
| comparison_range | No | A prior date range — returns per-vital deltas vs the selected range (period-over-period). | |
| include_scorecard | No | Return the per-page CWV scorecard (all 4 vitals per returned page), not just the weakest pages. pageEvidence reports whether the full page population fit within the governed result limit. | |
| include_lighthouse_scores | No | Also surface 8 ungraded Lighthouse diagnostics: raw 0–1 SEO, accessibility, best-practices, and mobile scores plus TTI, TBT, FCP, and Speed Index timing averages in seconds. Present score fields as QWA whole score points (value × 100, rounded, without %), as specified by metricSemantics. With granularity, adds all 8 values to every native trend bucket; do not synthesize a trend from repeated snapshot calls. |