From ae8ecbe0906fd972246be62e09b00ee1679c9b0b Mon Sep 17 00:00:00 2001 From: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com> Date: Tue, 16 Dec 2025 12:31:10 -0500 Subject: [PATCH] perf: Avoid repeated MCP queries during streaming responses (#6138) --- crates/goose/src/agents/agent.rs | 4 ++-- crates/goose/src/agents/reply_parts.rs | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/goose/src/agents/agent.rs b/crates/goose/src/agents/agent.rs index 1fff766b59..98629f8e43 100644 --- a/crates/goose/src/agents/agent.rs +++ b/crates/goose/src/agents/agent.rs @@ -289,11 +289,11 @@ impl Agent { async fn categorize_tools( &self, response: &Message, - _tools: &[rmcp::model::Tool], + tools: &[rmcp::model::Tool], ) -> ToolCategorizeResult { // Categorize tool requests let (frontend_requests, remaining_requests, filtered_response) = - self.categorize_tool_requests(response).await; + self.categorize_tool_requests(response, tools).await; ToolCategorizeResult { frontend_requests, diff --git a/crates/goose/src/agents/reply_parts.rs b/crates/goose/src/agents/reply_parts.rs index 5384f776a9..7c5d0c939d 100644 --- a/crates/goose/src/agents/reply_parts.rs +++ b/crates/goose/src/agents/reply_parts.rs @@ -270,9 +270,8 @@ impl Agent { pub(crate) async fn categorize_tool_requests( &self, response: &Message, + tools: &[Tool], ) -> (Vec, Vec, Message) { - let tools = self.list_tools(None).await; - // First collect all tool requests with coercion applied let tool_requests: Vec = response .content