Inspiration
I built blnq.studio because front-end work had become a pile of tabs: an editor, a dev server, a browser, DevTools, an accessibility checker, a design spec, and now an AI chat window that can't see any of them. Every one of those handoffs is where quality leaks out — especially accessibility, which is the first thing dropped when you're moving fast and the last thing an AI agent notices, because it can't see what it built.
I wanted a single tab where the code, the live preview, the audit and the AI all look at the same thing. WebMCP was the missing piece: it lets the editor tab itself become the tool surface an agent uses, so the loop closes without any extra setup.
What it does
blnq.studio is a browser-based editor purpose-built for front-end: code, preview, ship — all in one tab.
- Live multi-file editing — Monaco under the hood, real HTML/CSS/JS files with folders and ES module imports, no build step. The preview updates as you type.
- Accessibility first — every preview refresh runs the pour engine against WCAG 2.0–2.2 A/AA plus best-practice rules. The A11y panel lists each violation with its impact, a plain-English fix and the exact element. Colour-contrast checks are built into the editor, not bolted on afterwards.
- Multi-device preview — switch viewports, check every breakpoint, see the FPS overlay, all without leaving the tab.
- Design systems your AI respects — drop a
DESIGN.mdat the project root and the editor treats it as the source of truth: colour and font literals that drift from your tokens get flagged, so AI-written CSS stays inside the system instead of inventing new values. - Baseline compatibility — a built-in tool tab tells you which features you're using aren't yet widely available across browsers.
- Collaborate and fork — real-time multi-cursor collaboration over Yjs, forks and merge requests, a community showcase.
- Ship from the editor — push to GitHub, deploy from the menu, or download the whole project as one self-contained HTML file.
- AI & MCP, on your terms — AI is optional. When you want it, connect Claude Code (or any MCP client) over the built-in MCP server, use the in-editor chat with your own model, or — new for this challenge — turn on WebMCP and let a browser-native agent drive the tab directly.
WebMCP: the editor tab is the tool server
Click Start WebMCP and blnq registers 30+ tools with the browser via document.modelContext. No MCP ID, no config file, no separate process. An agent running in the browser can then:
- Read and edit files by line range or find-and-replace, with undo snapshots and live edits landing in the editor and preview
- See what it built —
blnq_screenshotreturns a real PNG, plus element inspection, console errors and viewport switching - Audit with
blnq_check_preview, which returns JS errors, every WCAG violation with its element HTML and fix hint, and any design-token drift - Interact — click, type, press keys, wait for elements — so it can tab through a form or open a modal and re-audit the new state
- Fix and re-audit until the report is clean
The key design decision was that WebMCP isn't a separate integration. blnq has one shared tool registry; the MCP server and the WebMCP endpoint are two thin adapters over it. A tool added to the registry appears in both, and edits behave identically — same validation, same undo, same activity toasts, same prompt history — whichever transport the call came in on.
How I built it
blnq is an Express + Monaco + Yjs app with a plugin system; the MCP server, AI chat, Baseline and spellcheck tools are all plugins. The accessibility engine runs inside the preview iframe and posts results up to the editor, so the panel a human reads and the result an agent reads come from the same run.
WebMCP was around 350 lines: a client module that fetches tool descriptors and calls registerTool() for each (with readOnlyHint annotations and MCP-shaped { content } results including images), and a server endpoint that Zod-validates and runs the shared handler. The endpoint is same-origin only and still requires the tab's random bridge ID; the browser handles user consent on its side.
What I learned
The accessibility audit turned out to be the most valuable thing blnq can hand an agent. A screenshot tells a model roughly what it built; a WCAG report with the offending element and a fix hint tells it exactly what to change. Structured, model-readable audit output beat any amount of prompt engineering.
And WebMCP inverts the usual relationship: the page stops being something an agent scrapes and becomes something it calls. Once you have a decent tool registry, the browser becomes the integration layer for free.
What's next
- Structured JSON from
blnq_check_previewso agents can diff violations between audits - A
blnq_fix_a11ytool that applies remedies for common rule classes automatically - Focus-order and keyboard-navigation audits driven by key-press sequences
- Ship the Chrome origin-trial token on blnq.studio so WebMCP works without flags
- Share a collaboration session with an agent so humans and AI can work on the same project live
Built With
- ai
- css
- framework-free
- html
- javascript