Gives an AI agent the same view and the same controls the person has: it can open a URL on a given device, take a screenshot and actually SEE it, read the markup and computed styles of any element, and record what happens. Speaks MCP over stdio and forwards everything to the extension's control API.
Custom AI View MCP server provides 10 well-named, action-oriented tools with comprehensive descriptions (avg 180 chars, well within 10-1024 range). All tools have explicit input schemas with typed parameters and descriptions. Tool names follow verb_noun convention (custom_ai_view_*). Descriptions clearly state WHAT each tool does and WHEN to use it. However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. Error handling guidance is absent; tools do not indicate retryability or recovery paths. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Parameter descriptions are solid but lack format constraints (e.g., no regex for selectors, no min/max for scale). Missing idempotency guarantees for stateful operations like interact and record.
Run a Lighthouse audit on the page and return the report. Audits the page as it is on screen, or a fresh render if you pass a URL.
List every device in the catalogue with its viewport size, pixel ratio and safe areas.
Read the markup and computed styles of an element. Pass a CSS selector, or omit it to read the element the user currently has selected.
Click, type, scroll, or drag on the page. The page is live — you are driving the page that is on screen, with its scroll position, its form state, and any live edits.
Open a URL in the Custom AI View browser, optionally switching device and orientation. Accepts a full URL, a bare host, or just a port number for a local dev server.
Ask the page a question: run JavaScript in the page's context and return the result. The page is live — you are asking the page that is on screen, with its scroll position, its form state, and any live edits.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination) for tools like custom_ai_view_devices, custom_ai_view_screenshot, custom_ai_view_audit. This breaks tool chaining and forces agents to guess field names.
No error handling guidance. Tools do not indicate what errors are retryable, user-fixable, or fatal. No recovery hints (e.g., 'If selector not found, try custom_ai_view_inspect first'). Agents cannot self-correct on failure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked READ_ONLY or WRITE in metadata but not in schema. Agents cannot determine safety/idempotency from tool definitions alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Record what happens on the page and return a GIF or MP4. Pass a duration in seconds, or omit it to record until you call stop.
Take a screenshot and return the image, so you can see the page exactly as it renders on the device. Modes: frame (the whole device), screen (inside the bezels), page (just the viewport), full (the entire scrollable page), element (one element, ringed). By default this photographs the OPEN WINDOW — the user's own session, scroll position and any live edits. Passing url, device, orientation, or mode "full" cannot come from that window, so those render a fresh copy in a throwaway browser profile: signed out, at the top of the page. The answer says which one you got.
What the Custom AI View browser is showing right now: current URL, device, viewport size, orientation, whether it is proxied, and the element the user currently has selected.
Stop recording and return the GIF or MP4.
Parameter constraints missing. 'scale' (1-4) lacks min/max. 'selector' (CSS) lacks format hint. 'action' enum is present but 'key' parameter (for type action) lacks description of valid key names (Enter, Escape, ArrowDown, etc.).
Idempotency not guaranteed for stateful operations. custom_ai_view_interact (click, type, drag) and custom_ai_view_record lack idempotency guarantees. Agents retrying on ambiguous failures risk duplicate side effects (double clicks, duplicate text).