Skip to main content
Glama
GiorgiKemo

mcp-seo-audit

by GiorgiKemo

get_core_web_vitals

Read-onlyIdempotent

Fetch Core Web Vitals (LCP, INP, CLS) from Chrome UX Report for a URL or origin to assess real-user page performance.

Instructions

Get Core Web Vitals (LCP, INP, CLS) from the Chrome UX Report (CrUX) API.
Free API, no OAuth needed — just a CRUX_API_KEY env variable.

Args:
    url_or_origin: Full URL or origin (e.g. "https://example.com" for origin-level)
    form_factor: PHONE, DESKTOP, or TABLET (default: PHONE)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
form_factorNoPHONE
url_or_originYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description adds genuinely useful operational context beyond that: it is a free API, needs no OAuth, and requires a CRUX_API_KEY environment variable. It does not mention data-availability limits or rate behavior, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose in the first sentence, followed by a useful auth note and a compact Args block. Slightly rigid with the Args formatting, but every line carries information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description covers purpose, auth prerequisites, and both parameters. The one meaningful omission is that CrUX can return no data for low-traffic URLs/origins, which an agent calling this cold should know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter burden, and it largely does: it explains url_or_origin accepts a full URL or an origin and gives a concrete origin example, and it enumerates the form_factor values PHONE, DESKTOP, TABLET plus the default. It omits how origin-level versus URL-level results differ in granularity, but the semantics are clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (get Core Web Vitals), names the underlying data source (Chrome UX Report / CrUX API), and lists the exact metrics returned (LCP, INP, CLS). This is enough to distinguish it from lab-based siblings like run_lighthouse_audit or get_pagespeed_insights, which do not fetch CrUX field data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance. It never tells the agent to prefer this for real-user field data over the lab-based Lighthouse/PageSpeed siblings, nor when this tool is inappropriate (e.g. origins without enough CrUX traffic). The reader must infer the choice from the data-source name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.