diff --git a/crates/goose-mcp/src/developer/mod.rs b/crates/goose-mcp/src/developer/mod.rs index a866b2b5d5..9fa86bd5d2 100644 --- a/crates/goose-mcp/src/developer/mod.rs +++ b/crates/goose-mcp/src/developer/mod.rs @@ -687,8 +687,8 @@ mod tests { use super::*; use lazy_static::lazy_static; use serde_json::json; + use std::fs; use std::sync::Mutex; - use std::{env, fs}; use tempfile::TempDir; use tokio::sync::OnceCell; diff --git a/crates/goose/src/agents/capabilities.rs b/crates/goose/src/agents/capabilities.rs index 2307df1ff0..5334ea01be 100644 --- a/crates/goose/src/agents/capabilities.rs +++ b/crates/goose/src/agents/capabilities.rs @@ -584,7 +584,7 @@ mod tests { match name { "tool" | "test__tool" => Ok(CallToolResult { content: vec![], - is_error: false, + is_error: None, }), _ => Err(Error::NotInitialized), } diff --git a/crates/mcp-core/src/protocol.rs b/crates/mcp-core/src/protocol.rs index 6ca5b9788e..cea4a2b265 100644 --- a/crates/mcp-core/src/protocol.rs +++ b/crates/mcp-core/src/protocol.rs @@ -218,7 +218,8 @@ pub struct ListToolsResult { #[serde(rename_all = "camelCase")] pub struct CallToolResult { pub content: Vec, - pub is_error: bool, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_error: Option, } #[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] diff --git a/crates/mcp-server/src/router.rs b/crates/mcp-server/src/router.rs index 894dca266d..51815b7dd8 100644 --- a/crates/mcp-server/src/router.rs +++ b/crates/mcp-server/src/router.rs @@ -179,11 +179,11 @@ pub trait Router: Send + Sync + 'static { let result = match self.call_tool(name, arguments).await { Ok(result) => CallToolResult { content: result, - is_error: false, + is_error: None, }, Err(err) => CallToolResult { content: vec![Content::text(err.to_string())], - is_error: true, + is_error: Some(true), }, };