Skip to main content
Glama

a11y-toolkit: Rendered WCAG audit

a11y_audit_dom
Read-onlyIdempotent

Run deep WCAG 2.2 audits on rendered DOM via local Chromium, checking real contrast, target sizes, and focus indicators. Use for JavaScript-heavy pages where static checks miss issues.

Instructions

Deep RENDERED WCAG audit via local Playwright/Chromium: real computed text contrast against effective backgrounds with alpha compositing (1.4.3), minimum target size 24×24 (2.5.8, new in WCAG 2.2), visible focus indicator heuristic (2.4.7), plus rendered versions of the static checks (alt, accessible names, labels, headings, lang/title, tabindex, aria-hidden, captions, tables). Findings include remediation. Requires playwright: pip install playwright && playwright install chromium. — Use instead of a11y_audit_url on JS-heavy pages; needs local Playwright.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesPage URL to load in Chromium (http/https or file:// for local fixtures)
langNoOutput language for findings and remediation (default en)
timeoutNopage load timeout seconds (45 default)
auth_stateNoPath to a Playwright storage_state JSON (exported session) to audit behind login — local file, never uploaded

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv4.0.0
    • addedInput schema / browser
      Added value: +{
      +  "description": "Browser engine (auto = detect the first available)",
      +  "enum": [
      +    "auto",
      +    "chromium",
      +    "firefox",
      +    "webkit",
      +    "chrome",
      +    "msedge"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / auth_state
      Added value: +{
      +  "description": "Path to a Playwright storage_state JSON (exported session) to audit behind login — local file, never uploaded",
      +  "type": "string"
      +}
    • addedInput schema / properties / lang / description
      Added value: +"Output language for findings and remediation (default en)"
    • addedInput schema / properties / url / description
      Added value: +"Page URL to load in Chromium (http/https or file:// for local fixtures)"
  2. Addedv3.3.0

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds meaningful behavioral context beyond that: it performs real rendered checks, computes against effective backgrounds with alpha compositing, includes remediation in findings, and depends on a local Playwright install. This is valuable context that the annotations do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core purpose. The long list of checks and the installation command are useful, but the second sentence packs many details into a single unwieldy clause. Still, there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, scope, alternatives, prerequisites, and result hints ('Findings include remediation'). However, there is no output schema and the description does not state the overall return format, so an agent is left inferring how findings are structured. For a complex audit tool, a bit more return-value context would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters including url, lang, timeout, and auth_state. The description does not add material parameter-level meaning beyond reinforcing that the audit is rendered/browser-based. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: a deep rendered WCAG audit of a page via local Playwright/Chromium. It enumerates concrete checks (contrast, target size, focus indicator) and clearly separates this tool from a11y_audit_url by naming that sibling directly. An agent can determine what this tool does without inspecting its schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly routes usage: 'Use instead of a11y_audit_url on JS-heavy pages.' It also states the prerequisite that local Playwright/Chromium must be installed, with an installation command. This gives clear when-to-use and alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.