diff --git a/webui/src/web-components/sketch-tool-calls.ts b/webui/src/web-components/sketch-tool-calls.ts
index d64b0ca..8e500ff 100644
--- a/webui/src/web-components/sketch-tool-calls.ts
+++ b/webui/src/web-components/sketch-tool-calls.ts
@@ -143,6 +143,11 @@
           .open=${open}
           .toolCall=${toolCall}
         ></sketch-tool-card-todo-read>`;
+      case "keyword_search":
+        return html`<sketch-tool-card-keyword-search
+          .open=${open}
+          .toolCall=${toolCall}
+        ></sketch-tool-card-keyword-search>`;
     }
     return html`<sketch-tool-card-generic
       .open=${open}
diff --git a/webui/src/web-components/sketch-tool-card.ts b/webui/src/web-components/sketch-tool-card.ts
index 307686d..551145c 100644
--- a/webui/src/web-components/sketch-tool-card.ts
+++ b/webui/src/web-components/sketch-tool-card.ts
@@ -757,21 +757,84 @@
   render() {
     const inputData = JSON.parse(this.toolCall?.input || "{}");
     const tasks = inputData.tasks || [];
-    
+
     // Generate circles based on task status
-    const circles = tasks.map(task => {
-      switch(task.status) {
-        case 'completed': return '●'; // full circle
-        case 'in-progress': return '◐'; // half circle
-        case 'queued': 
-        default: return '○'; // empty circle
-      }
-    }).join(' ');
-    
+    const circles = tasks
+      .map((task) => {
+        switch (task.status) {
+          case "completed":
+            return "●"; // full circle
+          case "in-progress":
+            return "◐"; // half circle
+          case "queued":
+          default:
+            return "○"; // empty circle
+        }
+      })
+      .join(" ");
+
     return html`<sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
-      <span slot="summary" class="summary-text">
-        ${circles}
-      </span>
+      <span slot="summary" class="summary-text"> ${circles} </span>
+      <div slot="result">
+        <pre>${this.toolCall?.result_message?.tool_result}</pre>
+      </div>
+    </sketch-tool-card>`;
+  }
+}
+
+@customElement("sketch-tool-card-keyword-search")
+export class SketchToolCardKeywordSearch extends LitElement {
+  @property() toolCall: ToolCall;
+  @property() open: boolean;
+
+  static styles = css`
+    .summary-container {
+      display: flex;
+      flex-direction: column;
+      gap: 2px;
+      width: 100%;
+      max-width: 100%;
+      overflow: hidden;
+    }
+    .query-line {
+      color: #333;
+      font-family: inherit;
+      font-size: 12px;
+      font-weight: normal;
+      white-space: normal;
+      word-wrap: break-word;
+      word-break: break-word;
+      overflow-wrap: break-word;
+      line-height: 1.2;
+    }
+    .keywords-line {
+      color: #666;
+      font-family: inherit;
+      font-size: 11px;
+      font-weight: normal;
+      white-space: normal;
+      word-wrap: break-word;
+      word-break: break-word;
+      overflow-wrap: break-word;
+      line-height: 1.2;
+      margin-top: 1px;
+    }
+  `;
+
+  render() {
+    const inputData = JSON.parse(this.toolCall?.input || "{}");
+    const query = inputData.query || "";
+    const searchTerms = inputData.search_terms || [];
+
+    return html`<sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
+      <div slot="summary" class="summary-container">
+        <div class="query-line">🔍 ${query}</div>
+        <div class="keywords-line">🗝️ ${searchTerms.join(", ")}</div>
+      </div>
+      <div slot="input">
+        <div><strong>Query:</strong> ${query}</div>
+        <div><strong>Search terms:</strong> ${searchTerms.join(", ")}</div>
+      </div>
       <div slot="result">
         <pre>${this.toolCall?.result_message?.tool_result}</pre>
       </div>
@@ -793,9 +856,7 @@
 
   render() {
     return html`<sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
-      <span slot="summary" class="summary-text">
-        Read todo list
-      </span>
+      <span slot="summary" class="summary-text"> Read todo list </span>
       <div slot="result">
         <pre>${this.toolCall?.result_message?.tool_result}</pre>
       </div>
@@ -853,6 +914,7 @@
     "sketch-tool-card-multiple-choice": SketchToolCardMultipleChoice;
     "sketch-tool-card-todo-write": SketchToolCardTodoWrite;
     "sketch-tool-card-todo-read": SketchToolCardTodoRead;
+    "sketch-tool-card-keyword-search": SketchToolCardKeywordSearch;
     // TODO: We haven't implemented this for browser tools.
   }
 }
