Repair accessibility barriers with an agent, approve every change, and prove the keyboard journey works.
Live application: https://inclusivepatch.aiconic-innovations.workers.dev
Public source: https://github.com/1aifanatic/inclusivepatch-webmcp-challenge
Demo video: Watch or download the 2:24 narrated walkthrough
30-second demo: scan the checkout, stage six bounded remediations, and keep the user-facing wording decision human-controlled.
Current interface: a judge-ready walkthrough, warm editorial surfaces, accessible clay-and-forest state colors, and a responsive two-panel review workspace.
InclusivePatch is a WebMCP-powered accessibility remediation workspace where a developer and ChatGPT repair a deliberately broken checkout together. The app exposes narrow site tools for scanning, inspecting evidence, staging bounded remediations, applying only current-version human approvals, replaying a deterministic keyboard journey, and exporting an auditable patch manifest.
The checkout and all customer details are synthetic. InclusivePatch is a focused demonstration, not an accessibility certification product.
Traditional scanners stop at findings. InclusivePatch keeps the finding, proposed fix, human decision, applied configuration, replay evidence, and exported audit record in one visible page state. The agent operates that same state through document.modelContext.registerTool; there is no embedded chatbot, OpenAI API call, arbitrary DOM mutation tool, or hidden server workflow.
The critical collaboration moment is deliberately human-controlled: a technically accessible but contextually weak final-action label can be rejected, revised, approved, and traced. The rejected value is never applied.
- Run the clean baseline keyboard journey and record its deterministic failures.
- Scan the current fixture; exactly six planted findings appear.
- Inspect evidence and permitted fix options.
- Stage proposals without changing the checkout.
- Reject the weak
Submitaction name with a reason. - Stage
Review and place orderas a linked revision. - Approve the current proposals and apply only those IDs.
- Replay all 11 keyboard assertions and reach
VERIFIED. - Compare baseline and current versions, then export JSON or Markdown evidence.
Golden prompt:
Make this checkout completeable by keyboard without changing its visual design. Stage every remediation for review, replay the full checkout journey after approved changes are applied, and ask me to resolve any user-facing wording that requires human judgment.
flowchart LR
H[Human controls] --> S[Shared typed workspace services]
A[ChatGPT / browser agent] --> W[10 narrow WebMCP tools]
W --> Z[Zod runtime validation]
Z --> S
S --> C[React checkout configuration]
S --> P[Proposal and approval guards]
S --> J[Deterministic replay engine]
S --> L[Immutable local activity history]
C & P & J & L --> LS[(Browser localStorage)]
CF[Cloudflare Workers Static Assets] --> H
CF --> A
- React + TypeScript + Vite
- Cloudflare Vite plugin and Workers Static Assets SPA routing
- axe-core adapter plus deterministic project-specific probes
- Typed reversible patch catalog; no raw selector, HTML, JavaScript, or
evalinput - Browser-only state and exports; no database, authentication, analytics, or external API
- Phase-aware registration with
AbortSignalcleanup and cancellation-aware replay
| Tool | Side effect | Purpose |
|---|---|---|
get_workspace_state |
Read only | Return phase, version, findings, proposals, selection, and journey state. |
scan_current_checkout |
Records scan | Run axe-supported and custom deterministic probes. |
get_issue_details |
Read only | Return evidence and the affected stable component. |
get_fix_options |
Read only | Return only predefined options belonging to one issue. |
stage_fix |
Stages only | Create a proposal without changing checkout configuration. |
apply_approved_fixes |
Mutates config | Apply selected, approved, current-version proposals only. |
replay_keyboard_journey |
Records replay | Run 11 in-page assertions with cancellation support. |
compare_versions |
Read only | Compare explicit baseline/current issues, proposals, and journey outcomes. |
undo_last_applied_fix |
Mutates config | Restore the previous typed configuration and invalidate verification. |
export_patch_manifest |
Local download | Generate JSON or Markdown evidence in the browser. |
Tools dynamically register for the current workspace phase. Read-only annotations are used only for functions that do not modify application state; human- or agent-entered text is marked as untrusted content where appropriate.
Requirements: Node.js 22+ and pnpm 9.9+.
pnpm install
pnpm run devOpen the printed local URL. The complete human interface works in a normal browser when WebMCP is unavailable.
Use ChatGPT's in-app browser or a Chrome build with WebMCP enabled for the current origin-trial/testing setup. Confirm that the header changes from unavailable to available, then inspect the phase-aware tool count.
The implementation follows the current Chrome WebMCP Imperative API, WebMCP best practices, and tool security guidance. WebMCP remains experimental, so recheck browser setup immediately before judging.
pnpm run typecheck # strict TypeScript, including tests
pnpm run test # deterministic unit, integration, and 20 eval-contract cases
pnpm run test:e2e # real Chromium golden flow, reset, downloads, and mocked WebMCP lifecycle
pnpm run test:agent # optional: 20 isolated model first-tool trials (authenticated Codex CLI)
pnpm run build # production Cloudflare/Vite output
pnpm run verify # complete local release gate
pnpm run test:production # headless smoke test of the deployed WorkerThe automated suite covers all six probes, contrast math, patch apply/undo, approval and stale-version guards, state transitions, manifest contents, 11 replay assertions, 20 WebMCP eval contracts, unavailable/error WebMCP fallbacks, localStorage persistence and reset, cancellation, phase registration, visible tool-driven updates, download generation, and the complete rejection/revision journey. The independent agent sample achieved 20/20 correct phase-aware first-tool selections. The production smoke test also verifies security headers, SPA fallback routing, persistence, undo, reset, and zero browser errors against the public Worker. See testing details and the agent evaluation record.
The app uses the Cloudflare Vite plugin. wrangler.jsonc intentionally omits assets.directory; the plugin creates the deployable output config and points it at the client build.
pnpm run typecheck
pnpm run test
pnpm run test:e2e
pnpm run deployassets.not_found_handling is set to single-page-application, so non-asset routes fall back to index.html. A direct Wrangler deployment is the recovery path. For Git-connected production, import this public repository in Workers Builds, select main, and use pnpm exec wrangler deploy as the deploy command.
- The surrounding studio uses landmarks, semantic headings, labeled controls, visible focus, live status messages, reduced-motion support, non-color status text, and responsive layouts.
- The intentionally broken checkout is explicitly isolated. Its keyboard-trap fixture always offers Escape as a safety exit.
- Scans combine axe-supported checks with fixture-specific deterministic probes; they do not represent full WCAG testing.
- All names, addresses, email values, products, and order data are fictional.
- No user data is transmitted. Browser state can be cleared with Reset demo.
- Patch exports are created locally. No cookies, accounts, payments, analytics, or cloud storage are used.
src/
├── accessibility/ # axe adapter, issue normalization, contrast math
├── checkout/ # synthetic fixture and typed accessibility config
├── domain/ # state model, invariants, transitions, comparison
├── export/ # JSON and Markdown patch manifests
├── journey/ # deterministic 11-step replay assertions
├── proposals/ # bounded reversible patch catalog
├── state/ # shared human/WebMCP services and local persistence
├── webmcp/ # schemas, definitions, phase lifecycle, browser types
└── workspace/ # checkout and inspector panels
tests/
├── unit/ # pure domain and schema behavior
├── integration/ # rendered no-WebMCP human fallback
├── e2e/ # real Chromium golden flow and WebMCP mock
└── webmcp/ # 20-case evaluation contract
InclusivePatch was implemented for the OpenAI WebMCP Challenge during the official submission period beginning August 25, 2026. All InclusivePatch product logic, synthetic checkout fixtures, accessibility probes, remediation workflow, journey replay, approval controls, and interface components in this repository were created for this submission. The project uses official Cloudflare and Chrome WebMCP documentation as implementation references.
Third-party packages and licenses are listed in THIRD_PARTY_NOTICES.md. Security guidance is in SECURITY.md, and contribution instructions are in CONTRIBUTING.md.
MIT © 2026 Naveen Chatlapalli. See LICENSE.

