Use case 01 Claude Code · Cursor · Codex · OpenCode

Your agent plans.
The browser is yours.

A coding agent is good at deciding what to do and bad at pixel-level clicking. HailBrowser gives it the browser you are already signed into, over the MCP connection it already speaks.

The prompt

Paste this into Claude Code, Cursor, Codex or OpenCode after the one-time config:

A goal, not a script
Use hailbrowser to open my GitHub notifications
and summarise the ones that need a reply.

The agent calls tabs_context, then read_page, then it decides what to click. You can watch the border and the cursor move in the tab it chose.

What happens

  1. Your client starts hailbrowser-mcp. The first process becomes the local hub on 127.0.0.1:12306.
  2. The extension dials in. The side panel header turns green and says MCP connected.
  3. Your agent asks for the pages, gets numbered refs, and acts on them. Each call is one request, not a screenshot loop.
  4. When the run ends, or the agent is silent for 12 seconds, the border, the tab group and the controlling strip clear.

Skip the frontier model on every click

If your agent is doing the planning, the clicking does not need the same model. Set a decision model in Settings → Ultrafast, leave the text helper empty, and let the agent hand over the goal with its values:

Goal plus values
{
  "goal": "Search one-way flights for 1 adult",
  "mode": "ultrafast",
  "values": {
    "From": "Zurich",
    "To": "London",
    "Date": "2026-09-20"
  }
}

The decision model picks each operation and element. A field named like a key (“Where to?” matching To) is filled without a model call. No text-generation model is used.

What to check

  • That the agent used the tab you expected. It is named in the controlling strip.
  • That the page it read is the page it acted on. A ref from before a navigation is stale.
  • That the final state is real. A model saying done is a claim; open the page and look.

What can go wrong

  • The side panel never turns green. The server is not running, or both sides use a different port. See connect troubleshooting.
  • Two agents fight over the tab. They share one debugger and one current tab, so a second run waits. Close one client if that is not what you want.
  • The extension was reinstalled. Its ID changed and the trust file rejects it. Run npx hailbrowser-mcp trust <new id>.
  • A confirm dialog freezes the run. Ask the agent to call handle_dialog, or close it yourself.