WCAG Accessibility Scanner
run_accessibility_scanScan any URL for WCAG 2.1 accessibility violations using axe-core (and optionally Pa11y). Get structured violations grouped by severity with fix hints.
Instructions
Scan a URL for WCAG 2.1 Level A + AA accessibility violations using Playwright + axe-core, with optional Pa11y (HTMLCS) as a second engine.
Returns structured violations grouped by severity with WCAG criteria and fix hints. Requires the target URL to be running and reachable.
ENGINES:
Default: ["axe"]. Pass {"engines": ["axe", "htmlcs"]} to also run Pa11y/HTMLCS.
Crossover findings are deduped server-side: an axe violation also flagged by HTMLCS is
marked with alsoFlaggedBy: ["htmlcs"]. Adding HTMLCS typically grows the result by
~10-20% (mostly standalone HTMLCS findings) and adds ~2-4s wall-clock per scan.
NEXT STEP: The result includes a "scanId" field. Pass it directly to generate_fix_plan: generate_fix_plan({ scanId: "" }) Do NOT pass the full scan result object - use the scanId instead.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL to scan (e.g. http://localhost:3000/checkout) | |
| tags | No | axe-core rule tags to include (default: wcag2a, wcag21a, wcag2aa, wcag21aa) | |
| compact | No | Return compact format (default: true). Set to false for the full verbose format with description, helpUrl, wcag tags, failureSummary, and full wcagCriteria fields. | |
| engines | No | Engines to run (default: ["axe"]). Add "htmlcs" to also run Pa11y/HTMLCS for crossover validation. Configurable via .navable.json "engines". | |
| exclude | No | CSS selectors to exclude from scan | |
| include | No | CSS selectors to limit scan scope |