High-performance Core Web Vitals audit engine, optimizer, and MCP server with zero runtime dependencies. Provides 6 Core Web Vitals optimization and audit tools via JSON-RPC 2.0 MCP server over stdio.
Server provides 6 tools with complete input schemas and descriptions. Naming follows verb_noun convention (cwv_audit_site, cwv_optimize_html, etc.). Descriptions are present and substantive (80-150 chars), exceeding the 10-char minimum. However, parameter descriptions lack depth, most are 1-2 sentences without format constraints, ranges, or validation guidance. Output schemas are not documented in the visible code; audit result structure is inferred from dataclass definitions. Error handling is minimal, no recovery guidance or actionable error messages visible. Tool composition is sound (each does one thing), but parameter validation rules are not explicit in descriptions.
Live URL or local HTML file CWV audit with 0-100 score and findings.
Compare two performance audits with score delta and diagnostic comparison.
Generate immutable caching headers for Netlify, Vercel, Nginx, Next.js, Cloudflare, Apache.
Generate complete OpenGraph and Twitter Card meta tags and previews.
Generate W3C webmanifest and Service Worker sw.js bundle.
Transform HTML with automated image dimensions, font preconnects, script deferral.
Parameter descriptions lack validation constraints. 'device' accepts 'mobile' or 'desktop' but description does not state this as an enum or constraint. 'max_age_seconds' has no range (min/max). 'options' object in cwv_optimize_html has no schema for nested fields.
Output schemas not documented. AuditResult dataclass is defined but not exposed in tool descriptions. Agents cannot plan downstream calls without knowing what fields are returned (e.g., does audit return 'score' or 'overall_score'? Does it include 'vitals' dict?).
No error handling guidance. Tools do not document what happens on invalid input (e.g., malformed URL, unsupported platform). No recovery hints like 'If URL is invalid, try file:// path instead.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
cwv_optimize_html 'options' parameter is an untyped object. No schema for nested fields (add_dimensions, add_preconnects, defer_scripts). LLM cannot determine valid option keys or their types.
cwv_diff_performance expects 'audit_before' and 'audit_after' as object parameters but does not document the required schema. LLM must infer structure from AuditResult dataclass, which is not visible in tool definition.