Skip to content

Analyze — Active Analysis

The analyze tool triggers active analysis — DOM queries, accessibility audits, security scans, link health checks, and visual annotations. Unlike observe (which reads passive buffers), analyze dispatches work to the browser extension and returns results.

Need one runnable call + response shape + failure fix for every mode? See Analyze Executable Examples.

analyze({what: "dom", selector: ".error-banner"}) // Query live DOM
analyze({what: "accessibility", scope: "#main", tags: ["wcag2a"]}) // WCAG audit
analyze({what: "security_audit", checks: ["credentials", "pii"]}) // Security scan
analyze({what: "link_health", domain: "example.com"}) // Check all links
analyze({what: "performance"}) // Performance snapshot
analyze({what: "error_clusters"}) // Group similar errors
analyze({what: "page_summary"}) // Page structure
analyze({what: "annotations", annot_session: "review"}) // Draw mode results

These parameters work across multiple modes:

ParameterTypeDescription
whatstring (required)Which mode to use (see sections below)
syncbooleanWait for result (default: true)
backgroundbooleanReturn immediately with a correlation_id
telemetry_modestringTelemetry metadata: off, auto, or full
tab_idnumberTarget a specific tab (omit for active tab)

Query the live DOM using CSS selectors. Returns element details: tag, attributes, text content, visibility, and children.

analyze({what: "dom", selector: ".error-banner"})
analyze({what: "dom", selector: "nav a", tab_id: 123})
analyze({what: "dom", selector: "[role='alert']", frame: "#app-iframe"})
ParameterTypeDescription
selectorstringCSS selector to query
framestring/numberTarget iframe: CSS selector, 0-based index, or "all"
tab_idnumberTarget specific tab (omit for active tab)

Performance snapshots with before/after comparison and regression detection.

analyze({what: "performance"})

WCAG accessibility audit using axe-core. Returns violations, passes, and incomplete checks.

analyze({what: "accessibility"})
analyze({what: "accessibility", scope: "#main-content", tags: ["wcag2a"]})
ParameterTypeDescription
scopestringCSS selector to limit the audit scope
tagsarrayWCAG tags to test (e.g., wcag2a, wcag2aa, best-practice)
force_refreshbooleanBypass cached results
framestring/numberTarget iframe

Groups similar errors together by message pattern. Useful for identifying the most common error categories.

analyze({what: "error_clusters"})

Recent navigation history for the current tab.

analyze({what: "history"})

Analyze user navigation flow patterns from captured activity (common entry routes, transitions, and repeated paths).

analyze({what: "navigation_patterns"})

Scans captured data for security issues: leaked credentials, PII exposure, insecure headers, cookie misconfiguration, transport security, and auth problems.

analyze({what: "security_audit"})
analyze({what: "security_audit", checks: ["credentials", "pii"], severity_min: "high"})
ParameterTypeDescription
checksarrayWhich checks to run: credentials, pii, headers, cookies, transport, auth
severity_minstringMinimum severity: critical, high, medium, low, info

Analyzes third-party scripts and external dependencies loaded by the page.

analyze({what: "third_party_audit"})
analyze({what: "third_party_audit", first_party_origins: ["https://myapp.com"]})
ParameterTypeDescription
first_party_originsarrayOrigins to consider first-party
include_staticbooleanInclude origins that only serve static assets
custom_listsobjectCustom allowed/blocked/internal domain lists

Browser-based link checker. Navigates links in the extension to detect broken links, CORS issues, and redirect chains. Runs concurrently with configurable worker count.

analyze({what: "link_health", domain: "example.com"})
analyze({what: "link_health", domain: "example.com", max_workers: 5, timeout_ms: 10000})
ParameterTypeDescription
domainstringDomain to check links for
max_workersnumberMax concurrent workers
timeout_msnumberTimeout per link check

Server-side URL validation with SSRF-safe transport. Validates specific URLs from the MCP server without needing the browser extension.

analyze({what: "link_validation", urls: ["https://example.com/page1", "https://example.com/page2"]})
ParameterTypeDescription
urlsarrayURLs to validate

Page structure summary — headings, landmarks, forms, links, and metadata.

analyze({what: "page_summary"})
analyze({what: "page_summary", timeout_ms: 10000, world: "main"})
ParameterTypeDescription
timeout_msnumberTimeout for page analysis
worldstringExecution world: auto, main, isolated
tab_idnumberTarget specific tab

Infer API schemas from captured traffic and validate consistency. Detects response shape changes, missing fields, and type mismatches.

analyze({what: "api_validation", operation: "analyze"})
analyze({what: "api_validation", operation: "report"})
analyze({what: "api_validation", operation: "clear"})
ParameterTypeDescription
operationstringanalyze (infer schemas), report (show results), clear (reset)
ignore_endpointsarrayURL substrings to exclude from analysis

Retrieve annotations from the last draw mode session. Users draw rectangles and type feedback, then press ESC. This mode returns all annotations.

analyze({what: "annotations"})
analyze({what: "annotations", session: "checkout-review"})
analyze({what: "annotations", session: "checkout-review", wait: true, timeout_ms: 300000})
ParameterTypeDescription
sessionstringNamed session for multi-page annotation review
waitbooleanBlock until user finishes drawing (default 5 min timeout)
timeout_msnumberMax wait time when wait: true (max 600000ms / 10 min)

Full computed styles and DOM detail for a specific annotation. Use after retrieving annotations to get detailed style information for a specific element.

analyze({what: "annotation_detail", correlation_id: "ann-abc123"})
ParameterTypeDescription
correlation_idstringAnnotation correlation ID from annotations results

List all past draw mode sessions with metadata.

analyze({what: "draw_history"})

Get the full data for a specific draw session.

analyze({what: "draw_session", file: "session-2026-02-17.json"})
ParameterTypeDescription
filestringSession filename from draw_history results

Get computed CSS styles for a specific element. Useful for debugging visual issues.

analyze({what: "computed_styles", selector: ".error-banner"})
ParameterTypeDescription
selectorstringCSS selector for the target element

Analyze form elements on the page — field types, validation state, labels, required fields.

analyze({what: "forms"})
analyze({what: "forms", selector: "#checkout-form"})
ParameterTypeDescription
selectorstringCSS selector to scope the analysis

Capture current form values, touched/dirty state, and validation metadata for debugging complex form behavior.

analyze({what: "form_state"})
analyze({what: "form_state", selector: "#checkout-form"})
ParameterTypeDescription
selectorstringCSS selector to scope form-state extraction

Validate form configuration — checks for missing labels, incorrect input types, accessibility issues in form structure.

analyze({what: "form_validation"})
analyze({what: "form_validation", summary: true})
ParameterTypeDescription
summarybooleanReturn compact summary

Extract structured data-table snapshots (headers, rows, and cell mappings) for dashboard and reporting UIs.

analyze({what: "data_table"})
analyze({what: "data_table", selector: "#orders", max_rows: 100, max_cols: 20})
ParameterTypeDescription
selectorstringCSS selector for a specific table
max_rowsnumberMaximum rows to return
max_colsnumberMaximum columns to return

Save a named visual baseline snapshot of the current page. Used as the reference for later visual_diff comparisons.

analyze({what: "visual_baseline", name: "homepage-v1"})
ParameterTypeDescription
namestring (required)Name for this baseline

Compare the current page state against a saved visual baseline. Returns pixel differences with configurable threshold.

analyze({what: "visual_diff", baseline: "homepage-v1"})
analyze({what: "visual_diff", baseline: "homepage-v1", threshold: 50})
ParameterTypeDefaultDescription
baselinestring (required)Baseline name to compare against
thresholdnumber30Pixel diff threshold 0-255

List all saved visual baselines.

analyze({what: "visual_baselines"})

Analyze navigation structure — menu items, links, breadcrumbs, and routing patterns.

analyze({what: "navigation"})

Deep structural analysis of the page — heading hierarchy, landmark regions, content sections, semantic HTML usage.

analyze({what: "page_structure"})

Run a multi-category audit in a single call. Combines performance, accessibility, security, and best practices checks.

analyze({what: "audit"})
analyze({what: "audit", categories: ["accessibility", "security"], summary: true})
ParameterTypeDescription
categoriesarrayWhich audits to run: performance, accessibility, security, best_practices
summarybooleanReturn compact summary

Detect feature flags and feature gates on the page — A/B test variants, feature toggles, and experiment assignments visible in the DOM or JavaScript globals.

analyze({what: "feature_gates"})