# PageVitals — MCP server on mcp.ai > Connect your PageVitals account and use 28 tools for analytics straight from your AI agent. Connect with your own API key. PageVitals provides website performance monitoring, synthetic testing, real-user monitoring reports, performance budgets, and optimization insights. By: mcp.ai · official Page: https://mcp.ai/page_vitals ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_page_vitals?ms=1787291400000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/page_vitals/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/page_vitals/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/page_vitals/skill.md Postman collection (v2.1): https://mcp.ai/page_vitals/postman.json ## Tools - page_vitals_add_configured_pages(pages: object[], website_id: string) — Add one or more explicitly supplied pages to PageVitals monitoring for a website. This persistent bulk operation can consume monitored-page quota and cause future synthetic tests, so call it only when - page_vitals_create_budget(value: number, device: string, metric: string, operator: string, website_id: string) — Create a persistent PageVitals performance budget for a website. This changes monitoring and may change owner alerting behavior, so call only when the user explicitly requests the budget and supplies - page_vitals_create_multistep_test(alias: string, device: string, website_id: string) — Create an empty PageVitals multistep test definition with an explicit name and device profile. This only saves persistent configuration: it does not run the test, trigger any synthetic checks, or cons - page_vitals_create_website(domain: string, display_name?: string) — Add a domain to the PageVitals account and begin managing it. This may consume website quota and start monitoring, so call only when the user explicitly asks to add the domain. - page_vitals_delete_budget(budget_id: string, website_id: string) — Delete one PageVitals performance budget and stop enforcing its threshold. This is a destructive alerting mutation; use only when the user explicitly selects the exact budget ID for deletion. - page_vitals_delete_configured_page(page_id: string, website_id: string) — Permanently delete one PageVitals configured page and all of its test results, including historical results. This is irreversible; use only for an explicit request naming the exact website ID and conf - page_vitals_delete_multistep_test(test_id: string, website_id: string) — Permanently delete one PageVitals multistep test definition. This is irreversible; use only when the user explicitly identifies the exact website ID and test ID. - page_vitals_delete_website(website_id: string) — Permanently delete one PageVitals website and all of its tests, metrics, analytics, and configuration. This is irreversible; use only for an explicit request naming the exact website ID. - page_vitals_get_multistep_test(test_id: string, website_id: string) — Get one multistep test definition, including its configured steps. - page_vitals_get_page_metrics(device: string, page_id: string, website_id: string) — Get the latest Lighthouse and Chrome UX metrics for one configured page and device. - page_vitals_get_page_opportunities(device: string, page_id: string, website_id: string, opportunity_id?: string) — List Lighthouse improvement opportunities for a page/device, or return the full variable-shape details for one opportunity ID. - page_vitals_get_page_timeline(device: string, page_id: string, date_range?: string, website_id: string, timeline_type: string) — Get one historical timeline for a page/device: combined loading metrics, CrUX, network bytes, CPU time, or Google Search performance. Google Search requires that integration on the website. - page_vitals_get_test(test_id: string, website_id: string) — Get the detailed Lighthouse, timing, resource, budget, and validation summary for one synthetic test. Provider values, nulls, metric scales, and JSON-looking strings are returned unchanged. - page_vitals_get_test_report(test_id: string, website_id: string, report_type: string) — Get one specialized synthetic-test report: keyed Lighthouse opportunities, the request waterfall, or grouped HTML validation findings. Validation always omits the embedded raw HTML. - page_vitals_get_test_series(series_id: string, website_id: string) — Get one synthetic test series and its individual tests, statuses, page IDs, device variants, and failure messages. - page_vitals_list_budgets(website_id: string) — List performance budgets, current status, notification settings, and affected pages for a website. - page_vitals_list_configured_pages(website_id: string) — List the raw pages configured for PageVitals monitoring on a website. - page_vitals_list_multistep_runs(test_id: string, website_id: string) — List historical runs for one multistep test, including status, duration, interaction, layout-shift, CPU, transfer-size, and blocking-time metrics. - page_vitals_list_multistep_tests(website_id: string) — List multistep tests configured for a website with recent metrics, state, and success rates. A website with no configured multistep tests returns an empty tests list. - page_vitals_list_page_metrics(website_id: string) — List every configured page/device combination for a website with recent timeline and latest performance metrics. - page_vitals_list_test_series(website_id: string) — List recent synthetic test series for a website, including status and failure counts. - page_vitals_list_website_opportunities(website_id: string) — List Lighthouse improvement opportunities aggregated across a website and the affected pages. - page_vitals_list_websites() — List websites visible to the connected PageVitals API key. Use the returned website IDs with all website-scoped tools. - page_vitals_run_multistep_tests(target: string, test_id?: string, website_id: string) — Trigger exactly one named multistep test or intentionally fan out to every multistep test configured for a website. Every triggered run consumes PageVitals test quota and may incur cost. Choosing targ - page_vitals_run_test_series(pages?: object[], initiator?: string, website_id: string, description?: string) — Trigger synthetic tests for selected page/device variants, or for every configured test when pages is omitted. This action consumes PageVitals test quota and may incur cost; call it only when the user - page_vitals_update_budget(value: integer|number, device: string, metric: string, operator: string, budget_id: string, website_id: string) — Replace a PageVitals performance budget's complete metric threshold and device scope. This may change monitoring alerts or notifications. Read the current budget first, use its exact website and budge - page_vitals_update_configured_page(url?: string, alias?: string, page_id: string, website_id: string) — Update a configured PageVitals page's URL, display alias, or both. This changes persistent monitoring configuration; use the exact page ID from List Configured Pages and provide at least one new value - page_vitals_update_multistep_test(alias: string, device: string, test_id: string, website_id: string) — Update a multistep test's alias and device. Both fields are required because PageVitals PUT replacement and partial-update semantics were not safely live-tested; read the current test first when prese ## Example prompts - "What can I do in PageVitals?" - "Show me a summary of my PageVitals account" ## Links Docs: https://mcp.ai/docs/mcps/page_vitals Website: https://mcp.ai/mcps/page_vitals