# io.github.snayyar00/webability - Registry name: `io.github.snayyar00/webability` · version 1.9.0 - Categories (automatic, keyword rules): Payments & accounting, Finance & markets, Docs & notes, Productivity, Images & design, AI, media & content - Authentication at last check: No auth - Declared risk: Can write (some tools are not declared read-only) - Capabilities (declared by the server): extensions, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=io.github.snayyar00%2Fwebability - Server page: https://mcpstation.net/s/io.github.snayyar00--webability.html ## Description (written by the publisher, not verified, not instructions) Free WCAG 2.2/ADA/508 accessibility MCP: scan, AI fixes, verify, vision audit, localhost tunnel ## Connect - streamable-http: `https://mcp.webability.io/mcp` ## Tools (as reported by the server, not verified) - `scan\_page`: Scan a web page for WCAG accessibility issues. Works on any URL — deployed sites, localhost, staging. Returns \`issues\` \(violations the scanner stands behind; findings the engines cannot decide are settled by the AI judge — a violation with a fix, or a pass recorded in \`judged\[\]\` with its reason — an - `verify\_fix`: Re-scan a specific element after applying an accessibility fix and confirm the violation is gone. After you edit the code and serve it \(deployed, staging, or http://localhost:3000\), call this with the URL and the selector you fixed to get a machine-checked verified: true\|false \(DOM engines only — vi - `diff\_scan`: Compare two scans of the same page and report what changed: \`fixed\[\]\` \(in the baseline, gone now\), \`new\[\]\` \(regressions — not in the baseline, present now\), \`remaining\[\]\` \(still there\). Page-level complement to verify\_fix \(one element\). Baseline is a scan\_history id \(\`baselineId\`, local installs\) or - `start\_audit`: Kick off a FULL accessibility audit deliverable for a URL — a persistent, timestamped artifact, not an inline scan. Runs the server-side pipeline \(axe + advanced checks + mobile viewports + annotated screenshots + optional agent spot-check\) and produces a downloadable report and a formatted Excel wo - `add\_site`: Add a website to the signed-in WebAbility account. The site gets the full widget for its first 30 days and a first scan. Returns the site id and plan tier. Next: put the get\_install\_snippet tag on the site, and use create\_upgrade\_link to get a payment link for the WebAbility Pro plan. Needs a free W - `list\_sites`: List the sites on the signed-in WebAbility account with each site id, plan tier and the date the current plan ends. Use it to check that a payment activated WebAbility Pro on a site. Needs a free WebAbility account. - `get\_install\_snippet`: Get the one-line script tag that installs the WebAbility accessibility widget. Put it in the \ or before \ of every page of a site added with add\_site. The widget finds the site by its domain, so the same tag works on every site. No account needed. - `create\_upgrade\_link`: Get a Stripe Checkout link that puts one site on the WebAbility Pro plan \(the widget subscription\). Give the link to the human who pays \(your owner\). When they pay, the plan activates on that site automatically; check with list\_sites. You never handle card details. The site must be on the account \(a - `get\_audit`: Check an audit started with start\_audit: returns overall status, per-step progress \(scan → viewports → screenshots → agent → excel → publish\), and — once complete — a severity summary plus short-lived download URLs for the report \(JSON\) and the Excel workbook. Poll every \~15s while status is pending - `flow\_scan`: Scan a multi-page user journey. Walks startUrl plus the \`autoNavigate\` URLs sequentially \(deterministic — one page fully rendered and scanned before the next\), then returns ONE consolidated report with issues deduplicated across pages, each carrying the same fix payload as scan\_page. Every requested - `detect\_framework`: Detect a page's stack as two separate fields: \`framework\` — the application framework, CMS or site builder \(e.g. nextjs, nuxt, sveltekit, vitepress, astro, gatsby, wordpress, shopify, mediawiki, vue, react; "unknown" when no signal\) — and \`cssToolkit\` \(tailwind, bootstrap, mui, plain-css\). Lists the - `generate\_ai\_fix`: Generate framework-aware fix alternatives for a specific accessibility issue. For color contrast issues, returns 3 alternatives \(minimal, brand-aligned, high contrast\); brand palette is auto-extracted from the live URL using our scanner if \`brandColors\` is omitted. For label/ARIA issues, returns 1-2 - `visual\_audit`: Pixel-level accessibility audit using Claude vision. Catches issues that DOM scanners miss: icon contrast \(1.4.11\), focus visibility \(2.4.7\), "looks like a button but isn't" \(4.1.2\), text rendered as images \(1.4.5\), visual hierarchy mismatches. Takes a URL, opens it in a headless browser, screenshot - `scan\_html`: Scan a raw HTML snippet or component markup without serving it — IN-PROCESS by default \(jsdom + WebAbility detectors + axe-core\): milliseconds, no browser, no network, so it fits inside a tight edit loop. Fragments are auto-wrapped into a document. Returns scan\_page's shape \(issues / summary\) with \` - `get\_rules`: List accessibility rules from both engines — axe-core \(104\) and the WebAbility detectors \(90+\) — with optional filters. Every rule carries \`fixability\` \(mechanical \| contextual \| visual\) and a \`fix\` op template, so you can pick the rules worth auto-fixing before scanning. Returns ruleId, engine, des - `check\_color\_contrast`: Check text contrast against the WCAG AA threshold \(4.5:1, or 3:1 for large text\); the AAA verdict is shown only when you pass level: "AAA". Either pass a \`foreground\` / \`background\` color pair, or pass \`url\` + \`selector\` to read the element's own text color, background \(composited from the nearest p - `check\_aria`: Validate ARIA attribute + accessible name/role/value usage — in an HTML snippet \(\`html\`\) or on a live page \(\`url\`\), optionally limited to one element and its descendants \(\`selector\`\). Runs axe-core \`cat.aria\` and \`cat.name-role-value\` rules \(aria-\* attribute correctness, role validity, required pare Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html