Google CrUX MCP
Google CrUX MCP
English | Русский
A1 Google CrUX MCP는 실사용자 Core Web Vitals 데이터를 AI 앱에 제공합니다. 공개 사이트나 페이지가 LCP, INP, CLS를 통과하는지 확인하고, 모바일과 데스크톱을 비교하며, 지표가 시간에 따라 어떻게 변했는지 볼 수 있습니다.
Google의 Chrome UX Report 데이터셋을 읽습니다. 이는 Chrome 사용자로부터 수집된 필드 데이터이며, 합성 속도 테스트나 사이트를 변경하는 방법이 아닙니다.
읽기 전용 도구 6개. Core Web Vitals 평가, 기기 비교, 오리진-페이지 비교, 40주 추세, 원시 최신 또는 과거 기록을 제공합니다.
실사용자 데이터. PageSpeed Insights와 Google의 Core Web Vitals 신호가 사용하는 것과 동일한 CrUX 필드 데이터입니다.
명확한 가용성 경계. 실사용자 트래픽이 충분한 공개 오리진과 URL만 데이터를 가지며,
no_data는 유효한 결과입니다.알려진 할당량 비용. CrUX는 프로젝트당 분당 150개의 쿼리를 허용합니다. 기기 비교는 API 호출 4회, 오리진-페이지 비교는 API 호출 2회를 사용합니다.
읽기 전용 질문으로 시작하세요:
https://example.com은 모바일에서 Core Web Vitals를 통과하나요?
서버 연결 · 사용 사례 살펴보기 · 기술 문서
1분 만에 작동 확인하기
사용자:
https://example.com/pricing은 모바일에서 Core Web Vitals를 통과하나요?어시스턴트: p75 LCP, INP, CLS와 그 양호/개선 필요/불량 등급, 그리고 종합 결과를 보여줍니다. 변경되는 것은 없습니다.
사용자: 이 페이지를 사이트 평균과 비교하고, 모바일이 데스크톱과 어떻게 다른지 보여주세요.
어시스턴트: 오리진과 URL을 비교한 다음, 기기 그룹과 트래픽 점유율을 비교합니다. 6개 도구는 모두 공개 CrUX 데이터셋만 읽습니다.
Related MCP server: GSC Analyst Connector
목차
빠른 시작
Node.js 20+와 Chrome UX Report API가 활성화된 Google Cloud API 키가 필요합니다.
서버를 AI 앱에 추가하세요.
위의 읽기 전용 질문을 물어보세요.
설정 → 플러그인 → MCP 서버에서 서버 추가를 선택한 다음 CRUX_API_KEY와 함께 npx -y mcp-google-crux@latest를 추가합니다.
codex mcp add google-crux --env CRUX_API_KEY=your_key -- npx -y mcp-google-crux@latest
codex mcp listclaude mcp add --env CRUX_API_KEY=your_key --transport stdio --scope user google-crux -- npx -y mcp-google-crux@latest
claude mcp list설정 → 개발자 → 구성 편집을 열고 다음을 추가합니다: {"mcpServers":{"google-crux":{"command":"npx","args":["-y","mcp-google-crux@latest"],"env":{"CRUX_API_KEY":"your_key"}}}}.
구성 편집을 사용할 수 없는 경우 macOS에서는 ~/Library/Application Support/Claude/claude_desktop_config.json을, Windows에서는 %APPDATA%\Claude\claude_desktop_config.json을 편집합니다. Claude Desktop MCP 문서
macOS/Linux에서는 ~/.cursor/mcp.json에, Windows에서는 %USERPROFILE%\.cursor\mcp.json에 다음을 추가합니다: {"mcpServers":{"google-crux":{"type":"stdio","command":"npx","args":["-y","mcp-google-crux@latest"],"env":{"CRUX_API_KEY":"your_key"}}}}. Cursor MCP 문서
MCP: Open User Configuration을 실행하고 다음을 추가하세요:
{"servers":{"google-crux":{"type":"stdio","command":"npx","args":["-y","mcp-google-crux@latest"],"env":{"CRUX_API_KEY":"${input:crux_api_key}"}}},"inputs":[{"type":"promptString","id":"crux_api_key","description":"Google Cloud API key","password":true}]}MCP: List Servers로 확인하세요. VS Code MCP 문서
무엇을 요청할 수 있나요?
이 공개 오리진 또는 URL이 Core Web Vitals를 통과하나요?
휴대폰, 데스크톱, 태블릿 및 전체 기기 결과를 비교합니다.
이 페이지가 사이트 평균보다 빠르거나 느립니까?
지난 25주 동안 LCP, INP, CLS는 어떻게 변했나요?
기술 검토를 위해 원시 CrUX 히스토그램과 백분위수를 보여줍니다.
CrUX 데이터 읽는 방법
CrUX는 매일 갱신되는 28일 이동 창을 보고합니다. 기록 데이터는 주 단위이며 월요일에 갱신됩니다. 핵심 값은 p75입니다. 관찰된 방문의 75%가 이 값 이하입니다. get_core_web_vitals는 지표 임계값을 대신 해석하며, 원시 기록 도구는 전체 히스토그램과 밀도 비율을 노출합니다.
데이터가 없다고 해서 사이트가 고장 난 것은 아닙니다. Google이 해당 오리진, URL 또는 기기 그룹에 대해 충분히 큰 공개 Chrome 사용자 샘플을 보유하지 않았음을 의미합니다. 태블릿과 개별 URL에는 데이터가 없는 경우가 많습니다.
액세스 권한 얻기
Google Cloud Console에서 프로젝트를 만들거나 선택합니다. CrUX에는 결제 계정이 필요하지 않습니다.
Chrome UX Report API를 사용 설정합니다.
API 및 서비스 → 사용자 인증 정보에서 API 키를 만듭니다.
키를 Chrome UX Report API로 제한하고
CRUX_API_KEY로 전달하세요.
이 키는 MCP 클라이언트 구성에 저장되고 API 요청 URL에 포함되어 전송되므로 비밀번호처럼 취급하세요.
구성
변수 | 필수 | 설명 |
| 예 | Chrome UX Report API가 활성화된 Google Cloud 키. |
| 아니요 | API 기본 URL 재정의. |
| 아니요 | 요청별 제한 시간. 기본값은 |
| 아니요 | 429, 5xx 및 네트워크 오류에 대한 재시도. 기본값은 |
데이터, 한도 및 백그라운드 작업
읽기 전용 공개 데이터셋. 이 서버는 사이트, Search Console, CrUX 레코드 또는 Google 순위를 변경할 수 없습니다.
할당량 인식 재시도. 백오프를 적용하여
429, 5xx 및 네트워크 오류를 재시도합니다. 프로젝트당 분당 150쿼리 할당량을 계획할 때 복합 비교를 염두에 두세요.백그라운드 모니터링 없음. 이 서버는 호출되는 동안에만 작동합니다. AI 앱이 예약 작업을 지원한다면 주기적인 성능 보고서를 만들 수 있습니다.
익명 텔레메트리. 설치 및 버전 데이터와 도구 이름을 전송하며, API 키, 조회된 URL, 결과, 인자 또는 프롬프트는 절대 전송하지 않습니다. 옵트아웃하려면
ASKADS_TELEMETRY=0을 설정하세요.
기술 문서
MCP 기능 카탈로그 — 각 도구에 대한 작업 중심 페이지.
지원
Available Tools
6 toolscompare_form_factorsPhone vs desktop vs tabletARead-onlyIdempotent
Compares real-user performance across device classes for an origin or URL: one aggregated all-devices record plus phone, desktop and tablet records (4 API requests = 4 quota units of the 150/min budget). Per device: p75 + rating per metric; traffic_share gives each device's fraction of page loads (from the unfiltered form_factors metric). Devices without enough data come back as {no_data: true} — expected for tablet almost always. Default metrics: the three Core Web Vitals. Provide exactly one of origin or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A specific page URL, e.g. https://example.com/pricing/. Mutually exclusive with `origin`. Pass the final post-redirect URL (the API does not follow redirects); fragments and query params are stripped by the dataset. Single pages have fewer samples and often have no data — fall back to `origin` on a no_data result. | |
| origin | No | Site origin — scheme + host only, e.g. https://example.com (no path, no trailing slash). Aggregates real-user data across ALL pages of the site. Mutually exclusive with `url`. http/https and www/non-www are distinct keys; use the canonical variant. | |
| metrics | No | Metric names to return; omit for all available metrics. Timings are integer milliseconds; cumulative_layout_shift is a string-encoded double. form_factors is only returned when form_factor is NOT set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses quota cost (4 API requests = 4 quota units of 150/min), the exact number and type of records returned (all-devices + phone/desktop/tablet), per-metric p75/rating, traffic_share semantics, and no_data behavior for insufficient data. This is rich behavioral context with no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, front-loaded with the core purpose, then packing quota, output structure, no_data semantics, and defaults without waste. Every sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining return values. It does so clearly: aggregated record plus per-device records, p75+rating per metric, traffic_share, and {no_data: true} for sparse devices. The behavior is fully specified for practical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with detailed parameter descriptions, so the baseline is 3. The description adds value by specifying the default metrics ('Default metrics: the three Core Web Vitals') and reinforcing the mutual exclusivity of origin/url. It does not need to repeat schema details, but the added default behavior justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Compares real-user performance across device classes for an origin or URL', with a specific verb ('compares') and resource ('device classes'). It distinguishes itself from siblings by focusing on phone/desktop/tablet breakdown, reinforced by the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on what the tool does and explicitly states 'Provide exactly one of `origin` or `url`', which is a key usage constraint. It also notes that tablet often returns no_data, guiding user expectations. However, it does not explicitly name alternative tools or state when to prefer this over them, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_origin_vs_urlOrigin vs specific pageARead-onlyIdempotent
Compares the site-wide origin record against one specific page (2 API requests): p75 + rating per metric for each, so you can tell whether a page is faster or slower than the site average. Either side can come back {no_data: true} (single pages often lack data; redirecting homepages can lack origin data while pages have it). Default metrics: the three Core Web Vitals. Both origin AND url are required here (unlike the other tools).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page URL to compare against the origin, e.g. https://example.com/pricing/. Required. | |
| origin | Yes | Site origin — scheme + host only, e.g. https://example.com. Required. | |
| metrics | No | Metric names to return; omit for all available metrics. Timings are integer milliseconds; cumulative_layout_shift is a string-encoded double. form_factors is only returned when form_factor is NOT set. | |
| form_factor | No | Device class filter. Omit for the aggregated record across all devices. tablet traffic is tiny and usually has no data. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds meaningful behavioral details beyond those: it makes 2 API requests, returns p75 + rating per metric, and discloses that either side can return no_data. This gives the agent practical expectations without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at three sentences, with each sentence delivering useful information (purpose, API-request count, no_data behavior, default metrics, required params). It is front-loaded with the core comparison purpose. The only slight issue is the potentially misleading 'default metrics' phrase, but structurally it is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining return value semantics. It does state 'p75 + rating per metric' and covers the no_data edge cases, which is good. However, it omits details about how metrics and form_factor interact, and the contradictory default-metrics comment creates ambiguity. For a moderately complex comparison tool, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds emphasis that both origin and url are required (unlike other tools), which is helpful. However, it also states 'Default metrics: the three Core Web Vitals,' which directly contradicts the schema's instruction that omitting metrics returns all available metrics. This inconsistency confuses the parameter semantics and reduces the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('compares') and clearly identifies the two resources ('site-wide origin record' vs 'one specific page'). It also distinguishes from sibling tools by noting that both origin and url are required here, unlike the other tools. This makes the tool's unique purpose immediately evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by explaining the comparison goal ('tell whether a page is faster or slower than the site average') and useful caveats around no_data. However, it does not explicitly name alternative tools or state when not to use this tool, though the 'unlike the other tools' hint partially addresses this. This is strong but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_core_web_vitalsCore Web Vitals assessmentARead-onlyIdempotent
One-call Core Web Vitals assessment for an origin or URL over the latest 28-day window. Per metric (LCP, INP, CLS + diagnostic FCP and TTFB): p75, rating (good | needs-improvement | poor, web.dev thresholds: LCP ≤2500ms/>4000ms, INP ≤200ms/>500ms, CLS ≤0.10/>0.25) and the good/needs_improvement/poor user-experience densities (~sum 1.0). passes_core_web_vitals is true when all three CWV rate good. Timings are ms; CLS is unitless. Returns {no_data: true} when the origin/URL has insufficient traffic in CrUX. Provide exactly one of origin or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A specific page URL, e.g. https://example.com/pricing/. Mutually exclusive with `origin`. Pass the final post-redirect URL (the API does not follow redirects); fragments and query params are stripped by the dataset. Single pages have fewer samples and often have no data — fall back to `origin` on a no_data result. | |
| origin | No | Site origin — scheme + host only, e.g. https://example.com (no path, no trailing slash). Aggregates real-user data across ALL pages of the site. Mutually exclusive with `url`. http/https and www/non-www are distinct keys; use the canonical variant. | |
| form_factor | No | Device class filter. Omit for the aggregated record across all devices. tablet traffic is tiny and usually has no data. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a safe read operation (readOnlyHint, idempotentHint, non-destructive), but the description goes far beyond by disclosing exact output format (p75, ratings, densities summing to ~1.0), thresholds, passes_core_web_vitals definition, failure mode ({no_data: true}), and data quirks (redirects, key normalization, sparse tablet/single-page data). This is rich behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: a one-line purpose, then metric/threshold details, then edge cases and input constraints. It is front-loaded and free of filler, achieving high information density without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description fully defines what the agent will receive: which metrics, thresholds, ratings, densities, pass criteria, and the no_data response. It also covers input selection and data caveats, making it self-sufficient for correct invocation despite the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with detailed field descriptions for url, origin, and form_factor, including mutual exclusivity and canonical key guidance. The description adds minimal parameter-specific value beyond reinforcing these points; extra details like timing units and CLS unitless concern the output, not the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific one-call Core Web Vitals assessment for an origin or URL over the latest 28-day window, clearly identifying the resource and scope. It further distinguishes itself from siblings by detailing the snapshot metrics (p75, ratings, densities) and pass/fail logic, which differs from trend or comparison tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear operational context: exactly one of origin or url, when to fall back from url to origin, and optional form_factor usage. It does not explicitly name alternative sibling tools or state when not to use this tool, but the 28-day snapshot framing implies its use case, and the origin/url guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cwv_trendCore Web Vitals trendARead-onlyIdempotent
Weekly p75 trend for an origin or URL from the CrUX History API (1 request). Per metric: points — array of {period_end, p75, rating}, one per week (each week is a 28-day rolling window ending on period_end; ineligible weeks are skipped), and delta — first vs last p75 with direction improved | regressed | stable (lower is always better). Default metrics: the three Core Web Vitals; weeks caps the history depth (1..40, default 25). History data updates on Mondays. Returns {no_data: true} when CrUX has no data. Provide exactly one of origin or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A specific page URL, e.g. https://example.com/pricing/. Mutually exclusive with `origin`. Pass the final post-redirect URL (the API does not follow redirects); fragments and query params are stripped by the dataset. Single pages have fewer samples and often have no data — fall back to `origin` on a no_data result. | |
| weeks | No | How many weekly periods of history to analyze (1..40; default 25). | |
| origin | No | Site origin — scheme + host only, e.g. https://example.com (no path, no trailing slash). Aggregates real-user data across ALL pages of the site. Mutually exclusive with `url`. http/https and www/non-www are distinct keys; use the canonical variant. | |
| metrics | No | Metrics to trend (only p75-bearing metrics); default: the three Core Web Vitals (largest_contentful_paint, interaction_to_next_paint, cumulative_layout_shift). | |
| form_factor | No | Device class filter. Omit for the aggregated record across all devices. tablet traffic is tiny and usually has no data. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool safe (readOnly, idempotent, non-destructive). The description adds substantial behavioral detail: exactly 1 API request, 28-day rolling window semantics, ineligible week skipping, Monday data updates, and a {no_data: true} response payload. This is high-value context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense but well-organized paragraph. It front-loads the core purpose, then packs essential details about response shape, defaults, data freshness, and constraints. No word is wasted; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 optional parameters and no output schema, the description fully compensates by specifying the response structure ('points' array, 'delta' with direction), the no-data payload, update cycle, and per-parameter guidance embedded in the schema. The tool is complex, and the description makes it self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter already fully described in the input schema (mutual exclusion, defaults, enum restrictions, formatting rules). The description mostly adds output interpretation ('lower is always better', 'ineligible weeks are skipped') rather than parameter-level meaning, so it does not raise above the high-coverage baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific, action-oriented statement: 'Weekly p75 trend for an origin or URL from the CrUX History API (1 request).' This clearly names the resource (CrUX History API), the scope (origin or URL), and the granularity (weekly p75), which distinguishes it from siblings like get_core_web_vitals or compare_form_factors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: 'Provide exactly one of origin or url', fallback guidance for no_data, a note on update cadence, and parameter caps. It does not explicitly name alternative sibling tools or state 'use this instead of X', so it misses the top tier for alternative differentiation, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_history_recordCrUX weekly timeseries (raw)ARead-onlyIdempotent
Returns the weekly CrUX timeseries for an origin or URL (raw API response, updated Mondays ~04:00 UTC): up to 40 collection periods, each a 28-day rolling window. Per metric: histogramTimeseries (bins with densities arrays), percentilesTimeseries.p75s and fractionTimeseries; all series align with record.collectionPeriods. Ineligible periods appear as null p75s and "NaN" densities — tolerate non-numeric entries. A no-data answer (HTTP 404) is returned as {no_data: true}. Prefer get_cwv_trend for a cleaned p75 trend.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A specific page URL, e.g. https://example.com/pricing/. Mutually exclusive with `origin`. Pass the final post-redirect URL (the API does not follow redirects); fragments and query params are stripped by the dataset. Single pages have fewer samples and often have no data — fall back to `origin` on a no_data result. | |
| origin | No | Site origin — scheme + host only, e.g. https://example.com (no path, no trailing slash). Aggregates real-user data across ALL pages of the site. Mutually exclusive with `url`. http/https and www/non-www are distinct keys; use the canonical variant. | |
| metrics | No | Metric names to return; omit for all available metrics. Timings are integer milliseconds; cumulative_layout_shift is a string-encoded double. form_factors is only returned when form_factor is NOT set. | |
| form_factor | No | Device class filter. Omit for the aggregated record across all devices. tablet traffic is tiny and usually has no data. | |
| collection_period_count | No | How many weekly collection periods to return (1..40; API default 25). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent behaviors. The description adds substantial context beyond annotations: update schedule (Mondays ~04:00 UTC), 28-day rolling windows, data structure (histogramTimeseries, percentilesTimeseries), null/NaN handling, and 404→{no_data:true}. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences front-load the purpose. Every clause adds value: raw format, cadence, period count, data shape, edge cases, and sibling pointer. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex raw-timeseries tool with 5 parameters and no output schema. The description covers output structure, series alignment, non-numeric values, no-data response, and alternative tool, making it complete enough for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline 3 applies. The description mentions 'origin or URL' and 'collection periods' but does not add parameter-specific semantics beyond the schema's already thorough descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Returns the weekly CrUX timeseries for an origin or URL'. It clearly identifies the raw API nature and distinguishes from siblings by explicitly recommending get_cwv_trend for a cleaned p75 trend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
An explicit alternative is provided: 'Prefer get_cwv_trend for a cleaned p75 trend', implying this tool for raw timeseries. It also gives practical usage caveats like no-data fallback to origin and update cadence, clarifying when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_recordLatest CrUX record (raw)ARead-onlyIdempotent
Returns the latest 28-day rolling CrUX record for an origin or URL (raw API response, updated daily ~04:00 UTC). Per metric: histogram (3 bins good/needs-improvement/poor with density), percentiles.p75, and for enum metrics fractions. Timings are integer ms; cumulative_layout_shift p75 is a string-encoded double (e.g. "0.05"). collectionPeriod always spans 28 days. urlNormalizationDetails appears if the URL was normalized (e.g. fragment stripped). A no-data answer (HTTP 404) is returned as {no_data: true} — not an error. Prefer get_core_web_vitals for a ready-made assessment; use this for full histograms/fractions.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A specific page URL, e.g. https://example.com/pricing/. Mutually exclusive with `origin`. Pass the final post-redirect URL (the API does not follow redirects); fragments and query params are stripped by the dataset. Single pages have fewer samples and often have no data — fall back to `origin` on a no_data result. | |
| origin | No | Site origin — scheme + host only, e.g. https://example.com (no path, no trailing slash). Aggregates real-user data across ALL pages of the site. Mutually exclusive with `url`. http/https and www/non-www are distinct keys; use the canonical variant. | |
| metrics | No | Metric names to return; omit for all available metrics. Timings are integer milliseconds; cumulative_layout_shift is a string-encoded double. form_factors is only returned when form_factor is NOT set. | |
| form_factor | No | Device class filter. Omit for the aggregated record across all devices. tablet traffic is tiny and usually has no data. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description goes well beyond that by detailing the response structure (histogram bins, percentiles, fractions), data types (integer ms, string-encoded double for CLS), invariants (collectionPeriod always 28 days), normalization behavior, and the surprising '404 as {no_data:true}' convention. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Seven sentences, each earning its place: purpose, response structure, type details, invariants, normalization, no-data handling, and alternative tool guidance. Front-loaded with the core purpose, no fluff or repetition, and logically organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must compensate, and it does thoroughly: it covers the response object's shape (histogram, percentiles, fractions), field types, edge cases (urlNormalizationDetails, no_data), and usage context (origin vs URL, fallback). This is more than sufficient for an agent to invoke the tool and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%—each parameter (url, origin, metrics, form_factor) already has detailed descriptions covering mutual exclusivity, redirect behavior, fragment stripping, and device-class caveats. The tool description itself adds no parameter-specific meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Returns the latest 28-day rolling CrUX record'), clarifies it is the raw API response, and explicitly contrasts it with get_core_web_vitals ('ready-made assessment' vs 'full histograms/fractions'), making it clearly distinct from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It directly names the alternative tool get_core_web_vitals and states when to prefer one over the other. It also adds practical guidance about no-data answers (404 as {no_data: true}) and the daily update cadence, helping agents decide when to use this tool and how to handle expected outcomes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
compare_form_factors - First observed
compare_origin_vs_url - First observed
get_core_web_vitals - First observed
get_cwv_trend - First observed
query_history_record - First observed
query_record
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: processed current assessment (get_core_web_vitals), device comparison (compare_form_factors), origin vs URL comparison (compare_origin_vs_url), historical trend (get_cwv_trend), and raw current/historical API queries (query_record, query_history_record). The processed/raw pairs are explicitly differentiated by use cases, leaving no ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case, with get_ for processed views, compare_ for comparisons, and query_ for raw API access. The naming clearly signals the action and domain, and while 'get_cwv_trend' uses an acronym, it remains consistent with the pattern.
Six tools is a well-scoped count for a specialized CrUX server. Each tool fills a distinct niche—current, historical, comparisons, and raw access—without redundancy or bloat. The count is neither too thin nor excessive for the domain.
The tool set covers the core CrUX workflows comprehensively: single-point assessment, trend analysis, cross-device comparison, origin vs page comparison, and raw data access for custom analysis. There are no obvious dead ends or missing operations for the stated purpose of accessing CrUX data.
Maintenance
Related MCP Connectors
Real-user Core Web Vitals for any website with enough traffic, from Google's Chrome UX Report…
Real User Monitoring for Core Web Vitals. Query LCP, INP, CLS field data from real visitors.
Query your SEO data in plain language: rankings, audits, backlinks, competitors and AI visibility.
Ask Google Search Console in plain language. Hosted, free, no Google Cloud project.
Related MCP Servers
- AlicenseAqualityCmaintenanceCore Web Vitals analysis powered by Lighthouse. Four tools: analyze a URL, compare two URLs, check against thresholds, or crawl an entire site. Works with Claude Code, Cursor, Windsurf, and any MCP-compatible AI tool.411 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables querying Google Search Console data via natural language, providing tools for site traffic analysis, page changes, and optimization opportunities.-
- AlicenseNot gradedqualityDmaintenanceEnables querying Google Search Console data, including search analytics with advanced filtering, quick wins detection, and rich dimensions, through natural language.5,508 npmMIT
- AlicenseAqualityBmaintenanceMCP server for the Chrome UX Report, providing real-user Core Web Vitals (LCP, INP, CLS) and historical trends for any origin or URL via natural language queries.32MIT