tactual-dev avatar

Tactual

tactual-dev/tactual

Screen readers navigate by landmarks, headings, and Tab order, but most accessibility tooling stops at markup validation. This server surfaces the actual keystroke cost to discover and reach interactive targets under NVDA, JAWS, or VoiceOver profiles. It exposes analyze_url and analyze_pages tools that return findings with selectors, navigation paths, scoring breakdowns, and suggested fixes. Use it when you need to measure navigation effort in staging environments, diff before and after scores in CI, or trace why a checkout button takes forty Tab stops to reach. It complements axe and Lighthouse by answering the next question: given valid ARIA, how expensive is this interface for AT users?

tools
9
transport
STDIO
last updated
Apr 6, 2026

Tools

9 tools

Public tool metadata for what this MCP can expose to an agent.

analyze_urlAnalyze a page for SR navigation cost (SARIF default). Supports opt-in exploration, keyboard/widget/form probes, scoped/goal-directed probing, stealth/channel for bot-protected sites, and filtering.

Analyze a page for SR navigation cost (SARIF default). Supports opt-in exploration, keyboard/widget/form probes, scoped/goal-directed probing, stealth/channel for bot-protected sites, and filtering.

No parameter schema in public metadata yet.

trace_pathStep-by-step navigation path to a target with modeled SR announcements.

Step-by-step navigation path to a target with modeled SR announcements.

No parameter schema in public metadata yet.

validate_urlValidate predicted paths against @guidepup/virtual-screen-reader. Returns reachable + mean accuracy per strategy (linear/semantic). Closes the predicted-vs-validated loop.

Validate predicted paths against @guidepup/virtual-screen-reader. Returns reachable + mean accuracy per strategy (linear/semantic). Closes the predicted-vs-validated loop.

No parameter schema in public metadata yet.

calibration_reportRun observed calibration datasets against saved full analysis JSON and return structured scoring signals for tuning/review workflows.

Run observed calibration datasets against saved full analysis JSON and return structured scoring signals for tuning/review workflows.

No parameter schema in public metadata yet.

list_profilesList available AT profiles.

List available AT profiles.

No parameter schema in public metadata yet.

diff_resultsCompare two analysis results — improvements, regressions, severity changes.

Compare two analysis results — improvements, regressions, severity changes.

No parameter schema in public metadata yet.

suggest_remediationsRanked fix suggestions by impact.

Ranked fix suggestions by impact.

No parameter schema in public metadata yet.

save_authAuthenticate and save session state for analyzing protected content.

Authenticate and save session state for analyzing protected content.

No parameter schema in public metadata yet.

analyze_pagesMulti-page site triage with aggregated stats and repeated navigation-cost groups across pages.

Multi-page site triage with aggregated stats and repeated navigation-cost groups across pages.

No parameter schema in public metadata yet.

Sponsors

Readme

Tactual

Tactual logo

Screen-reader navigation cost analyzer. Measures how many keystrokes a screen-reader user needs to discover, reach, and operate every interactive target on your page — under a specific AT profile (NVDA, JAWS, VoiceOver).

What it does

Existing accessibility tools check conformance — is the ARIA correct? Is the contrast ratio sufficient?

Tactual measures navigation cost — how many actions does it take a screen-reader user to reach the checkout button? What happens if they overshoot? Can they even discover it exists? Does the menu actually open on Enter, or only on click? Does focus land on the first menuitem or stay stuck on the trigger?

How it works:


View the full README on GitHub

Details

Repository
github.com/tactual-dev/tactual
Package
tactual
Transport
STDIO
Registry
MCP registry, active