diff --git a/webui/src/web-components/sketch-tool-calls.ts b/webui/src/web-components/sketch-tool-calls.ts
index 8e500ff..792e893 100644
--- a/webui/src/web-components/sketch-tool-calls.ts
+++ b/webui/src/web-components/sketch-tool-calls.ts
@@ -5,6 +5,17 @@
 import "./sketch-tool-card";
 import "./sketch-tool-card-take-screenshot";
 import "./sketch-tool-card-about-sketch";
+import "./sketch-tool-card-browser-navigate";
+import "./sketch-tool-card-browser-click";
+import "./sketch-tool-card-browser-type";
+import "./sketch-tool-card-browser-wait-for";
+import "./sketch-tool-card-browser-get-text";
+import "./sketch-tool-card-browser-eval";
+import "./sketch-tool-card-browser-scroll-into-view";
+import "./sketch-tool-card-browser-resize";
+import "./sketch-tool-card-browser-read-image";
+import "./sketch-tool-card-browser-recent-console-logs";
+import "./sketch-tool-card-browser-clear-console-logs";
 
 @customElement("sketch-tool-calls")
 export class SketchToolCalls extends LitElement {
@@ -143,11 +154,66 @@
           .open=${open}
           .toolCall=${toolCall}
         ></sketch-tool-card-todo-read>`;
+      case "browser_navigate":
+        return html`<sketch-tool-card-browser-navigate
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-navigate>`;
       case "keyword_search":
         return html`<sketch-tool-card-keyword-search
           .open=${open}
           .toolCall=${toolCall}
         ></sketch-tool-card-keyword-search>`;
+      case "browser_click":
+        return html`<sketch-tool-card-browser-click
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-click>`;
+      case "browser_type":
+        return html`<sketch-tool-card-browser-type
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-type>`;
+      case "browser_wait_for":
+        return html`<sketch-tool-card-browser-wait-for
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-wait-for>`;
+      case "browser_get_text":
+        return html`<sketch-tool-card-browser-get-text
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-get-text>`;
+      case "browser_eval":
+        return html`<sketch-tool-card-browser-eval
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-eval>`;
+      case "browser_scroll_into_view":
+        return html`<sketch-tool-card-browser-scroll-into-view
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-scroll-into-view>`;
+      case "browser_resize":
+        return html`<sketch-tool-card-browser-resize
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-resize>`;
+      case "browser_read_image":
+        return html`<sketch-tool-card-browser-read-image
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-read-image>`;
+      case "browser_recent_console_logs":
+        return html`<sketch-tool-card-browser-recent-console-logs
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-recent-console-logs>`;
+      case "browser_clear_console_logs":
+        return html`<sketch-tool-card-browser-clear-console-logs
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-browser-clear-console-logs>`;
     }
     return html`<sketch-tool-card-generic
       .open=${open}
diff --git a/webui/src/web-components/sketch-tool-card-browser-clear-console-logs.ts b/webui/src/web-components/sketch-tool-card-browser-clear-console-logs.ts
new file mode 100644
index 0000000..556d1be
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-clear-console-logs.ts
@@ -0,0 +1,44 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-clear-console-logs")
+export class SketchToolCardBrowserClearConsoleLogs extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          🧹 Clear console logs
+        </span>
+        <div slot="input">
+          <div>Clear all console logs</div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-clear-console-logs": SketchToolCardBrowserClearConsoleLogs;
+  }
+}
diff --git a/webui/src/web-components/sketch-tool-card-browser-click.ts b/webui/src/web-components/sketch-tool-card-browser-click.ts
new file mode 100644
index 0000000..c19114c
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-click.ts
@@ -0,0 +1,64 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-click")
+export class SketchToolCardBrowserClick extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+    
+    .selector-input {
+      font-family: monospace;
+      background: rgba(0, 0, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    // Parse the input to get selector
+    let selector = "";
+    try {
+      if (this.toolCall?.input) {
+        const input = JSON.parse(this.toolCall.input);
+        selector = input.selector || "";
+      }
+    } catch (e) {
+      console.error("Error parsing click input:", e);
+    }
+
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          🖱️ ${selector}
+        </span>
+        <div slot="input">
+          <div>Click: <span class="selector-input">${selector}</span></div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-click": SketchToolCardBrowserClick;
+  }
+}
diff --git a/webui/src/web-components/sketch-tool-card-browser-eval.ts b/webui/src/web-components/sketch-tool-card-browser-eval.ts
new file mode 100644
index 0000000..15fcc16
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-eval.ts
@@ -0,0 +1,67 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-eval")
+export class SketchToolCardBrowserEval extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+    
+    .expression-input {
+      font-family: monospace;
+      background: rgba(0, 0, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    // Parse the input to get expression
+    let expression = "";
+    try {
+      if (this.toolCall?.input) {
+        const input = JSON.parse(this.toolCall.input);
+        expression = input.expression || "";
+      }
+    } catch (e) {
+      console.error("Error parsing eval input:", e);
+    }
+
+    // Truncate expression for summary if too long
+    const displayExpression = expression.length > 50 ? expression.substring(0, 50) + "..." : expression;
+
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          📱 ${displayExpression}
+        </span>
+        <div slot="input">
+          <div>Evaluate: <span class="expression-input">${expression}</span></div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-eval": SketchToolCardBrowserEval;
+  }
+}
diff --git a/webui/src/web-components/sketch-tool-card-browser-get-text.ts b/webui/src/web-components/sketch-tool-card-browser-get-text.ts
new file mode 100644
index 0000000..b093650
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-get-text.ts
@@ -0,0 +1,64 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-get-text")
+export class SketchToolCardBrowserGetText extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+    
+    .selector-input {
+      font-family: monospace;
+      background: rgba(0, 0, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    // Parse the input to get selector
+    let selector = "";
+    try {
+      if (this.toolCall?.input) {
+        const input = JSON.parse(this.toolCall.input);
+        selector = input.selector || "";
+      }
+    } catch (e) {
+      console.error("Error parsing get text input:", e);
+    }
+
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          📖 ${selector}
+        </span>
+        <div slot="input">
+          <div>Get text from: <span class="selector-input">${selector}</span></div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-get-text": SketchToolCardBrowserGetText;
+  }
+}
diff --git a/webui/src/web-components/sketch-tool-card-browser-navigate.ts b/webui/src/web-components/sketch-tool-card-browser-navigate.ts
new file mode 100644
index 0000000..37efbd1
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-navigate.ts
@@ -0,0 +1,64 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-navigate")
+export class SketchToolCardBrowserNavigate extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+    
+    .url-input {
+      font-family: monospace;
+      background: rgba(0, 0, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    // Parse the input to get URL
+    let url = "";
+    try {
+      if (this.toolCall?.input) {
+        const input = JSON.parse(this.toolCall.input);
+        url = input.url || "";
+      }
+    } catch (e) {
+      console.error("Error parsing navigate input:", e);
+    }
+
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          🌐 ${url}
+        </span>
+        <div slot="input">
+          <div>Navigate to: <span class="url-input">${url}</span></div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-navigate": SketchToolCardBrowserNavigate;
+  }
+}
diff --git a/webui/src/web-components/sketch-tool-card-browser-read-image.ts b/webui/src/web-components/sketch-tool-card-browser-read-image.ts
new file mode 100644
index 0000000..554feee
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-read-image.ts
@@ -0,0 +1,67 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-read-image")
+export class SketchToolCardBrowserReadImage extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+    
+    .path-input {
+      font-family: monospace;
+      background: rgba(0, 0, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    // Parse the input to get path
+    let path = "";
+    try {
+      if (this.toolCall?.input) {
+        const input = JSON.parse(this.toolCall.input);
+        path = input.path || "";
+      }
+    } catch (e) {
+      console.error("Error parsing read image input:", e);
+    }
+
+    // Show just the filename in summary
+    const filename = path.split('/').pop() || path;
+
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          🖼️ ${filename}
+        </span>
+        <div slot="input">
+          <div>Read image: <span class="path-input">${path}</span></div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-read-image": SketchToolCardBrowserReadImage;
+  }
+}
diff --git a/webui/src/web-components/sketch-tool-card-browser-recent-console-logs.ts b/webui/src/web-components/sketch-tool-card-browser-recent-console-logs.ts
new file mode 100644
index 0000000..55d080d
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-recent-console-logs.ts
@@ -0,0 +1,64 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-recent-console-logs")
+export class SketchToolCardBrowserRecentConsoleLogs extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+    
+    .limit-input {
+      font-family: monospace;
+      background: rgba(0, 0, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    // Parse the input to get limit
+    let limit = "";
+    try {
+      if (this.toolCall?.input) {
+        const input = JSON.parse(this.toolCall.input);
+        limit = input.limit ? input.limit.toString() : "100";
+      }
+    } catch (e) {
+      console.error("Error parsing recent console logs input:", e);
+    }
+
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          📜 Console logs (${limit})
+        </span>
+        <div slot="input">
+          <div>Get recent console logs: <span class="limit-input">limit ${limit}</span></div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-recent-console-logs": SketchToolCardBrowserRecentConsoleLogs;
+  }
+}
diff --git a/webui/src/web-components/sketch-tool-card-browser-resize.ts b/webui/src/web-components/sketch-tool-card-browser-resize.ts
new file mode 100644
index 0000000..0d04091
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-resize.ts
@@ -0,0 +1,66 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-resize")
+export class SketchToolCardBrowserResize extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+    
+    .size-input {
+      font-family: monospace;
+      background: rgba(0, 0, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    // Parse the input to get width and height
+    let width = "";
+    let height = "";
+    try {
+      if (this.toolCall?.input) {
+        const input = JSON.parse(this.toolCall.input);
+        width = input.width ? input.width.toString() : "";
+        height = input.height ? input.height.toString() : "";
+      }
+    } catch (e) {
+      console.error("Error parsing resize input:", e);
+    }
+
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          🖼️ ${width}x${height}
+        </span>
+        <div slot="input">
+          <div>Resize to: <span class="size-input">${width}x${height}</span></div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-resize": SketchToolCardBrowserResize;
+  }
+}
diff --git a/webui/src/web-components/sketch-tool-card-browser-scroll-into-view.ts b/webui/src/web-components/sketch-tool-card-browser-scroll-into-view.ts
new file mode 100644
index 0000000..4070882
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-scroll-into-view.ts
@@ -0,0 +1,64 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-scroll-into-view")
+export class SketchToolCardBrowserScrollIntoView extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+    
+    .selector-input {
+      font-family: monospace;
+      background: rgba(0, 0, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    // Parse the input to get selector
+    let selector = "";
+    try {
+      if (this.toolCall?.input) {
+        const input = JSON.parse(this.toolCall.input);
+        selector = input.selector || "";
+      }
+    } catch (e) {
+      console.error("Error parsing scroll into view input:", e);
+    }
+
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          🔄 ${selector}
+        </span>
+        <div slot="input">
+          <div>Scroll into view: <span class="selector-input">${selector}</span></div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-scroll-into-view": SketchToolCardBrowserScrollIntoView;
+  }
+}
diff --git a/webui/src/web-components/sketch-tool-card-browser-type.ts b/webui/src/web-components/sketch-tool-card-browser-type.ts
new file mode 100644
index 0000000..1f58eb8
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-type.ts
@@ -0,0 +1,76 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-type")
+export class SketchToolCardBrowserType extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+    
+    .selector-input {
+      font-family: monospace;
+      background: rgba(0, 0, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+    
+    .text-input {
+      font-family: monospace;
+      background: rgba(0, 100, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    // Parse the input to get selector and text
+    let selector = "";
+    let text = "";
+    try {
+      if (this.toolCall?.input) {
+        const input = JSON.parse(this.toolCall.input);
+        selector = input.selector || "";
+        text = input.text || "";
+      }
+    } catch (e) {
+      console.error("Error parsing type input:", e);
+    }
+
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          ⌨️ ${selector}: "${text}"
+        </span>
+        <div slot="input">
+          <div>Type into: <span class="selector-input">${selector}</span></div>
+          <div>Text: <span class="text-input">${text}</span></div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-type": SketchToolCardBrowserType;
+  }
+}
diff --git a/webui/src/web-components/sketch-tool-card-browser-wait-for.ts b/webui/src/web-components/sketch-tool-card-browser-wait-for.ts
new file mode 100644
index 0000000..eb3306b
--- /dev/null
+++ b/webui/src/web-components/sketch-tool-card-browser-wait-for.ts
@@ -0,0 +1,64 @@
+import { css, html, LitElement } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { ToolCall } from "../types";
+
+@customElement("sketch-tool-card-browser-wait-for")
+export class SketchToolCardBrowserWaitFor extends LitElement {
+  @property()
+  toolCall: ToolCall;
+
+  @property()
+  open: boolean;
+
+  static styles = css`
+    .summary-text {
+      font-family: monospace;
+      color: #444;
+      word-break: break-all;
+    }
+    
+    .selector-input {
+      font-family: monospace;
+      background: rgba(0, 0, 0, 0.05);
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: inline-block;
+      word-break: break-all;
+    }
+  `;
+
+  render() {
+    // Parse the input to get selector
+    let selector = "";
+    try {
+      if (this.toolCall?.input) {
+        const input = JSON.parse(this.toolCall.input);
+        selector = input.selector || "";
+      }
+    } catch (e) {
+      console.error("Error parsing wait for input:", e);
+    }
+
+    return html`
+      <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+        <span slot="summary" class="summary-text">
+          ⏳ ${selector}
+        </span>
+        <div slot="input">
+          <div>Wait for: <span class="selector-input">${selector}</span></div>
+        </div>
+        <div slot="result">
+          ${this.toolCall?.result_message?.tool_result
+            ? html`<pre>${this.toolCall.result_message.tool_result}</pre>`
+            : ""}
+        </div>
+      </sketch-tool-card>
+    `;
+  }
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    "sketch-tool-card-browser-wait-for": SketchToolCardBrowserWaitFor;
+  }
+}
