# PageVitals — how to use (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.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_page_vitals?ms=1787291340000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `page_vitals_add_configured_pages`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/page_vitals`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/page_vitals/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/page_vitals/add/configured/pages` — 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
  - body: { pages: object[], website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/create/budget` — 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 
  - body: { value: number, device: string, metric: string, operator: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/create/multistep/test` — 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
  - body: { alias: string, device: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/create/website` — 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.
  - body: { domain: string, display_name?: string }
- `POST https://api.mcp.ai/api/page_vitals/delete/budget` — 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.
  - body: { budget_id: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/delete/configured/page` — 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
  - body: { page_id: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/delete/multistep/test` — Permanently delete one PageVitals multistep test definition. This is irreversible; use only when the user explicitly identifies the exact website ID and test ID.
  - body: { test_id: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/delete/website` — 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.
  - body: { website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/get/multistep/test` — Get one multistep test definition, including its configured steps.
  - body: { test_id: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/get/page/metrics` — Get the latest Lighthouse and Chrome UX metrics for one configured page and device.
  - body: { device: string, page_id: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/get/page/opportunities` — List Lighthouse improvement opportunities for a page/device, or return the full variable-shape details for one opportunity ID.
  - body: { device: string, page_id: string, website_id: string, opportunity_id?: string }
- `POST https://api.mcp.ai/api/page_vitals/get/page/timeline` — 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.
  - body: { device: string, page_id: string, date_range?: string, website_id: string, timeline_type: string }
- `POST https://api.mcp.ai/api/page_vitals/get/test` — 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.
  - body: { test_id: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/get/test/report` — Get one specialized synthetic-test report: keyed Lighthouse opportunities, the request waterfall, or grouped HTML validation findings. Validation always omits the embedded raw HTML.
  - body: { test_id: string, website_id: string, report_type: string }
- `POST https://api.mcp.ai/api/page_vitals/get/test/series` — Get one synthetic test series and its individual tests, statuses, page IDs, device variants, and failure messages.
  - body: { series_id: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/list/budgets` — List performance budgets, current status, notification settings, and affected pages for a website.
  - body: { website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/list/configured/pages` — List the raw pages configured for PageVitals monitoring on a website.
  - body: { website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/list/multistep/runs` — List historical runs for one multistep test, including status, duration, interaction, layout-shift, CPU, transfer-size, and blocking-time metrics.
  - body: { test_id: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/list/multistep/tests` — 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.
  - body: { website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/list/page/metrics` — List every configured page/device combination for a website with recent timeline and latest performance metrics.
  - body: { website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/list/test/series` — List recent synthetic test series for a website, including status and failure counts.
  - body: { website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/list/website/opportunities` — List Lighthouse improvement opportunities aggregated across a website and the affected pages.
  - body: { website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/list/websites` — List websites visible to the connected PageVitals API key. Use the returned website IDs with all website-scoped tools.
- `POST https://api.mcp.ai/api/page_vitals/run/multistep/tests` — 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
  - body: { target: string, test_id?: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/run/test/series` — 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
  - body: { pages?: object[], initiator?: string, website_id: string, description?: string }
- `POST https://api.mcp.ai/api/page_vitals/update/budget` — 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
  - body: { value: integer|number, device: string, metric: string, operator: string, budget_id: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/update/configured/page` — 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
  - body: { url?: string, alias?: string, page_id: string, website_id: string }
- `POST https://api.mcp.ai/api/page_vitals/update/multistep/test` — 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
  - body: { alias: string, device: string, test_id: string, website_id: string }

## Example prompts
- "What can I do in PageVitals?"
- "Show me a summary of my PageVitals account"

## More
- Page: https://mcp.ai/page_vitals
- Agent spec (llms.txt): https://mcp.ai/page_vitals/llms.txt
- Postman collection: https://mcp.ai/page_vitals/postman.json
