FastLink

MCP · Chrome extension · vision fallback

Browser automation for pages that fight back.

FastLink connects Claude Code, Claude Desktop, or claude.ai web to the Chrome tab a user is actually looking at. It reads DOM snapshots, clicks, fills, runs JS, watches console/network, and falls back to visual grounding when page structure disappears.

active tab · opaque iframe · form recovered
Email input · DOM found
Password input · DOM found
Submit button · ranked click
$ fast_scout intent="fill signup"
steps: fast_fill, fast_click
$ fast_fill_vision
filled: cross-origin iframe fields
When snapshots return only chrome/footer or a cross-origin iframe blocks DOM access, Gemini-backed visual tools locate the field and fill it without the agent reading screenshots manually.
ClaudeCode · Desktop · web MCP serverfast-dxt tools BrokerWebSocket hub ChromeMV3 extension Cloud relay option Gemini vision tier

The tools are built for failure modes.

DOM and snapshot first

fast_snapshot, fast_click, fast_fill, fast_nav, fast_list, fast_switch, and console/network tools make ordinary pages cheap and structured.

Vision when needed

fast_point, fast_point_som, fast_fill_vision, fast_locate, and fast_do handle canvas, iframes, custom widgets, and pages that serialize poorly.

Connection diagnostics

fast_status and fast_profile expose extension state, selected install slot, and deterministic routing for primary and secondary Chrome profiles.

1
Local install

Node MCP server auto-spawns a broker; Chrome extension connects to broker ports 9876 and 9877.

2
Desktop bundle

The same fast-dxt source builds the Claude Desktop .mcpb runtime.

3
Cloud relay

Cloudflare Worker and Durable Objects let claude.ai web reach a paired browser.

4
Updater paths

Git-pull and download-swap scripts keep unpacked extension installs current without pretending Chrome can silently reinstall them.

Why it exists

Real websites are not polite automation targets. They hide fields in iframes, render controls in overlays, mutate after clicks, cache stale frames, and break localhost after laptop sleep. FastLink’s job is to give the agent a ladder: structured DOM when possible, visual grounding when necessary, and clear diagnostics when the browser is not connected.

Recovery paths are part of the product

When the extension is absent

fast_status reports whether the browser is connected and returns connection diagnostics instead of making every other tool fail mysteriously.

When there are two profiles

fast_profile pins the session to primary, secondary, or auto so a second Chrome profile does not silently receive the wrong action.

When WSL networking drifts

The extension dials localhost first and falls back to the WSL VM IP; the broker binds broadly enough to keep that fallback path usable.

DOM
Fast path

Snapshot, click, fill, nav, wait, and tab tools are optimized for structured pages and return fresh post-action views where possible.

IMG
Visual path

Set-of-Mark, point location, and whole-form visual fill are reserved for the cases where the page cannot be read reliably from the DOM.

FastLink is a ladder, not one magic command

Simple pages use structured DOM tools. Heavy pages escalate to overlay scans, then screenshots interpreted by Gemini-backed tools. Connection problems use status and profile tools. Install/update problems use docs and scripts. That separation is why the agent can recover instead of blindly retrying the same failed click.

WS
Shared broker

The server auto-spawns the WebSocket broker and multiple MCP clients can reuse the same extension connection.

P1
Primary profile

The default Chrome profile connects on its own slot and can be targeted deterministically.

P2
Secondary profile

A second install can use a separate port so testing and real browsing do not collide.

CF
Cloud relay

The relay mirrors the local tool surface for claude.ai web through a paired browser session.

⌂ DashboardDesign ·ClaudeCodexGrokGeminiDeepSeek