diff --git a/crates/agentic-server-core/src/executor/accumulator.rs b/crates/agentic-server-core/src/executor/accumulator.rs index 19b40b5..dd83c6b 100644 --- a/crates/agentic-server-core/src/executor/accumulator.rs +++ b/crates/agentic-server-core/src/executor/accumulator.rs @@ -605,22 +605,6 @@ mod tests { } } - #[test] - fn test_process_event_mcp_tool_call_done_accumulates_output() { - let lines = vec![ - r#"data: {"type":"response.output_item.added","output_index":0,"item":{"type":"mcp_tool_call","id":"mcp_1","server":"repo","tool":"read_mcp_resource","arguments":{"server":"repo"},"status":"in_progress"}}"#.to_string(), - r#"data: {"type":"response.mcp_tool_call.in_progress","item_id":"mcp_1","output_index":0}"#.to_string(), - r#"data: {"type":"response.mcp_tool_call.completed","item_id":"mcp_1","output_index":0,"item":{"type":"mcp_tool_call","id":"mcp_1","server":"repo","tool":"read_mcp_resource","arguments":{"server":"repo"},"status":"completed","result":{"contents":[]}}}"#.to_string(), - r#"data: {"type":"response.output_item.done","output_index":0,"item":{"type":"mcp_tool_call","id":"mcp_1","server":"repo","tool":"read_mcp_resource","arguments":{"server":"repo"},"status":"completed","result":{"contents":[]}}}"#.to_string(), - r#"data: {"type":"response.done","response":{"id":"resp_1","status":"completed","usage":{"input_tokens":5,"output_tokens":2,"total_tokens":7}}}"#.to_string(), - ]; - - let acc = ResponseAccumulator::from_sse_lines(lines, None); - assert_eq!(acc.status, ResponseStatus::Completed); - assert_eq!(acc.output.len(), 1); - assert!(matches!(acc.output[0], OutputItem::McpToolCall(_))); - } - #[test] fn test_process_event_web_search_done_accumulates_output() { let lines = vec![ diff --git a/crates/agentic-server-core/src/executor/engine.rs b/crates/agentic-server-core/src/executor/engine.rs index fe4fa12..cfbb5d1 100644 --- a/crates/agentic-server-core/src/executor/engine.rs +++ b/crates/agentic-server-core/src/executor/engine.rs @@ -99,8 +99,9 @@ async fn run_until_gateway_tools_complete( stream_upstream: bool, mut stream: Option<(&mut GatewayStreamAccumulator, &mpsc::UnboundedSender)>, ) -> ExecutorResult<(ResponsePayload, RequestContext)> { - let registry: ToolRegistry = match ctx.enriched_request.tools.as_ref() { - Some(tools) => ToolRegistry::build_with_handlers(tools, &exec_ctx.gateway_executors).await?, + let mut executors = exec_ctx.gateway_executors.request_scoped(); + let registry: ToolRegistry = match ctx.enriched_request.tools.as_mut() { + Some(tools) => ToolRegistry::build_with_handlers(tools, &mut executors).await?, None => ToolRegistry::default(), }; let mut combined_output: Vec = Vec::new(); diff --git a/crates/agentic-server-core/src/executor/gateway.rs b/crates/agentic-server-core/src/executor/gateway.rs index 5880445..1c12de5 100644 --- a/crates/agentic-server-core/src/executor/gateway.rs +++ b/crates/agentic-server-core/src/executor/gateway.rs @@ -172,7 +172,7 @@ async fn execute_gateway_call_with_timeout( (execution_error_output(&call, &message)?, GatewayCallStatus::Failed) } }; - let public_output = gateway_public_output(dispatch.tool_type, &call, &output, status); + let public_output = gateway_public_output(dispatch.tool_type, &call, &output, status, registry); Ok(GatewayCallResult { call, input_item: InputItem::FunctionCallOutput(output.into()), @@ -185,10 +185,13 @@ fn gateway_public_output( call: &FunctionToolCall, output: &ToolOutput, status: GatewayCallStatus, + registry: &ToolRegistry, ) -> Option { match tool_type { ToolType::WebSearch => Some(crate::tool::web_search::output_item(call, output, status)), - ToolType::Mcp => Some(crate::tool::mcp::handler::output_item(call, output, status)), + ToolType::Mcp => registry + .mcp_tool_ref(&call.name) + .map(|tool_ref| crate::tool::mcp::handler::output_item(call, output, status, tool_ref)), ToolType::Function | ToolType::CodexNamespace | ToolType::FileSearch | ToolType::CodeInterpreter => None, } } @@ -252,7 +255,9 @@ pub(super) fn gateway_event_plans( output_index: u32::try_from(output_index).unwrap_or(u32::MAX), started_output: match entry.tool_type { ToolType::WebSearch => Some(crate::tool::web_search::started_output_item(call)), - ToolType::Mcp => Some(crate::tool::mcp::handler::started_output_item(call)), + ToolType::Mcp => registry + .mcp_tool_ref(&call.name) + .map(|tool_ref| crate::tool::mcp::handler::started_output_item(call, tool_ref)), ToolType::Function | ToolType::CodexNamespace | ToolType::FileSearch @@ -573,7 +578,8 @@ mod tests { serde_json::from_value(serde_json::json!({"type": "web_search_preview"})).expect("web_search tool param"); let mut executors = GatewayExecutors::default(); executors.insert(Arc::new(SlowExecutor)); - let registry = ToolRegistry::build_with_handlers(&[web_search], &executors) + let mut tools = [web_search]; + let registry = ToolRegistry::build_with_handlers(&mut tools, &mut executors) .await .expect("registry builds"); @@ -609,7 +615,9 @@ mod tests { // not fail the whole request. let web_search: ResponsesTool = serde_json::from_value(serde_json::json!({"type": "web_search_preview"})).expect("web_search tool param"); - let registry = ToolRegistry::build_with_handlers(&[web_search], &GatewayExecutors::default()) + let mut tools = [web_search]; + let mut executors = GatewayExecutors::default(); + let registry = ToolRegistry::build_with_handlers(&mut tools, &mut executors) .await .expect("registry builds"); diff --git a/crates/agentic-server-core/src/executor/messages_stream.rs b/crates/agentic-server-core/src/executor/messages_stream.rs index 88f6ab2..dfaf8f2 100644 --- a/crates/agentic-server-core/src/executor/messages_stream.rs +++ b/crates/agentic-server-core/src/executor/messages_stream.rs @@ -665,11 +665,10 @@ mod tests { /// the ONLY way `execute_gateway_calls` can produce a non-"no handler" result /// for a malformed input is by rejecting the args before dispatch (the fix). async fn no_op_registry() -> ToolRegistry { - ToolRegistry::build_with_handlers( - &[], - &crate::tool::GatewayExecutors::from_env(std::sync::Arc::new(reqwest::Client::new())), - ) - .await - .unwrap() + let mut tools = []; + let mut executors = crate::tool::GatewayExecutors::from_env(std::sync::Arc::new(reqwest::Client::new())); + ToolRegistry::build_with_handlers(&mut tools, &mut executors) + .await + .unwrap() } } diff --git a/crates/agentic-server-core/src/executor/persist.rs b/crates/agentic-server-core/src/executor/persist.rs index b839635..863140c 100644 --- a/crates/agentic-server-core/src/executor/persist.rs +++ b/crates/agentic-server-core/src/executor/persist.rs @@ -39,7 +39,7 @@ pub(crate) async fn persist_if_needed( /// Returns [`ExecutorError`] if the storage operation fails. pub async fn persist_response( payload: ResponsePayload, - ctx: RequestContext, + mut ctx: RequestContext, conv_handler: ConversationHandler, resp_handler: ResponseHandler, ) -> ExecutorResult<()> { @@ -52,6 +52,15 @@ pub async fn persist_response( return Ok(()); } + // MCP headers and authorization are request-scoped runtime credentials. + // Tool execution has completed at this point, so remove them before either + // persistence mode builds and serializes effective tool metadata. + if let Some(tools) = ctx.enriched_request.tools.as_mut() { + for tool in tools { + tool.redact_runtime_credentials(); + } + } + // Move output items from payload; handlers build ResponseMetadata from ctx internally. let output_items = payload.output; diff --git a/crates/agentic-server-core/src/lib.rs b/crates/agentic-server-core/src/lib.rs index 1eefba4..27ee038 100644 --- a/crates/agentic-server-core/src/lib.rs +++ b/crates/agentic-server-core/src/lib.rs @@ -15,8 +15,8 @@ pub use storage::{ models::{Conversation as DbConversation, Item as DbItem, Response as DbResponse}, }; pub use tool::{ - CodexNamespaceHandler, FunctionHandler, GatewayExecutor, McpServerEntry, ToolEntry, ToolError, ToolHandler, - ToolOutput, ToolRegistry, ToolType, WebSearchHandler, + CodexNamespaceHandler, FunctionHandler, GatewayExecutor, GatewayExecutorRegistration, McpServerEntry, ToolEntry, + ToolError, ToolHandler, ToolOutput, ToolRegistry, ToolType, WebSearchHandler, }; pub use types::{ CodeInterpreterToolParam, CodexNamespaceMember, CodexNamespaceToolParam, CustomToolCall, diff --git a/crates/agentic-server-core/src/tool/codex.rs b/crates/agentic-server-core/src/tool/codex.rs index beb6258..5130b8a 100644 --- a/crates/agentic-server-core/src/tool/codex.rs +++ b/crates/agentic-server-core/src/tool/codex.rs @@ -5,6 +5,7 @@ use serde_json::{Map, Value}; use crate::events::WireEvent; use crate::types::io::{FunctionTool, FunctionToolCall, OutputItem, ToolChoice}; use crate::types::tools::{CodexNamespaceMember, CodexNamespaceToolParam, NonEmptyToolName, ResponsesTool}; +use crate::utils::common::serialize_to_value_or_custom_default; use super::handler::{ToolError, ToolHandler}; use super::registry::{ToolEntry, ToolType}; @@ -45,27 +46,33 @@ pub fn model_visible_namespace_member_name(namespace: &str, member: &str) -> Str /// namespace members to those flat names first (see /// [`CodexNamespaceHandler::resolve_namespace_members`]). pub(crate) fn insert_namespace_entries(entries: &mut HashMap, p: &CodexNamespaceToolParam) { - let config = serde_json::to_value(p).expect("serialization of known struct is infallible"); - for member in &p.tools { - let CodexNamespaceMember::Function(function) = member else { - continue; - }; - let name = function.name.as_str().to_owned(); - if entries - .insert( - name.clone(), - ToolEntry { - tool_type: ToolType::CodexNamespace, - config: config.clone(), - server_label: Some(p.name.clone()), - handler: None, - }, - ) - .is_some() - { - tracing::warn!(name = %name, namespace = %p.name, "duplicate tool name - previous definition overwritten"); - } - } + serialize_to_value_or_custom_default( + p, + "namespace tool config serialization failed", + |config| { + for member in &p.tools { + let CodexNamespaceMember::Function(function) = member else { + continue; + }; + let name = function.name.as_str().to_owned(); + if entries + .insert( + name.clone(), + ToolEntry { + tool_type: ToolType::CodexNamespace, + config: config.clone(), + server_label: Some(p.name.clone()), + handler: None, + }, + ) + .is_some() + { + tracing::warn!(name = %name, namespace = %p.name, "duplicate tool name - previous definition overwritten"); + } + } + }, + (), + ); } #[derive(Clone, Debug, Eq, Hash, PartialEq)] @@ -412,11 +419,13 @@ fn typed_top_level_registry_keys(tools: &[ResponsesTool]) -> HashMap function.name.as_str().to_owned(), - ResponsesTool::Mcp(mcp) => mcp.name.as_str().to_owned(), ResponsesTool::WebSearch(_) => "web_search".to_owned(), ResponsesTool::FileSearch(_) => "file_search".to_owned(), ResponsesTool::CodeInterpreter(_) => "code_interpreter".to_owned(), - ResponsesTool::Namespace(_) | ResponsesTool::Custom(_) | ResponsesTool::Unknown => return None, + ResponsesTool::Mcp(_) + | ResponsesTool::Namespace(_) + | ResponsesTool::Custom(_) + | ResponsesTool::Unknown => return None, }; tool.tool_type().map(|tool_type| (registry_key, tool_type)) }) @@ -774,10 +783,9 @@ mod tests { } #[test] - fn resolve_namespace_members_rejects_shortened_name_collision_with_later_mcp_tool() { + fn resolve_namespace_members_accepts_native_mcp_without_static_registry_key() { let namespace = "mcp__codex_apps__github"; let member = "_remove_reaction_from_pr_review_comment"; - let shortened_name = model_visible_namespace_member_name(namespace, member); let tools: Vec = serde_json::from_value(serde_json::json!([ { "type": "namespace", @@ -786,16 +794,15 @@ mod tests { }, { "type": "mcp", - "name": shortened_name, "server_label": "fixture", "server_url": "http://127.0.0.1:1/mcp" } ])) .unwrap(); - let err = CodexNamespaceHandler.resolve_namespace_members(&tools).unwrap_err(); - - assert!(err.to_string().contains("collides with a declared MCP tool")); + CodexNamespaceHandler + .resolve_namespace_members(&tools) + .expect("native MCP registry keys are derived after discovery"); } #[test] diff --git a/crates/agentic-server-core/src/tool/executors.rs b/crates/agentic-server-core/src/tool/executors.rs index 8245e96..53ac620 100644 --- a/crates/agentic-server-core/src/tool/executors.rs +++ b/crates/agentic-server-core/src/tool/executors.rs @@ -1,20 +1,44 @@ +use std::collections::HashMap; use std::sync::Arc; -use super::GatewayExecutor; -use super::mcp::{McpClientPool, McpHandler, McpHandlerFactory}; +use super::mcp::{McpClientPool, McpDiscoveredHandler, McpHandler}; use super::registry::ToolType; use super::web_search::WebSearchHandler; +use super::{GatewayExecutor, ToolError}; use crate::types::tools::McpToolParam; +pub enum GatewayExecutorRegistration { + Shared(Arc), + Mcp { + server_label: String, + handlers: Vec, + }, +} + +impl From> for GatewayExecutorRegistration +where + T: GatewayExecutor, +{ + fn from(executor: Arc) -> Self { + Self::Shared(executor) + } +} + +impl From> for GatewayExecutorRegistration { + fn from(executor: Arc) -> Self { + Self::Shared(executor) + } +} + /// Shared, per-server registry of gateway-owned tool executors. /// /// Built once at startup ([`GatewayExecutors::from_env`]) and reused across /// every request. MCP tools are the exception: their handler depends on the -/// per-request `McpToolParam`, so [`GatewayExecutors::mcp_handler`] builds one -/// lazily unless a handler has been pre-registered via [`GatewayExecutors::insert`]. +/// per-request `McpToolParam`, so discovery builds them lazily unless a handler +/// has been pre-registered via [`GatewayExecutors::insert`]. #[derive(Clone, Default)] pub struct GatewayExecutors { - mcp: Option>, + mcp: HashMap>, web_search: Option>, } @@ -22,18 +46,29 @@ impl GatewayExecutors { #[must_use] pub fn from_env(client: Arc) -> Self { Self { - // MCP handlers need request payload information from the MCP tool - // params, so the default executor is created in `mcp_handler`. - mcp: None, + mcp: HashMap::new(), web_search: Some(Arc::new(WebSearchHandler::from_env(client))), } } - pub fn insert(&mut self, executor: Arc) { - match executor.tool_type() { - ToolType::Mcp => self.mcp = Some(executor), - ToolType::WebSearch => self.web_search = Some(executor), - other => tracing::debug!(tool_type = ?other, "gateway executor type has no executor slot"), + pub fn insert(&mut self, registration: impl Into) { + match registration.into() { + GatewayExecutorRegistration::Shared(executor) => match executor.tool_type() { + ToolType::WebSearch => self.web_search = Some(executor), + ToolType::Mcp => { + tracing::debug!("MCP executors must be registered with a server_label and discovered handlers"); + } + other => tracing::debug!(tool_type = ?other, "gateway executor type has no executor slot"), + }, + GatewayExecutorRegistration::Mcp { server_label, handlers } => { + if handlers.is_empty() { + tracing::debug!(server_label, "empty MCP discovered handler registration skipped"); + return; + } + if self.mcp.insert(server_label.clone(), handlers).is_some() { + tracing::debug!(server_label, "replaced MCP discovered handler registration"); + } + } } } @@ -42,31 +77,95 @@ impl GatewayExecutors { self.web_search.clone() } - pub async fn mcp_handler(&self, param: &McpToolParam) -> Option> { - if let Some(handler) = self.mcp.clone() { - return Some(handler); + #[must_use] + pub(crate) fn request_scoped(&self) -> Self { + self.clone() + } + + /// Returns the discovered handlers for one request-declared MCP server. + /// + /// # Errors + /// + /// Returns a configuration error for an invalid declaration or an empty + /// allowed tool set, and an execution error when the server cannot connect. + pub async fn mcp_handler(&mut self, param: &McpToolParam) -> Result, ToolError> { + validate_mcp_execution_options(param)?; + + let server_label = param.server_label.trim(); + if server_label.is_empty() { + return Err(ToolError::Config( + "MCP declaration requires a non-empty server_label".to_owned(), + )); + } + if let Some(cached) = self.mcp.get(server_label) { + return require_non_empty_mcp_handlers( + server_label, + filter_allowed_mcp_handlers(cached, param.allowed_tools.as_deref()), + ); } - McpHandlerFactory::new() - .from_params(param) - .await - .map(|handler| Arc::new(handler) as Arc) + let pool = McpClientPool::from_params(std::slice::from_ref(param)).await; + let Some(client) = pool.get(server_label).cloned() else { + return Err(pool.connection_error(server_label).map_or_else( + || { + ToolError::Config(format!( + "MCP server '{server_label}' has no valid request-declared configuration" + )) + }, + |error| ToolError::Execution(format!("MCP server '{server_label}' failed to connect: {error}")), + )); + }; + let discovered = + McpHandler::discovered_tool_handlers(server_label, client, param.allowed_tools.as_deref()).await?; + let discovered = require_non_empty_mcp_handlers(server_label, discovered)?; + self.mcp.insert(server_label.to_owned(), discovered.clone()); + Ok(discovered) } +} - pub async fn mcp_read_resource_handler(&self, params: &[McpToolParam]) -> Option> { - if let Some(handler) = self.mcp.clone() { - return Some(handler); - } +fn filter_allowed_mcp_handlers( + handlers: &[McpDiscoveredHandler], + allowed_tools: Option<&[String]>, +) -> Vec { + handlers + .iter() + .filter(|handler| { + allowed_tools.is_none_or(|allowed| allowed.iter().any(|name| name == &handler.param.tool_name)) + }) + .cloned() + .collect() +} - let pool = Arc::new(McpClientPool::from_params(params).await); - Some(Arc::new(McpHandler::read_resource(pool))) +fn require_non_empty_mcp_handlers( + server_label: &str, + handlers: Vec, +) -> Result, ToolError> { + if handlers.is_empty() { + return Err(ToolError::Config(format!( + "MCP server '{server_label}' has an empty final allowed tool set" + ))); } + Ok(handlers) +} + +fn validate_mcp_execution_options(param: &McpToolParam) -> Result<(), ToolError> { + if param.connector_id.is_some() { + return Err(ToolError::Config( + "MCP connector_id is not supported; configure server_url instead".to_owned(), + )); + } + if param.require_approval.as_deref() != Some("never") { + return Err(ToolError::Config( + "MCP require_approval must be explicitly set to 'never'; approval gating is not yet supported".to_owned(), + )); + } + Ok(()) } impl std::fmt::Debug for GatewayExecutors { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.debug_struct("GatewayExecutors") - .field("mcp", &self.mcp.is_some()) + .field("mcp_server_handlers", &self.mcp.len()) .field("web_search", &self.web_search.is_some()) .finish() } @@ -76,20 +175,111 @@ impl std::fmt::Debug for GatewayExecutors { mod tests { use std::sync::Arc; - use super::GatewayExecutors; - use crate::tool::mcp::READ_MCP_RESOURCE_TOOL_NAME; - use crate::types::tools::McpToolParam; + use super::{GatewayExecutorRegistration, GatewayExecutors, validate_mcp_execution_options}; + use crate::tool::mcp::{McpDiscoveredHandler, McpHandler}; + use crate::types::tools::{McpDiscoveredToolParam, McpToolParam}; + + fn mcp_param(value: serde_json::Value) -> McpToolParam { + serde_json::from_value(value).unwrap() + } + + fn discovered_handler(tool_name: &str) -> McpDiscoveredHandler { + McpDiscoveredHandler { + param: McpDiscoveredToolParam { + server_label: "counter".to_owned(), + tool_name: tool_name.to_owned(), + internal_name: format!("mcp__counter__{tool_name}"), + tool: serde_json::from_value(serde_json::json!({ + "name": tool_name, + "inputSchema": {"type": "object"} + })) + .unwrap(), + }, + handler: Arc::new(McpHandler::discovered_tool_spec_only()), + } + } + + #[test] + fn mcp_execution_allows_explicit_never_approval_policy() { + let param = mcp_param(serde_json::json!({ + "server_label": "counter", + "server_url": "http://localhost:8000/mcp", + "require_approval": "never" + })); + + validate_mcp_execution_options(¶m).unwrap(); + } + + #[test] + fn mcp_execution_rejects_omitted_approval_policy() { + let param = mcp_param(serde_json::json!({ + "server_label": "counter", + "server_url": "http://localhost:8000/mcp" + })); + + let error = validate_mcp_execution_options(¶m).unwrap_err(); + assert!(error.to_string().contains("must be explicitly set to 'never'")); + } + + #[test] + fn mcp_execution_rejects_unsupported_approval_policy() { + let param = mcp_param(serde_json::json!({ + "server_label": "counter", + "server_url": "http://localhost:8000/mcp", + "require_approval": "always" + })); + + let error = validate_mcp_execution_options(¶m).unwrap_err(); + assert!(error.to_string().contains("approval gating is not yet supported")); + } + + #[test] + fn mcp_execution_rejects_connector_id() { + let param = mcp_param(serde_json::json!({ + "server_label": "counter", + "connector_id": "connector_dropbox" + })); + + let error = validate_mcp_execution_options(¶m).unwrap_err(); + assert!(error.to_string().contains("connector_id is not supported")); + } #[tokio::test] - async fn from_env_builds_request_scoped_mcp_handler_from_params() { - let executors = GatewayExecutors::from_env(Arc::new(reqwest::Client::new())); - let param: McpToolParam = serde_json::from_value(serde_json::json!({ - "name": READ_MCP_RESOURCE_TOOL_NAME, - "server_label": "missing" - })) - .expect("mcp tool param"); - - assert!(executors.mcp_handler(¶m).await.is_some()); - assert!(executors.web_search_handler().is_some()); + async fn cached_mcp_handlers_apply_request_allowed_tools() { + let mut executors = GatewayExecutors::default(); + executors.insert(GatewayExecutorRegistration::Mcp { + server_label: "counter".to_owned(), + handlers: vec![discovered_handler("read"), discovered_handler("delete")], + }); + let param = mcp_param(serde_json::json!({ + "server_label": "counter", + "allowed_tools": ["read"], + "require_approval": "never" + })); + + let handlers = executors.mcp_handler(¶m).await.unwrap(); + + assert_eq!(handlers.len(), 1); + assert_eq!(handlers[0].param.tool_name, "read"); + } + + #[tokio::test] + async fn cached_mcp_handlers_reject_empty_final_allowed_set() { + let mut executors = GatewayExecutors::default(); + executors.insert(GatewayExecutorRegistration::Mcp { + server_label: "counter".to_owned(), + handlers: vec![discovered_handler("delete")], + }); + let param = mcp_param(serde_json::json!({ + "server_label": "counter", + "allowed_tools": ["read"], + "require_approval": "never" + })); + + let Err(error) = executors.mcp_handler(¶m).await else { + panic!("expected empty allowed set to be rejected"); + }; + + assert!(error.to_string().contains("empty final allowed tool set")); } } diff --git a/crates/agentic-server-core/src/tool/mcp/client.rs b/crates/agentic-server-core/src/tool/mcp/client.rs index c82a648..1d7e4ef 100644 --- a/crates/agentic-server-core/src/tool/mcp/client.rs +++ b/crates/agentic-server-core/src/tool/mcp/client.rs @@ -10,7 +10,7 @@ use rmcp::ClientHandler; use rmcp::ServiceExt; use rmcp::model::{ CallToolRequestParams, CallToolResult, ClientCapabilities, ClientInfo, ClientRequest, Implementation, - InitializeRequestParams, ProtocolVersion, ReadResourceRequestParams, ReadResourceResult, ServerResult, Tool, + InitializeRequestParams, ProtocolVersion, ServerResult, Tool, }; use rmcp::service::{ClientInitializeError, PeerRequestOptions, RoleClient, RunningService, ServiceError}; use rmcp::transport::StreamableHttpClientTransport; @@ -29,7 +29,6 @@ pub enum McpOperation { Connect, ListTools, CallTool, - ReadResource, } impl fmt::Display for McpOperation { @@ -38,7 +37,6 @@ impl fmt::Display for McpOperation { Self::Connect => f.write_str("connect"), Self::ListTools => f.write_str("tools/list"), Self::CallTool => f.write_str("tools/call"), - Self::ReadResource => f.write_str("resources/read"), } } } @@ -277,27 +275,6 @@ impl McpClient { }), } } - - /// Reads a resource by URI from the connected MCP server. - /// - /// # Errors - /// - /// Returns [`McpError::Timeout`] if `resources/read` exceeds the configured timeout. - /// Returns [`McpError::Operation`] if the server rejects or fails the request. - pub async fn read_resource(&self, uri: &str) -> Result { - tokio::time::timeout( - self.tool_timeout, - self.inner.read_resource(ReadResourceRequestParams::new(uri.to_owned())), - ) - .await - .map_err(|_| McpError::Timeout { - operation: McpOperation::ReadResource, - })? - .map_err(|source| McpError::Operation { - operation: McpOperation::ReadResource, - source, - }) - } } /// Build the HTTP client used by an MCP connection with DNS pinned to the diff --git a/crates/agentic-server-core/src/tool/mcp/codex_mcp_resource.rs b/crates/agentic-server-core/src/tool/mcp/codex_mcp_resource.rs deleted file mode 100644 index 893e0dc..0000000 --- a/crates/agentic-server-core/src/tool/mcp/codex_mcp_resource.rs +++ /dev/null @@ -1,104 +0,0 @@ -//! Bridge support for Codex's local `read_mcp_resource` function tool. -//! -//! Codex should be configured with the MCP server label and URL in -//! `$CODEX_HOME/config.toml`, for example: -//! -//! ```toml -//! [mcp_servers.server_label] -//! url = "http://localhost:8000/mcp" -//! default_tools_approval_mode = "approve" -//! ``` -//! -//! When Codex is pointed at agentic-api as its Responses provider, the gateway -//! uses metadata on the `read_mcp_resource` function declaration to map the -//! model-provided `server` argument (for example `server_label`) to that MCP URL. - -use std::collections::HashMap; - -use serde::Deserialize; - -use crate::types::tools::{FunctionToolParam, McpToolParam, NonEmptyToolName}; -use crate::utils::common::deserialize_from_value_or_custom_default; - -use super::READ_MCP_RESOURCE_TOOL_NAME; - -#[derive(Debug, Deserialize)] -struct McpFunctionMetadata { - #[serde(default)] - mcp_servers: HashMap, - #[serde(default)] - server_label: Option, - #[serde(default, alias = "url")] - server_url: Option, - #[serde(default)] - headers: Option>, -} - -#[derive(Debug, Deserialize)] -struct McpFunctionServer { - #[serde(alias = "url")] - server_url: String, - #[serde(default)] - headers: Option>, -} - -#[must_use] -pub fn maybe_mcp_function(p: &FunctionToolParam) -> Option> { - (p.name.as_str() == READ_MCP_RESOURCE_TOOL_NAME).then(|| mcp_params_from_function(p)) -} - -fn mcp_params_from_function(p: &FunctionToolParam) -> Vec { - let Some(metadata) = p.extra.get("metadata") else { - return Vec::new(); - }; - - deserialize_from_value_or_custom_default( - metadata.clone(), - "read_mcp_resource metadata is not MCP metadata", - mcp_params_from_metadata, - Vec::new(), - ) -} - -fn mcp_params_from_metadata(metadata: McpFunctionMetadata) -> Vec { - let Ok(name) = NonEmptyToolName::try_from(READ_MCP_RESOURCE_TOOL_NAME) else { - return Vec::new(); - }; - - if metadata.mcp_servers.is_empty() { - return match (metadata.server_label, metadata.server_url) { - (Some(server_label), Some(server_url)) => vec![McpToolParam { - name, - server_label: Some(server_label), - server_url: Some(server_url), - headers: metadata.headers, - }], - _ => Vec::new(), - }; - } - - let server_count = metadata.mcp_servers.len(); - if server_count == 1 { - let Some((server_label, server)) = metadata.mcp_servers.into_iter().next() else { - return Vec::new(); - }; - return vec![McpToolParam { - name, - server_label: Some(server_label), - server_url: Some(server.server_url), - headers: server.headers, - }]; - } - - let mut params = Vec::with_capacity(server_count); - for (server_label, server) in metadata.mcp_servers { - params.push(McpToolParam { - name: name.clone(), - server_label: Some(server_label), - server_url: Some(server.server_url), - headers: server.headers, - }); - } - - params -} diff --git a/crates/agentic-server-core/src/tool/mcp/handler.rs b/crates/agentic-server-core/src/tool/mcp/handler.rs index 5972377..3b6ba7e 100644 --- a/crates/agentic-server-core/src/tool/mcp/handler.rs +++ b/crates/agentic-server-core/src/tool/mcp/handler.rs @@ -1,30 +1,69 @@ +use std::collections::{HashMap, HashSet}; use std::future::Future; use std::pin::Pin; use std::sync::Arc; +use serde::Deserialize; use serde_json::Value; use crate::tool::{GatewayExecutor, ToolError, ToolHandler, ToolOutput, ToolType}; use crate::types::io::FunctionTool; use crate::types::io::output::{FunctionToolCall, GatewayCallStatus, McpToolCall, OutputItem}; -use crate::types::tools::{McpDiscoveredToolParam, McpToolParam}; -use crate::utils::common::{ - deserialize_from_str, deserialize_from_str_opt, deserialize_from_value, deserialize_from_value_opt, - serialize_to_string, -}; +use crate::types::tools::{McpDiscoveredToolParam, ResponsesTool}; +use crate::utils::common::{deserialize_from_str_opt, deserialize_from_value, serialize_to_string}; -use super::{McpClient, McpClientPool, READ_MCP_RESOURCE_TOOL_NAME, ReadResourceArgs, read_mcp_resource_spec}; +use super::{McpClient, McpError}; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub(crate) struct McpToolRef { + server_label: String, + tool_name: String, +} + +impl From<&McpDiscoveredToolParam> for McpToolRef { + fn from(param: &McpDiscoveredToolParam) -> Self { + Self { + server_label: param.server_label.clone(), + tool_name: param.tool_name.clone(), + } + } +} + +/// Request-scoped mapping from model-visible internal names to public MCP +/// server and tool identities. +#[derive(Clone, Debug, Default)] +pub(crate) struct McpToolMap { + calls: HashMap, +} + +impl McpToolMap { + pub(crate) fn record(&mut self, internal_name: String, tool_ref: McpToolRef) { + debug_assert!(self.calls.insert(internal_name, tool_ref).is_none()); + } + + pub(crate) fn tool_ref(&self, internal_name: &str) -> Option<&McpToolRef> { + self.calls.get(internal_name) + } + + pub(crate) fn contains_server_label(&self, server_label: &str) -> bool { + self.calls + .values() + .any(|tool_ref| tool_ref.server_label == server_label) + } +} #[must_use] -pub(crate) fn output_item(call: &FunctionToolCall, output: &ToolOutput, status: GatewayCallStatus) -> OutputItem { - let arguments = arguments_value(&call.arguments); - let server = server_from_arguments(&arguments).unwrap_or_default(); +pub(crate) fn output_item( + call: &FunctionToolCall, + output: &ToolOutput, + status: GatewayCallStatus, + tool_ref: &McpToolRef, +) -> OutputItem { + let arguments = + deserialize_from_str_opt::(&call.arguments).unwrap_or_else(|| Value::Object(serde_json::Map::new())); let parsed_output = deserialize_from_str_opt::(&output.output); let error = if status == GatewayCallStatus::Failed { - parsed_output - .as_ref() - .and_then(error_from_output) - .or_else(|| Some(output.output.clone())) + Some(error_text_from_output(&output.output)) } else { None }; @@ -33,8 +72,8 @@ pub(crate) fn output_item(call: &FunctionToolCall, output: &ToolOutput, status: OutputItem::McpToolCall(McpToolCall::new( call_output_id(call), - server, - call.name.clone(), + tool_ref.server_label.clone(), + tool_ref.tool_name.clone(), arguments, status, result, @@ -43,14 +82,14 @@ pub(crate) fn output_item(call: &FunctionToolCall, output: &ToolOutput, status: } #[must_use] -pub(crate) fn started_output_item(call: &FunctionToolCall) -> OutputItem { - let arguments = arguments_value(&call.arguments); - let server = server_from_arguments(&arguments).unwrap_or_default(); +pub(crate) fn started_output_item(call: &FunctionToolCall, tool_ref: &McpToolRef) -> OutputItem { + let arguments = + deserialize_from_str_opt::(&call.arguments).unwrap_or_else(|| Value::Object(serde_json::Map::new())); OutputItem::McpToolCall(McpToolCall::new( call_output_id(call), - server, - call.name.clone(), + tool_ref.server_label.clone(), + tool_ref.tool_name.clone(), arguments, GatewayCallStatus::InProgress, None, @@ -58,200 +97,108 @@ pub(crate) fn started_output_item(call: &FunctionToolCall) -> OutputItem { )) } -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum McpSpec { - Resources, - Tool, -} - -impl McpSpec { - #[must_use] - pub fn from_param_name(name: &str) -> Self { - if name == READ_MCP_RESOURCE_TOOL_NAME { - Self::Resources - } else { - Self::Tool - } - } -} - -/// Maps the model-facing MCP spec shape to the resource needed to execute it. -pub enum McpHandlerKind { - ReadResource { - spec: McpSpec, - resource: Option>, - }, - ToolCall { - spec: McpSpec, - client: Option>, - }, -} - +/// Executes one tool discovered from an MCP server. +/// +/// A handler with no client is used only while normalizing the discovered tool +/// metadata stored on `McpToolParam` into model-visible function tools. pub struct McpHandler { - kind: McpHandlerKind, + client: Option>, } -#[derive(Debug, Default)] -pub struct McpHandlerFactory; +#[derive(Deserialize)] +struct McpToolNormalizationParams { + #[serde(rename = "_agentic_discovered_tools", default)] + discovered_tools: Vec, +} +#[derive(Clone)] pub struct McpDiscoveredHandler { pub param: McpDiscoveredToolParam, pub handler: Arc, } -impl McpHandlerFactory { - #[must_use] - pub const fn new() -> Self { - Self - } - - pub async fn from_params(&self, param: &McpToolParam) -> Option { - let resource = Arc::new(McpClientPool::from_params(std::slice::from_ref(param)).await); - match McpSpec::from_param_name(param.name.as_str()) { - McpSpec::Resources => Some(self.read_resource(resource)), - McpSpec::Tool => resource.client_for_param(param).map(|client| self.tool_call(client)), - } - } - - #[must_use] - pub const fn read_resource_spec(&self) -> McpSpec { - McpSpec::Resources - } - - #[must_use] - pub const fn tool_call_spec(&self) -> McpSpec { - McpSpec::Tool - } - - #[must_use] - pub fn read_resource(&self, resource: Arc) -> McpHandler { - McpHandler::with_kind(McpHandlerKind::ReadResource { - spec: self.read_resource_spec(), - resource: Some(resource), - }) - } - - #[must_use] - pub fn tool_call(&self, client: Arc) -> McpHandler { - McpHandler::with_kind(McpHandlerKind::ToolCall { - spec: self.tool_call_spec(), - client: Some(client), - }) - } -} - -impl ToolHandler for McpHandlerFactory { - fn tool_type(&self) -> ToolType { - ToolType::Mcp - } - - fn validate(&self, _param: &Value) -> Result<(), ToolError> { - Ok(()) - } - - fn normalize(&self, param: &Value) -> Vec { - McpHandler::spec_from_param(param).normalize(param) - } -} - impl McpHandler { - #[must_use] - pub fn with_kind(kind: McpHandlerKind) -> Self { - Self { kind } - } - - #[must_use] - pub const fn spec(&self) -> McpSpec { - match &self.kind { - McpHandlerKind::ReadResource { spec, .. } | McpHandlerKind::ToolCall { spec, .. } => *spec, + /// Validates request-level MCP server identities before any discovery I/O. + /// + /// # Errors + /// + /// Returns [`ToolError::Config`] when multiple MCP declarations use the + /// same `server_label`. + pub(crate) fn validate_server_labels(tools: &[ResponsesTool]) -> Result<(), ToolError> { + let mut server_labels = HashSet::new(); + for param in tools.iter().filter_map(|tool| match tool { + ResponsesTool::Mcp(param) => Some(param), + _ => None, + }) { + if !server_labels.insert(param.server_label.clone()) { + return Err(ToolError::Config(format!( + "duplicate MCP declarations are not allowed for server_label '{}'", + param.server_label + ))); + } } + Ok(()) } #[must_use] - pub fn read_resource_spec_only() -> Self { - Self::with_kind(McpHandlerKind::ReadResource { - spec: McpSpec::Resources, - resource: None, - }) - } - - #[must_use] - pub fn read_resource(pool: Arc) -> Self { - Self::with_kind(McpHandlerKind::ReadResource { - spec: McpSpec::Resources, - resource: Some(pool), - }) - } - - #[must_use] - pub fn discovered_tool_spec_only() -> Self { - Self::with_kind(McpHandlerKind::ToolCall { - spec: McpSpec::Tool, - client: None, - }) + pub const fn discovered_tool_spec_only() -> Self { + Self { client: None } } #[must_use] pub fn tool_call(client: Arc) -> Self { - Self::with_kind(McpHandlerKind::ToolCall { - spec: McpSpec::Tool, - client: Some(client), - }) + Self { client: Some(client) } } - pub async fn discovered_tool_handlers(&self, factory: &McpHandlerFactory) -> Vec { - let McpHandlerKind::ReadResource { - resource: Some(pool), .. - } = &self.kind - else { - return Vec::new(); - }; + /// Discovers and normalizes the tools exposed by one MCP server. + /// + /// # Errors + /// + /// Returns [`ToolError::Execution`] when the server's `tools/list` + /// operation fails or times out. + pub async fn discovered_tool_handlers( + server_label: &str, + client: Arc, + allowed_tools: Option<&[String]>, + ) -> Result, ToolError> { + let tools = client + .list_tools() + .await + .map_err(|error| mcp_discovery_error(server_label, &error))?; let mut discovered_handlers = Vec::new(); - for (server_label, client) in pool.iter() { - let tools = match client.list_tools().await { - Ok(tools) => tools, - Err(error) => { - tracing::warn!( - server_label = %server_label, - error = %error, - "failed to list MCP tools" - ); - continue; - } - }; - - for tool in tools { - let tool_name = tool.name.to_string(); - let exposed_name = format!("{server_label}__{tool_name}"); - discovered_handlers.push(McpDiscoveredHandler { - param: McpDiscoveredToolParam { - server_label: server_label.clone(), - tool_name, - exposed_name, - tool, - }, - handler: Arc::new(factory.tool_call(Arc::clone(client))), - }); + let mut internal_names = HashMap::new(); + for tool in tools { + let tool_name = tool.name.to_string(); + if allowed_tools.is_some_and(|allowed| !allowed.iter().any(|name| name == &tool_name)) { + continue; } + let internal_name = internal_mcp_tool_name(server_label, &tool_name, &mut internal_names); + discovered_handlers.push(McpDiscoveredHandler { + param: McpDiscoveredToolParam { + server_label: server_label.to_owned(), + tool_name, + internal_name, + tool, + }, + handler: Arc::new(Self::tool_call(Arc::clone(&client))), + }); } - discovered_handlers + Ok(discovered_handlers) } - /// Spec-only handler for normalizing a `ToolEntry` config with no live - /// connection, picking resource vs tool-call shape by inspecting `param`. + /// Returns the spec-only MCP tool handler used during request normalization. #[must_use] - pub fn spec_from_param(param: &Value) -> Self { - match deserialize_from_value_opt::(param.clone()).map_or(McpSpec::Tool, |declared| { - McpSpec::from_param_name(declared.name.as_str()) - }) { - McpSpec::Resources => Self::read_resource_spec_only(), - McpSpec::Tool => Self::discovered_tool_spec_only(), - } + pub const fn spec_from_param(_param: &Value) -> Self { + Self::discovered_tool_spec_only() } } +fn mcp_discovery_error(server_label: &str, error: &McpError) -> ToolError { + ToolError::Execution(format!("tools/list failed for MCP server '{server_label}': {error}")) +} + impl ToolHandler for McpHandler { fn tool_type(&self) -> ToolType { ToolType::Mcp @@ -262,28 +209,14 @@ impl ToolHandler for McpHandler { } fn normalize(&self, param: &Value) -> Vec { - match &self.kind { - McpHandlerKind::ReadResource { - spec: McpSpec::Resources, - .. - } => vec![read_mcp_resource_spec()], - McpHandlerKind::ToolCall { - spec: McpSpec::Tool, .. - } => match deserialize_from_value::(param.clone()) { - Ok(discovered) => vec![mcp_tool_to_function_tool(&discovered.exposed_name, &discovered.tool)], - Err(error) => { - tracing::warn!(error = %error, "invalid MCP tool param"); - Vec::new() - } - }, - McpHandlerKind::ReadResource { - spec: McpSpec::Tool, .. - } - | McpHandlerKind::ToolCall { - spec: McpSpec::Resources, - .. - } => { - tracing::warn!("invalid MCP handler kind/spec pairing"); + match deserialize_from_value::(param.clone()) { + Ok(params) => params + .discovered_tools + .iter() + .map(discovered_mcp_function_tool) + .collect(), + Err(error) => { + tracing::warn!(error = %error, "invalid MCP tool param"); Vec::new() } } @@ -303,50 +236,19 @@ impl GatewayExecutor for McpHandler { let config = config.clone(); Box::pin(async move { - let output = match &self.kind { - McpHandlerKind::ReadResource { resource, .. } => { - let Some(pool) = resource else { - return Err(ToolError::Config( - "read_mcp_resource spec-only handler cannot execute tools".to_owned(), - )); - }; - execute_read_resource(pool, &arguments).await? - } - McpHandlerKind::ToolCall { client, .. } => { - let Some(client) = client else { - return Err(ToolError::Config( - "MCP tool spec-only handler cannot execute tools".to_owned(), - )); - }; - let param = mcp_tool_param(&config)?; - execute_tool_call(client, ¶m.server_label, ¶m.tool_name, &arguments).await? - } + let Some(client) = &self.client else { + return Err(ToolError::Config( + "MCP tool spec-only handler cannot execute tools".to_owned(), + )); }; + let param = mcp_tool_param(&config)?; + let output = execute_tool_call(client, ¶m.server_label, ¶m.tool_name, &arguments).await?; Ok(ToolOutput { call_id, output }) }) } } -async fn execute_read_resource(pool: &McpClientPool, arguments: &str) -> Result { - let args = deserialize_from_str::(arguments) - .map_err(|error| ToolError::Execution(format!("invalid read_mcp_resource arguments: {error}")))?; - - let client = pool - .get(&args.server) - .ok_or_else(|| match pool.connection_error(&args.server) { - Some(error) => ToolError::Execution(format!("MCP server '{}' failed to connect: {error}", args.server)), - None => ToolError::Execution(format!("unknown MCP server: {}", args.server)), - })?; - - let result = client - .read_resource(&args.uri) - .await - .map_err(|error| ToolError::Execution(format!("resources/read failed: {error}")))?; - - serialize_mcp_result(&result, "resources/read") -} - async fn execute_tool_call( client: &McpClient, server_label: &str, @@ -360,12 +262,31 @@ async fn execute_tool_call( .await .map_err(|error| ToolError::Execution(format!("tools/call failed for MCP server '{server_label}': {error}")))?; - serialize_mcp_result(&result, "tools/call") + mcp_tool_result_text(&result) } -fn serialize_mcp_result(result: &impl serde::Serialize, operation: &str) -> Result { - serialize_to_string(result) - .map_err(|error| ToolError::Execution(format!("failed to serialize {operation} result: {error}"))) +fn mcp_tool_result_text(result: &rmcp::model::CallToolResult) -> Result { + let text = result + .content + .iter() + .filter_map(|content| content.as_text().map(|text| text.text.as_str())) + .collect::>() + .join("\n"); + let output = if !text.is_empty() { + text + } else if let Some(structured_content) = &result.structured_content { + serialize_to_string(structured_content) + .map_err(|error| ToolError::Execution(format!("failed to serialize MCP structured content: {error}")))? + } else { + serialize_to_string(&result.content) + .map_err(|error| ToolError::Execution(format!("failed to serialize MCP tool content: {error}")))? + }; + + if result.is_error == Some(true) { + Err(ToolError::Execution(output)) + } else { + Ok(output) + } } fn mcp_tool_param(value: &Value) -> Result { @@ -373,6 +294,60 @@ fn mcp_tool_param(value: &Value) -> Result { .map_err(|error| ToolError::Config(format!("invalid MCP tool config: {error}"))) } +pub(crate) fn discovered_mcp_function_tool(param: &McpDiscoveredToolParam) -> FunctionTool { + mcp_tool_to_function_tool(¶m.internal_name, ¶m.tool) +} + +#[cfg(test)] +const INTERNAL_DISCOVERED_TOOLS_KEY: &str = "_agentic_discovered_tools"; +const INTERNAL_MCP_PREFIX: &str = "mcp__"; +const MAX_INTERNAL_TOOL_NAME_LEN: usize = 64; + +fn internal_mcp_tool_name(server_label: &str, tool_name: &str, used: &mut HashMap) -> String { + let identity = (server_label.to_owned(), tool_name.to_owned()); + let base = sanitize_internal_tool_name(&format!("{INTERNAL_MCP_PREFIX}{server_label}__{tool_name}")); + if base.len() <= MAX_INTERNAL_TOOL_NAME_LEN && used.get(&base).is_none_or(|existing| existing == &identity) { + used.insert(base.clone(), identity); + return base; + } + + let mut attempt = 0_u32; + loop { + let hash_input = if attempt == 0 { + format!("{server_label}:{tool_name}") + } else { + format!("{server_label}:{tool_name}:{attempt}") + }; + let suffix = format!("__{:010x}", stable_name_hash(&hash_input) & 0xff_ffff_ffff); + let prefix_len = MAX_INTERNAL_TOOL_NAME_LEN.saturating_sub(suffix.len()); + let candidate = format!("{}{}", &base[..base.len().min(prefix_len)], suffix); + if used.get(&candidate).is_none_or(|existing| existing == &identity) { + used.insert(candidate.clone(), identity); + return candidate; + } + attempt = attempt.saturating_add(1); + } +} + +fn sanitize_internal_tool_name(value: &str) -> String { + value + .chars() + .map(|ch| { + if ch.is_ascii_alphanumeric() || matches!(ch, '_' | '-') { + ch + } else { + '_' + } + }) + .collect() +} + +fn stable_name_hash(value: &str) -> u64 { + value.as_bytes().iter().fold(0xcbf2_9ce4_8422_2325, |hash, byte| { + (hash ^ u64::from(*byte)).wrapping_mul(0x0000_0100_0000_01b3) + }) +} + fn mcp_tool_to_function_tool(name: &str, tool: &rmcp::model::Tool) -> FunctionTool { let mut parameters = Value::Object(tool.input_schema.as_ref().clone()); @@ -391,26 +366,11 @@ fn mcp_tool_to_function_tool(name: &str, tool: &rmcp::model::Tool) -> FunctionTo } } -fn arguments_value(arguments: &str) -> Value { - deserialize_from_str_opt(arguments).unwrap_or_else(|| Value::Object(serde_json::Map::new())) -} - -fn server_from_arguments(arguments: &Value) -> Option { - arguments - .get("server") - .and_then(Value::as_str) - .map(str::trim) - .filter(|server| !server.is_empty()) - .map(str::to_owned) -} - -fn error_from_output(output: &Value) -> Option { - output - .get("error") - .and_then(Value::as_str) - .map(str::trim) - .filter(|error| !error.is_empty()) - .map(str::to_owned) +fn error_text_from_output(output: &str) -> String { + deserialize_from_str_opt::(output) + .and_then(|value| value.get("error").and_then(Value::as_str).map(str::to_owned)) + .filter(|error| !error.trim().is_empty()) + .unwrap_or_else(|| output.to_owned()) } fn call_output_id(call: &FunctionToolCall) -> String { @@ -422,3 +382,161 @@ fn call_output_id(call: &FunctionToolCall) -> String { } crate::utils::uuid7_str("mcp_") } + +#[cfg(test)] +mod tests { + use super::*; + + fn discovered_param() -> McpDiscoveredToolParam { + McpDiscoveredToolParam { + server_label: "counter".to_owned(), + tool_name: "increment".to_owned(), + internal_name: "mcp__counter__increment".to_owned(), + tool: serde_json::from_value(serde_json::json!({ + "name": "increment", + "description": "Increment the counter", + "inputSchema": {"type": "object"} + })) + .expect("valid MCP tool"), + } + } + + #[test] + fn native_mcp_param_without_discovery_normalizes_to_no_functions() { + let param = serde_json::json!({ + "server_label": "counter", + "server_url": "http://127.0.0.1:8000/mcp" + }); + + let handler = McpHandler::spec_from_param(¶m); + + assert!(handler.normalize(¶m).is_empty()); + } + + #[test] + fn discovered_tool_normalizes_to_function_tool() { + let handler = McpHandler::discovered_tool_spec_only(); + let config = serde_json::json!({ + (INTERNAL_DISCOVERED_TOOLS_KEY): [discovered_param()] + }); + + let normalized = handler.normalize(&config); + + assert_eq!(normalized.len(), 1); + assert_eq!(normalized[0].name, "mcp__counter__increment"); + assert_eq!( + normalized[0].parameters.as_ref().unwrap()["properties"], + serde_json::json!({}) + ); + } + + #[test] + fn tools_list_failure_preserves_upstream_cause_as_execution_error() { + let upstream_error = super::super::McpError::Timeout { + operation: super::super::McpOperation::ListTools, + }; + + let error = mcp_discovery_error("counter", &upstream_error); + + assert!(matches!(error, ToolError::Execution(_))); + assert!(error.to_string().contains("tools/list failed for MCP server 'counter'")); + assert!(error.to_string().contains("timed out during tools/list")); + } + + #[test] + fn internal_tool_names_include_server_and_tool_identity() { + let mut used = HashMap::new(); + + let name = internal_mcp_tool_name("counter server", "increment/value", &mut used); + + assert_eq!(name, "mcp__counter_server__increment_value"); + } + + #[test] + fn tool_map_resolves_internal_name_to_public_mcp_identity() { + let param = discovered_param(); + let tool_ref = McpToolRef::from(¶m); + let mut map = McpToolMap::default(); + + map.record(param.internal_name.clone(), tool_ref.clone()); + + assert_eq!(map.tool_ref(¶m.internal_name), Some(&tool_ref)); + assert!(map.contains_server_label("counter")); + assert!(!map.contains_server_label("missing")); + } + + #[test] + fn discovered_tool_output_uses_public_mcp_identity() { + let call = FunctionToolCall { + id: "fc_1".to_owned(), + call_id: "call_1".to_owned(), + name: "mcp__counter__increment".to_owned(), + arguments: "{}".to_owned(), + status: crate::types::event::MessageStatus::Completed, + namespace: None, + }; + let output = ToolOutput { + call_id: call.call_id.clone(), + output: "1".to_owned(), + }; + let tool_ref = McpToolRef::from(&discovered_param()); + + let OutputItem::McpToolCall(item) = output_item(&call, &output, GatewayCallStatus::Completed, &tool_ref) else { + panic!("expected mcp_tool_call"); + }; + + assert_eq!(item.server, "counter"); + assert_eq!(item.tool, "increment"); + assert_eq!(item.arguments, serde_json::json!({})); + assert_eq!(item.result, Some(serde_json::json!(1))); + } + + #[test] + fn successful_mcp_result_exposes_text_instead_of_protocol_envelope() { + let result = serde_json::from_value::(serde_json::json!({ + "content": [{"type": "text", "text": "42"}], + "isError": false + })) + .expect("valid MCP result"); + + assert_eq!(mcp_tool_result_text(&result).unwrap(), "42"); + } + + #[test] + fn mcp_error_result_becomes_execution_failure() { + let result = serde_json::from_value::(serde_json::json!({ + "content": [{"type": "text", "text": "missing field `b`"}], + "isError": true + })) + .expect("valid MCP result"); + + let error = mcp_tool_result_text(&result).unwrap_err(); + assert!(matches!(error, ToolError::Execution(message) if message == "missing field `b`")); + } + + #[test] + fn failed_mcp_output_uses_execution_error_text() { + let call = FunctionToolCall { + id: "fc_1".to_owned(), + call_id: "call_1".to_owned(), + name: "mcp__counter__sum".to_owned(), + arguments: r#"{"a":40}"#.to_owned(), + status: crate::types::event::MessageStatus::Completed, + namespace: None, + }; + let output = ToolOutput { + call_id: call.call_id.clone(), + output: r#"{"error":"missing field `b`"}"#.to_owned(), + }; + let mut param = discovered_param(); + param.tool_name = "sum".to_owned(); + let tool_ref = McpToolRef::from(¶m); + + let item = output_item(&call, &output, GatewayCallStatus::Failed, &tool_ref); + let json = serde_json::to_value(item).expect("serializable mcp_tool_call"); + + assert_eq!(json["status"], "failed"); + assert!(json["result"].is_null()); + assert_eq!(json["error"], "missing field `b`"); + } +} diff --git a/crates/agentic-server-core/src/tool/mcp/mod.rs b/crates/agentic-server-core/src/tool/mcp/mod.rs index 88633da..3c29c4f 100644 --- a/crates/agentic-server-core/src/tool/mcp/mod.rs +++ b/crates/agentic-server-core/src/tool/mcp/mod.rs @@ -1,13 +1,8 @@ pub mod client; -pub mod codex_mcp_resource; pub mod handler; pub mod pool; -pub mod read_resource; pub mod registry; pub use client::{McpClient, McpError, McpOperation}; -pub use codex_mcp_resource::maybe_mcp_function; -pub use handler::{McpDiscoveredHandler, McpHandler, McpHandlerFactory, McpHandlerKind, McpSpec}; +pub use handler::{McpDiscoveredHandler, McpHandler}; pub use pool::{McpClientPool, McpServerEntry}; -pub use read_resource::{READ_MCP_RESOURCE_TOOL_NAME, ReadResourceArgs, read_mcp_resource_spec}; -pub use registry::{build_mcp_registry, insert_mcp_entry}; diff --git a/crates/agentic-server-core/src/tool/mcp/pool.rs b/crates/agentic-server-core/src/tool/mcp/pool.rs index 33927bd..e82931a 100644 --- a/crates/agentic-server-core/src/tool/mcp/pool.rs +++ b/crates/agentic-server-core/src/tool/mcp/pool.rs @@ -86,51 +86,15 @@ impl McpClientPool { self.clients.get(server_label) } - pub fn client_for_param(&self, param: &McpToolParam) -> Option> { - let Some(server_label) = clean_string(param.server_label.as_deref()) else { - tracing::debug!(name = %param.name, "MCP tool param has no server_label"); - return None; - }; - - let Some(client) = self.get(&server_label).cloned() else { - if let Some(error) = self.connection_error(&server_label) { - tracing::warn!( - server_label, - name = %param.name, - error, - "MCP server failed to connect" - ); - } else { - tracing::warn!( - server_label, - name = %param.name, - "MCP server is not connected" - ); - } - return None; - }; - - Some(client) - } - #[must_use] pub fn connection_error(&self, server_label: &str) -> Option<&str> { self.connection_errors.get(server_label).map(String::as_str) } - - pub fn iter(&self) -> impl Iterator)> { - self.clients.iter() - } - - #[must_use] - pub fn is_empty(&self) -> bool { - self.clients.is_empty() - } } fn server_entry_from_param(param: &McpToolParam) -> Option<(String, McpServerEntry)> { - let Some(server_label) = clean_string(param.server_label.as_deref()) else { - tracing::debug!(name = %param.name, "MCP tool param has no server_label"); + let Some(server_label) = clean_string(Some(¶m.server_label)) else { + tracing::debug!("MCP tool param has no server_label"); return None; }; @@ -138,13 +102,7 @@ fn server_entry_from_param(param: &McpToolParam) -> Option<(String, McpServerEnt let url = match validate_request_server_url(&url) { Ok(url) => url, Err(reason) => { - tracing::warn!( - server_label, - name = %param.name, - url, - reason, - "MCP tool param server_url rejected" - ); + tracing::warn!(server_label, url, reason, "MCP tool param server_url rejected"); return None; } }; @@ -153,19 +111,23 @@ fn server_entry_from_param(param: &McpToolParam) -> Option<(String, McpServerEnt server_label, McpServerEntry::Http { url, - headers: param.headers.clone(), + headers: request_headers(param), }, )); } - tracing::warn!( - server_label, - name = %param.name, - "MCP tool param has no server_url" - ); + tracing::warn!(server_label, "MCP tool param has no server_url"); None } +fn request_headers(param: &McpToolParam) -> Option> { + let mut headers = param.headers.clone().unwrap_or_default(); + if let Some(authorization) = clean_string(param.authorization.as_deref()) { + headers.insert("Authorization".to_owned(), format!("Bearer {authorization}")); + } + (!headers.is_empty()).then_some(headers) +} + fn validate_request_server_url(value: &str) -> Result { let url = Url::parse(value).map_err(|error| format!("invalid URL: {error}"))?; match url.scheme() { @@ -289,9 +251,8 @@ mod tests { } #[test] - fn request_params_do_not_accept_stdio_command() { + fn request_params_ignore_stdio_fields_without_configuring_transport() { let param = serde_json::from_value::(serde_json::json!({ - "name": "read_mcp_resource", "server_label": "repo", "command": "python3", "args": ["/tmp/server.py"] diff --git a/crates/agentic-server-core/src/tool/mcp/read_resource.rs b/crates/agentic-server-core/src/tool/mcp/read_resource.rs deleted file mode 100644 index 17ff589..0000000 --- a/crates/agentic-server-core/src/tool/mcp/read_resource.rs +++ /dev/null @@ -1,54 +0,0 @@ -use serde::Deserialize; -use serde_json::json; - -use crate::types::io::FunctionTool; - -pub const READ_MCP_RESOURCE_TOOL_NAME: &str = "read_mcp_resource"; - -#[derive(Debug, Deserialize)] -pub struct ReadResourceArgs { - pub server: String, - pub uri: String, -} - -#[must_use] -pub fn read_mcp_resource_spec() -> FunctionTool { - FunctionTool { - type_: "function".to_owned(), - name: READ_MCP_RESOURCE_TOOL_NAME.to_owned(), - description: Some("Read a resource by URI from a connected MCP server.".to_owned()), - parameters: Some(json!({ - "type": "object", - "properties": { - "server": { - "type": "string", - "description": "The server_label to read from." - }, - "uri": { - "type": "string", - "description": "The resource URI to read." - } - }, - "required": ["server", "uri"], - "additionalProperties": false - })), - strict: Some(false), - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn read_mcp_resource_spec_has_expected_shape() { - let spec = read_mcp_resource_spec(); - - assert_eq!(spec.type_, "function"); - assert_eq!(spec.name, READ_MCP_RESOURCE_TOOL_NAME); - assert_eq!( - spec.parameters.as_ref().unwrap()["required"], - serde_json::json!(["server", "uri"]) - ); - } -} diff --git a/crates/agentic-server-core/src/tool/mcp/registry.rs b/crates/agentic-server-core/src/tool/mcp/registry.rs index 5b62762..264a5d1 100644 --- a/crates/agentic-server-core/src/tool/mcp/registry.rs +++ b/crates/agentic-server-core/src/tool/mcp/registry.rs @@ -1,85 +1,35 @@ use std::collections::HashMap; -use std::sync::Arc; -use crate::tool::{GatewayExecutor, ToolEntry, ToolType}; -use crate::types::tools::McpToolParam; +use crate::tool::{ToolEntry, ToolType}; +use crate::types::tools::McpDiscoveredToolParam; use crate::utils::common::serialize_to_value_or_custom_default; -use super::{McpSpec, READ_MCP_RESOURCE_TOOL_NAME}; +use super::McpDiscoveredHandler; -/// Registers `p` for gateway dispatch by connecting to the request-declared -/// MCP server and discovering its tools via [`build_mcp_registry`]. -pub async fn insert_mcp_entry( - entries: &mut HashMap, - p: &McpToolParam, - handler: Option>, -) { - let Some(handler) = handler else { - tracing::debug!(name = %p.name, "MCP tool skipped because no MCP handler is configured"); - return; - }; - - build_mcp_registry(p, entries, handler).await; -} - -/// Registers the request-scoped MCP handler into `entries`, keyed by the name -/// the model will call. -pub async fn build_mcp_registry( - param: &McpToolParam, - entries: &mut HashMap, - handler: Arc, -) { - match McpSpec::from_param_name(param.name.as_str()) { - McpSpec::Resources => register_read_resource(param, entries, handler), - McpSpec::Tool => register_declared_tool_call(param, entries, handler), - } -} - -fn register_read_resource( - param: &McpToolParam, - entries: &mut HashMap, - handler: Arc, -) { +/// Registers one tool returned by MCP `tools/list`, keyed by its internal +/// model-visible name while retaining the raw server and tool identity in its +/// serialized config. +/// +pub(crate) fn insert_discovered_mcp_entry(entries: &mut HashMap, discovered: McpDiscoveredHandler) { + let McpDiscoveredHandler { param, handler } = discovered; let config = serialize_to_value_or_custom_default( - param, - "MCP read_resource config serialization failed", + ¶m, + "MCP tool-call config serialization failed", |config| config, serde_json::Value::Null, ); + let McpDiscoveredToolParam { + server_label, + internal_name, + .. + } = param; entries.insert( - READ_MCP_RESOURCE_TOOL_NAME.to_owned(), + internal_name, ToolEntry { tool_type: ToolType::Mcp, config, - server_label: None, + server_label: Some(server_label), handler: Some(handler), }, ); } - -fn register_declared_tool_call( - param: &McpToolParam, - entries: &mut HashMap, - handler: Arc, -) { - let config = serialize_to_value_or_custom_default( - param, - "MCP tool-call config serialization failed", - |config| config, - serde_json::Value::Null, - ); - if entries - .insert( - param.name.as_str().to_owned(), - ToolEntry { - tool_type: ToolType::Mcp, - config, - server_label: param.server_label.clone(), - handler: Some(handler), - }, - ) - .is_some() - { - tracing::warn!(name = %param.name, "duplicate MCP tool name — previous definition overwritten"); - } -} diff --git a/crates/agentic-server-core/src/tool/mod.rs b/crates/agentic-server-core/src/tool/mod.rs index 2a5d62d..868bf8b 100644 --- a/crates/agentic-server-core/src/tool/mod.rs +++ b/crates/agentic-server-core/src/tool/mod.rs @@ -13,13 +13,9 @@ pub mod registry; pub mod web_search; pub use codex::{CodexNamespaceHandler, NamespaceMap, model_visible_namespace_member_name}; -pub use executors::GatewayExecutors; +pub use executors::{GatewayExecutorRegistration, GatewayExecutors}; pub use function::FunctionHandler; pub use handler::{GatewayExecutor, ToolError, ToolHandler, ToolOutput}; -pub use mcp::{ - McpClient, McpClientPool, McpDiscoveredHandler, McpError, McpHandler, McpHandlerFactory, McpHandlerKind, - McpOperation, McpServerEntry, McpSpec, READ_MCP_RESOURCE_TOOL_NAME, ReadResourceArgs, build_mcp_registry, - read_mcp_resource_spec, -}; +pub use mcp::{McpClient, McpClientPool, McpDiscoveredHandler, McpError, McpHandler, McpOperation, McpServerEntry}; pub use registry::{GatewayDispatchResult, ToolEntry, ToolRegistry, ToolType}; pub use web_search::WebSearchHandler; diff --git a/crates/agentic-server-core/src/tool/normalize.rs b/crates/agentic-server-core/src/tool/normalize.rs index 69fc9e6..b07e63e 100644 --- a/crates/agentic-server-core/src/tool/normalize.rs +++ b/crates/agentic-server-core/src/tool/normalize.rs @@ -6,7 +6,7 @@ use crate::utils::common::serialize_to_value_or_custom_default; use super::codex::CodexNamespaceHandler; use super::function::FunctionHandler; use super::handler::{ToolHandler, ToolOutput}; -use super::mcp::{McpHandler, maybe_mcp_function}; +use super::mcp::McpHandler; use super::registry::ToolType; use super::web_search::web_search_function_tool; @@ -15,10 +15,7 @@ impl ResponsesTool { #[must_use] pub fn tool_type(&self) -> Option { match self { - Self::Function(p) => match maybe_mcp_function(p) { - Some(params) if !params.is_empty() => Some(ToolType::Mcp), - _ => Some(ToolType::Function), - }, + Self::Function(_) => Some(ToolType::Function), Self::Mcp(_) => Some(ToolType::Mcp), Self::WebSearch(_) => Some(ToolType::WebSearch), Self::FileSearch(_) => Some(ToolType::FileSearch), diff --git a/crates/agentic-server-core/src/tool/registry.rs b/crates/agentic-server-core/src/tool/registry.rs index 1f506f4..f8241f4 100644 --- a/crates/agentic-server-core/src/tool/registry.rs +++ b/crates/agentic-server-core/src/tool/registry.rs @@ -1,4 +1,5 @@ use std::collections::HashMap; +use std::collections::hash_map::Entry; use std::sync::Arc; use serde::{Deserialize, Serialize}; @@ -7,10 +8,12 @@ use serde_json::Value; use super::codex::insert_namespace_entries; use super::executors::GatewayExecutors; use super::function::insert_function_entry; -use super::mcp::{insert_mcp_entry, maybe_mcp_function}; +use super::mcp::handler::{McpToolMap, McpToolRef}; +use super::mcp::registry::insert_discovered_mcp_entry; use super::web_search::insert_web_search_entry; -use super::{CodexNamespaceHandler, GatewayExecutor, NamespaceMap, ToolError, ToolOutput}; +use super::{CodexNamespaceHandler, GatewayExecutor, McpHandler, NamespaceMap, ToolError, ToolOutput}; use crate::events::WireEvent; + use crate::types::io::OutputItem; use crate::types::io::output::FunctionToolCall; use crate::types::tools::{CodeInterpreterToolParam, FileSearchToolParam, ResponsesTool}; @@ -71,6 +74,30 @@ impl std::fmt::Debug for ToolEntry { } } +fn insert_unique_tool_entries( + entries: &mut HashMap, + insert: impl FnOnce(&mut HashMap), +) -> Result<(), ToolError> { + let mut resolved = HashMap::new(); + insert(&mut resolved); + for (name, entry) in resolved { + match entries.entry(name) { + Entry::Occupied(existing) => { + return Err(ToolError::Config(format!( + "{} registry name '{}' conflicts with existing {}", + entry.tool_type.description(), + existing.key(), + existing.get().tool_type.description() + ))); + } + Entry::Vacant(vacant) => { + vacant.insert(entry); + } + } + } + Ok(()) +} + pub struct GatewayDispatchResult { pub tool_type: ToolType, pub output: Result, @@ -131,9 +158,14 @@ fn insert_code_interpreter_entry( #[derive(Debug, Default)] pub struct ToolRegistry { entries: HashMap, + /// Built once from the declared tools, so final payload and streaming event /// restoration don't rebuild it on every call. namespace_map: Option, + + /// Maps model-visible MCP function names back to their public server and + /// tool identities without reparsing executor configuration. + mcp_tool_map: McpToolMap, } impl ToolRegistry { @@ -142,40 +174,60 @@ impl ToolRegistry { /// # Errors /// /// Returns [`ToolError::Config`] when Codex namespace member flattening - /// would collide with another declared tool name. + /// would collide with another declared tool name, or when discovered MCP + /// tools derive the same internal model-visible name. /// /// # Panics /// /// Panics if serialization of a tool param struct fails, which cannot happen /// for the types defined in this module (`#[derive(Serialize)]` on plain structs). - pub async fn build_with_handlers(tools: &[ResponsesTool], executors: &GatewayExecutors) -> Result { + pub async fn build_with_handlers( + tools: &mut [ResponsesTool], + executors: &mut GatewayExecutors, + ) -> Result { let mut entries = HashMap::with_capacity(tools.len()); + let mut mcp_tool_map = McpToolMap::default(); // Namespace members must be keyed by the same flat, model-visible name // the model will call, so resolve them first — the same pure pass used // to build the upstream request. let resolved_tools = CodexNamespaceHandler.resolve_namespace_members(tools)?; + McpHandler::validate_server_labels(&resolved_tools)?; - for tool in &resolved_tools { + for (index, tool) in resolved_tools.iter().enumerate() { match tool { - ResponsesTool::Function(p) => match maybe_mcp_function(p) { - Some(mcp_params) if !mcp_params.is_empty() => { - let handler = executors.mcp_read_resource_handler(&mcp_params).await; - for declaration_param in &mcp_params { - insert_mcp_entry(&mut entries, declaration_param, handler.clone()).await; - } - } - _ => insert_function_entry(&mut entries, p), - }, + ResponsesTool::Function(p) => { + insert_unique_tool_entries(&mut entries, |resolved| insert_function_entry(resolved, p))?; + } ResponsesTool::Mcp(p) => { - let handler = executors.mcp_handler(p).await; - insert_mcp_entry(&mut entries, p, handler).await; + let handlers = executors.mcp_handler(p).await?; + if let ResponsesTool::Mcp(declaration) = &mut tools[index] { + declaration.discovered_tools = handlers.iter().map(|item| item.param.clone()).collect(); + } + for discovered in handlers { + let internal_name = discovered.param.internal_name.clone(); + let tool_ref = McpToolRef::from(&discovered.param); + insert_unique_tool_entries(&mut entries, |resolved| { + insert_discovered_mcp_entry(resolved, discovered); + })?; + mcp_tool_map.record(internal_name, tool_ref); + } } ResponsesTool::WebSearch(p) => { - insert_web_search_entry(&mut entries, p, executors.web_search_handler()); + insert_unique_tool_entries(&mut entries, |resolved| { + insert_web_search_entry(resolved, p, executors.web_search_handler()); + })?; + } + ResponsesTool::FileSearch(p) => { + insert_unique_tool_entries(&mut entries, |resolved| insert_file_search_entry(resolved, p, None))?; + } + ResponsesTool::CodeInterpreter(p) => { + insert_unique_tool_entries(&mut entries, |resolved| { + insert_code_interpreter_entry(resolved, p, None); + })?; + } + ResponsesTool::Namespace(p) => { + insert_unique_tool_entries(&mut entries, |resolved| insert_namespace_entries(resolved, p))?; } - ResponsesTool::FileSearch(p) => insert_file_search_entry(&mut entries, p, None), - ResponsesTool::CodeInterpreter(p) => insert_code_interpreter_entry(&mut entries, p, None), - ResponsesTool::Namespace(p) => insert_namespace_entries(&mut entries, p), ResponsesTool::Custom(p) => { tracing::debug!(name = %p.name, "client-owned custom tool skipped in function registry"); } @@ -187,7 +239,11 @@ impl ToolRegistry { let namespace_map = CodexNamespaceHandler.build_namespace_map((!tools.is_empty()).then_some(tools))?; - Ok(Self { entries, namespace_map }) + Ok(Self { + entries, + namespace_map, + mcp_tool_map, + }) } #[must_use] @@ -205,6 +261,15 @@ impl ToolRegistry { self.entries.len() } + #[must_use] + pub fn contains_mcp_server_label(&self, server_label: &str) -> bool { + self.mcp_tool_map.contains_server_label(server_label) + } + + pub(crate) fn mcp_tool_ref(&self, internal_name: &str) -> Option<&McpToolRef> { + self.mcp_tool_map.tool_ref(internal_name) + } + pub fn restore_final_payload_output(&self, output: &mut [OutputItem]) { CodexNamespaceHandler.restore_output_items(output, self.namespace_map.as_ref()); } @@ -260,3 +325,259 @@ impl ToolRegistry { }) } } + +#[cfg(test)] +mod tests { + use super::*; + use crate::tool::executors::GatewayExecutorRegistration; + use crate::tool::mcp::{McpDiscoveredHandler, McpHandler}; + use crate::types::event::MessageStatus; + use crate::types::tools::McpDiscoveredToolParam; + + fn declaration(server_label: &str) -> ResponsesTool { + serde_json::from_value(serde_json::json!({ + "type": "mcp", + "server_label": server_label, + "server_url": "http://127.0.0.1:8000/mcp", + "require_approval": "never" + })) + .expect("MCP declaration") + } + + fn discovered_handler(server_label: &str, tool_name: &str, internal_name: &str) -> McpDiscoveredHandler { + let param = McpDiscoveredToolParam { + server_label: server_label.to_owned(), + tool_name: tool_name.to_owned(), + internal_name: internal_name.to_owned(), + tool: serde_json::from_value(serde_json::json!({ + "name": tool_name, + "description": "Discovered test tool", + "inputSchema": {"type": "object"} + })) + .expect("discovered MCP tool"), + }; + McpDiscoveredHandler { + param, + handler: Arc::new(McpHandler::discovered_tool_spec_only()), + } + } + + fn mixed_tool_declarations() -> Vec { + serde_json::from_value(serde_json::json!([ + { + "type": "function", + "name": "echo", + "parameters": {"type": "object"} + }, + { + "type": "mcp", + "server_label": "counter", + "server_url": "http://127.0.0.1:8000/mcp", + "require_approval": "never" + }, + {"type": "web_search_preview", "search_context_size": "low"}, + {"type": "file_search", "vector_store_ids": ["vs_test"]}, + {"type": "code_interpreter"}, + { + "type": "namespace", + "name": "mcp__shell", + "tools": [{"type": "function", "name": "run"}] + }, + {"type": "custom", "name": "freeform"}, + {"type": "future_tool", "opaque": true} + ])) + .expect("mixed tool declarations") + } + + fn assert_namespace_call_restoration(registry: &ToolRegistry) { + let mut output = vec![OutputItem::FunctionCall(FunctionToolCall { + id: "fc_1".to_owned(), + call_id: "call_1".to_owned(), + name: "agentic_ns__mcp__shell__run".to_owned(), + namespace: None, + arguments: "{}".to_owned(), + status: MessageStatus::Completed, + })]; + registry.restore_final_payload_output(&mut output); + let OutputItem::FunctionCall(call) = &output[0] else { + panic!("expected restored function call"); + }; + assert_eq!(call.namespace.as_deref(), Some("mcp__shell")); + assert_eq!(call.name, "run"); + } + + #[tokio::test] + async fn build_with_handlers_registers_mixed_tools_and_runtime_metadata() { + let mut executors = GatewayExecutors::from_env(Arc::new(reqwest::Client::new())); + executors.insert(GatewayExecutorRegistration::Mcp { + server_label: "counter".to_owned(), + handlers: vec![ + discovered_handler("counter", "increment", "mcp__counter__increment"), + discovered_handler("counter", "get_value", "mcp__counter__get_value"), + ], + }); + let mut tools = mixed_tool_declarations(); + + let registry = ToolRegistry::build_with_handlers(&mut tools, &mut executors) + .await + .expect("mixed registry"); + + assert_eq!(registry.len(), 7); + assert!(registry.contains_mcp_server_label("counter")); + assert!(!registry.contains_mcp_server_label("missing")); + + let expected_entries = [ + ("echo", ToolType::Function, None, false), + ("mcp__counter__increment", ToolType::Mcp, Some("counter"), true), + ("mcp__counter__get_value", ToolType::Mcp, Some("counter"), true), + ("web_search", ToolType::WebSearch, None, true), + ("file_search", ToolType::FileSearch, None, false), + ("code_interpreter", ToolType::CodeInterpreter, None, false), + ( + "agentic_ns__mcp__shell__run", + ToolType::CodexNamespace, + Some("mcp__shell"), + false, + ), + ]; + for (name, tool_type, server_label, has_handler) in expected_entries { + let entry = registry + .lookup(name) + .unwrap_or_else(|| panic!("missing registry entry '{name}'")); + assert_eq!(entry.tool_type, tool_type, "unexpected type for '{name}'"); + assert_eq!( + entry.server_label.as_deref(), + server_label, + "unexpected server label for '{name}'" + ); + assert_eq!(entry.handler.is_some(), has_handler, "unexpected handler for '{name}'"); + } + assert!(registry.lookup("freeform").is_none()); + assert_eq!(registry.lookup("echo").unwrap().config["name"], "echo"); + assert_eq!( + registry.lookup("mcp__counter__increment").unwrap().config["tool_name"], + "increment" + ); + assert_eq!( + registry.lookup("web_search").unwrap().config["search_context_size"], + "low" + ); + assert_eq!( + registry.lookup("file_search").unwrap().config["vector_store_ids"][0], + "vs_test" + ); + assert_eq!( + registry.lookup("agentic_ns__mcp__shell__run").unwrap().config["tools"][0]["name"], + "agentic_ns__mcp__shell__run" + ); + for name in [ + "mcp__counter__increment", + "mcp__counter__get_value", + "web_search", + "file_search", + "code_interpreter", + ] { + assert!(registry.is_gateway_owned_name(name), "'{name}' should be gateway-owned"); + } + for name in ["echo", "agentic_ns__mcp__shell__run"] { + assert!(!registry.is_gateway_owned_name(name), "'{name}' should be client-owned"); + } + + let ResponsesTool::Mcp(declared) = &tools[1] else { + panic!("expected MCP declaration"); + }; + assert_eq!(declared.discovered_tools.len(), 2); + assert_eq!( + tools[1] + .to_function_tools() + .into_iter() + .map(|tool| tool.name) + .collect::>(), + ["mcp__counter__increment", "mcp__counter__get_value"] + ); + + let ResponsesTool::Namespace(namespace) = &tools[5] else { + panic!("expected namespace declaration"); + }; + assert!(matches!( + namespace.tools.as_slice(), + [crate::types::tools::CodexNamespaceMember::Function(function)] if function.name.as_str() == "run" + )); + assert_namespace_call_restoration(®istry); + } + + #[tokio::test] + async fn duplicate_mcp_server_labels_are_rejected() { + let mut tools = vec![declaration("counter"), declaration("counter")]; + let mut executors = GatewayExecutors::default(); + + let error = ToolRegistry::build_with_handlers(&mut tools, &mut executors) + .await + .expect_err("duplicate server_label must fail"); + + assert!( + matches!(error, ToolError::Config(message) if message.contains("duplicate MCP declarations") && message.contains("counter")) + ); + } + + #[tokio::test] + async fn cross_server_internal_name_collisions_are_rejected() { + let internal_name = "mcp__foo__bar__baz"; + let mut executors = GatewayExecutors::default(); + executors.insert(GatewayExecutorRegistration::Mcp { + server_label: "foo".to_owned(), + handlers: vec![discovered_handler("foo", "bar__baz", internal_name)], + }); + executors.insert(GatewayExecutorRegistration::Mcp { + server_label: "foo__bar".to_owned(), + handlers: vec![discovered_handler("foo__bar", "baz", internal_name)], + }); + let mut tools = vec![declaration("foo"), declaration("foo__bar")]; + + let error = ToolRegistry::build_with_handlers(&mut tools, &mut executors) + .await + .expect_err("colliding derived MCP names must fail"); + + assert!(matches!( + error, + ToolError::Config(message) + if message.contains(internal_name) && message.matches("MCP tool").count() == 2 + )); + } + + #[tokio::test] + async fn discovered_mcp_name_collision_with_function_is_rejected_in_any_order() { + let internal_name = "mcp__counter__increment"; + + for mcp_first in [false, true] { + let function = serde_json::from_value(serde_json::json!({ + "type": "function", + "name": internal_name + })) + .expect("function declaration"); + let mcp = declaration("counter"); + let mut tools = if mcp_first { + vec![mcp, function] + } else { + vec![function, mcp] + }; + let mut executors = GatewayExecutors::default(); + executors.insert(GatewayExecutorRegistration::Mcp { + server_label: "counter".to_owned(), + handlers: vec![discovered_handler("counter", "increment", internal_name)], + }); + + let error = ToolRegistry::build_with_handlers(&mut tools, &mut executors) + .await + .expect_err("MCP internal name must not overwrite a function"); + + assert!(matches!( + error, + ToolError::Config(message) + if message.contains(internal_name) + && message.contains("MCP tool") + && message.contains("function tool") + )); + } + } +} diff --git a/crates/agentic-server-core/src/types/io/output.rs b/crates/agentic-server-core/src/types/io/output.rs index 387b0b1..782882d 100644 --- a/crates/agentic-server-core/src/types/io/output.rs +++ b/crates/agentic-server-core/src/types/io/output.rs @@ -531,26 +531,6 @@ mod tests { assert!(matches!(back, InputItem::Reasoning(_))); } - #[test] - fn mcp_tool_call_serializes_as_output_item() { - let item = OutputItem::McpToolCall(McpToolCall::new( - "mcp_1", - "repo", - "read_mcp_resource", - serde_json::json!({"server": "repo", "uri": "file://fixture.yaml"}), - GatewayCallStatus::Completed, - Some(serde_json::json!({"contents": []})), - None, - )); - - let json = serde_json::to_value(item).unwrap(); - assert_eq!(json["type"], "mcp_tool_call"); - assert_eq!(json["id"], "mcp_1"); - assert_eq!(json["status"], "completed"); - assert_eq!(json["server"], "repo"); - assert_eq!(json["tool"], "read_mcp_resource"); - } - #[test] fn vllm_reasoning_response_deserializes() { let vllm_output = serde_json::json!([ diff --git a/crates/agentic-server-core/src/types/request_response.rs b/crates/agentic-server-core/src/types/request_response.rs index 56e43fe..69c22db 100644 --- a/crates/agentic-server-core/src/types/request_response.rs +++ b/crates/agentic-server-core/src/types/request_response.rs @@ -441,17 +441,8 @@ mod tests { fn builtin_tool_declarations() -> Vec { vec![ - serde_json::json!({ - "type": "function", - "name": "read_mcp_resource", - "metadata": { - "server_label": "repo", - "server_url": "http://localhost:9001/mcp" - } - }), serde_json::json!({ "type": "mcp", - "name": "read_mcp_resource", "server_label": "repo", "server_url": "http://localhost:9001/mcp" }), diff --git a/crates/agentic-server-core/src/types/tools/params.rs b/crates/agentic-server-core/src/types/tools/params.rs index f2878f9..9cb23e1 100644 --- a/crates/agentic-server-core/src/types/tools/params.rs +++ b/crates/agentic-server-core/src/types/tools/params.rs @@ -146,13 +146,28 @@ pub struct CustomToolParam { /// Parameters for a gateway MCP built-in tool declaration. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct McpToolParam { - pub name: NonEmptyToolName, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub server_label: Option, + pub server_label: String, #[serde(default, skip_serializing_if = "Option::is_none")] pub server_url: Option, #[serde(default, skip_serializing_if = "Option::is_none")] + pub connector_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] pub headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub authorization: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub allowed_tools: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub require_approval: Option, + /// Request-scoped `tools/list` results used by MCP normalization. This + /// field is populated internally and ignored on the public request wire. + #[serde( + rename = "_agentic_discovered_tools", + default, + skip_deserializing, + skip_serializing_if = "Vec::is_empty" + )] + pub(crate) discovered_tools: Vec, } /// Parameters for a discovered MCP (Model Context Protocol) server tool. @@ -160,7 +175,7 @@ pub struct McpToolParam { pub struct McpDiscoveredToolParam { pub server_label: String, pub tool_name: String, - pub exposed_name: String, + pub internal_name: String, pub tool: rmcp::model::Tool, } @@ -250,6 +265,15 @@ impl ResponsesTool { Self::Unknown => None, } } + + /// Removes request-scoped credentials before a tool declaration is + /// persisted as effective response metadata. + pub(crate) fn redact_runtime_credentials(&mut self) { + if let Self::Mcp(param) = self { + param.headers = None; + param.authorization = None; + } + } } #[cfg(test)] @@ -305,24 +329,84 @@ mod tests { fn responses_tool_mcp_round_trips_with_field_values() { let json = serde_json::json!({ "type": "mcp", - "name": "read_mcp_resource", "server_label": "repo", "server_url": "http://localhost:9001/mcp", - "headers": {"Authorization": "Bearer token"} + "headers": {"X-Request-ID": "request-1"}, + "authorization": "token", + "allowed_tools": ["read_file"], + "require_approval": "never" }); let tool: ResponsesTool = serde_json::from_value(json).unwrap(); let back = serde_json::to_value(&tool).unwrap(); assert_eq!(back["type"], "mcp"); - assert_eq!(back["name"], "read_mcp_resource"); assert_eq!(back["server_label"], "repo"); assert_eq!(back["server_url"], "http://localhost:9001/mcp"); if let ResponsesTool::Mcp(ref p) = tool { - assert_eq!(p.name.as_str(), "read_mcp_resource"); - assert_eq!(p.server_label.as_deref(), Some("repo")); + assert_eq!(p.server_label, "repo"); assert_eq!(p.server_url.as_deref(), Some("http://localhost:9001/mcp")); } } + #[test] + fn responses_tool_mcp_redacts_runtime_credentials_for_persistence() { + let mut tool = serde_json::from_value::(serde_json::json!({ + "type": "mcp", + "server_label": "repo", + "server_url": "https://mcp.example.test/mcp", + "headers": { + "Authorization": "Bearer header-secret", + "X-Request-ID": "request-1" + }, + "authorization": "field-secret", + "allowed_tools": ["read_file"], + "require_approval": "never" + })) + .unwrap(); + + tool.redact_runtime_credentials(); + + let persisted = serde_json::to_value(tool).unwrap(); + assert!(persisted.get("headers").is_none()); + assert!(persisted.get("authorization").is_none()); + assert_eq!(persisted["server_label"], "repo"); + assert_eq!(persisted["server_url"], "https://mcp.example.test/mcp"); + assert_eq!(persisted["allowed_tools"], serde_json::json!(["read_file"])); + assert_eq!(persisted["require_approval"], "never"); + } + + #[test] + fn responses_tool_mcp_ignores_unknown_fields() { + let tool = serde_json::from_value::(serde_json::json!({ + "type": "mcp", + "name": "increment", + "server_label": "repo", + "server_url": "http://localhost:9001/mcp", + "future_field": true + })) + .unwrap(); + + let back = serde_json::to_value(tool).unwrap(); + assert_eq!(back["server_label"], "repo"); + assert!(back.get("name").is_none()); + assert!(back.get("future_field").is_none()); + } + + #[test] + fn responses_tool_mcp_ignores_internal_discovery_field_from_request() { + let tool = serde_json::from_value::(serde_json::json!({ + "type": "mcp", + "server_label": "repo", + "server_url": "http://localhost:9001/mcp", + "_agentic_discovered_tools": [{"not": "a discovered tool"}] + })) + .unwrap(); + + let ResponsesTool::Mcp(param) = tool else { + panic!("expected MCP tool"); + }; + assert!(param.discovered_tools.is_empty()); + } + #[test] fn responses_tool_web_search_round_trips() { let json = serde_json::json!({"type": "web_search_preview"}); @@ -368,7 +452,7 @@ mod tests { let json = serde_json::json!({ "server_label": "my_server", "tool_name": "fetch", - "exposed_name": "my_server__fetch", + "internal_name": "mcp__my_server__fetch", "tool": { "name": "fetch", "inputSchema": { diff --git a/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-Qwen-Qwen3-30B-A3B-FP8-nonstreaming.yaml b/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-Qwen-Qwen3-30B-A3B-FP8-nonstreaming.yaml deleted file mode 100644 index 0d2f354..0000000 --- a/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-Qwen-Qwen3-30B-A3B-FP8-nonstreaming.yaml +++ /dev/null @@ -1,189 +0,0 @@ -turns: -- filename: t1 - request: - body: - input: 'You have one MCP resource tool available: read_mcp_resource. The MCP - server label is repo. Call read_mcp_resource exactly once with server repo - and uri repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml. - Then summarize the gpt_oss_web_search_nonstreaming.yaml cassette in 2-3 sentences - and mention that read_mcp_resource was used.' - max_output_tokens: 1024 - model: Qwen/Qwen3-30B-A3B-FP8 - store: true - stream: false - tool_choice: required - tools: - - name: read_mcp_resource - server_label: repo - server_url: http://localhost:8000/mcp - type: mcp - headers: - accept: '*/*' - content-type: application/json - user-agent: python-httpx/0.28.1 - method: POST - path: /v1/responses - query_params: {} - response: - body: - conversation_id: null - created_at: 1783949038 - error: null - id: resp_019f5ba5-fe82-71a3-86f4-e5e432028293 - incomplete_details: null - instructions: null - model: Qwen/Qwen3-30B-A3B-FP8 - object: response - output: - - content: - - text: "\nOkay, let's see. The user wants me to call the read_mcp_resource\ - \ function with the server label \"repo\" and the URI \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\"\ - . Then, I need to summarize the YAML file in 2-3 sentences and mention\ - \ that I used the read_mcp_resource tool.\n\nFirst, I should make sure\ - \ I understand the function parameters. The function requires \"server\"\ - \ and \"uri\". The server is \"repo\", and the URI is given. I need to\ - \ structure the tool call correctly. The URI starts with \"repo://\",\ - \ so that's the format they want.\n\nWait, the user specified the URI\ - \ as \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\"\ - . So I should pass that exactly as the uri parameter. The server parameter\ - \ is \"repo\". \n\nOnce I call the function, the response will be the\ - \ content of that YAML file. Then, I need to read that content and summarize\ - \ it. The summary should be concise, 2-3 sentences. Also, I must mention\ - \ that I used the read_mcp_resource tool. \n\nBut since I can't actually\ - \ execute the function call here, I'll have to pretend to do so. The user\ - \ probably expects the tool call in the specified JSON format within the\ - \ XML tags. Then, after that, provide the summary as if the data was retrieved.\ - \ \n\nSo the steps are: generate the tool call, then the summary. Make\ - \ sure the summary includes the mention of the tool. I need to check if\ - \ the YAML file's content is available. Since I don't have access to the\ - \ actual file, I'll have to make up a plausible summary. Maybe the YAML\ - \ contains test data for a web search, like a cassette for a non-streaming\ - \ GPT OSS web search. The summary should reflect that it's a test cassette\ - \ used for web search simulations. \n\nI need to ensure that the JSON\ - \ structure is correct, with the name and arguments as specified. Also,\ - \ the tool call should be within the XML tags. Alright, putting it all\ - \ together.\n" - type: reasoning_text - encrypted_content: null - id: rs_9dc03b89a205ce92 - status: null - summary: [] - type: reasoning - - arguments: - server: repo - uri: repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml - id: mcp_a74524aff91f554a - result: - contents: - - mimeType: text/plain - text: "turns:\n- filename: t1\n request:\n body:\n input: Use\ - \ web search to look up potato, then summarize in one sentence.\n \ - \ max_output_tokens: 1024\n model: openai/gpt-oss-20b\n \ - \ store: true\n stream: false\n tool_choice: auto\n \ - \ tools:\n - type: web_search_preview\n headers:\n accept:\ - \ '*/*'\n content-type: application/json\n user-agent: python-httpx/0.28.1\n\ - \ method: POST\n path: /v1/responses\n query_params: {}\n \ - \ response:\n body:\n conversation_id: null\n created_at:\ - \ 1783307879\n error: null\n id: resp_019f356e-aacf-7ea3-87c6-075c2fcc1eb2\n\ - \ incomplete_details: null\n instructions: null\n model:\ - \ openai/gpt-oss-20b\n object: response\n output:\n -\ - \ content:\n - text: 'User: \"Use web search to look up potato,\ - \ then summarize in one sentence.\"\n We need to call web_search.\ - \ Use search query \"potato\". Provide let''s\n say count=5.\ - \ Ask for news? Might not need. We just want general info.\n \ - \ Probably get definition. Use general web search. Use appropriate\ - \ countries.\n Use English. Use default. Ok.'\n \ - \ type: reasoning_text\n encrypted_content: null\n id:\ - \ rs_8c5223df3fb54ba8\n status: null\n summary: []\n \ - \ type: reasoning\n - action:\n query: potato\n\ - \ sources:\n - title: Potato - Wikipedia\n \ - \ url: https://en.wikipedia.org/wiki/Potato\n - title:\ - \ Potatoes | Potato Nutrition | Types of Potatoes | Recipes\n \ - \ url: https://potatogoodness.com/\n - title: Potato Facts\n\ - \ url: https://www.idahopotatomuseum.com/potato-facts/\n\ - \ - title: Idaho Potato Commission\n url: https://idahopotato.com/\n\ - \ - title: Home of U.S. Potato Farmers | Potatoes USA\n \ - \ url: https://potatoesusa.com/\n type: search\n \ - \ id: ws_b67561c650733812\n status: completed\n type:\ - \ web_search_call\n - content:\n - text: 'We have a summary\ - \ from Wikipedia. Enough.\n\n\n Now produce one sentence\ - \ summary: \"Potato is a starchy tuberous vegetable\n native\ - \ to the Americas, cultivated from Solanum tuberosum, and is a staple\n\ - \ food worldwide.\" Provide brief.'\n type: reasoning_text\n\ - \ encrypted_content: null\n id: rs_9d6b942ea84e3e00\n\ - \ status: null\n summary: []\n type: reasoning\n\ - \ - content:\n - annotations: []\n text: Potato\ - \ (Solanum tuberosum) is a starchy, underground tuber native\n \ - \ to the Americas that has been domesticated for thousands of\ - \ years and\n is today a staple food in many cultures worldwide.\n\ - \ type: output_text\n id: msg_a8af96caf08bdc00\n \ - \ role: assistant\n status: completed\n type: message\n\ - \ previous_response_id: null\n status: completed\n usage:\n\ - \ input_tokens: 2285\n input_tokens_details:\n \ - \ cached_tokens: 352\n output_tokens: 204\n output_tokens_details:\n\ - \ reasoning_tokens: 135\n total_tokens: 2489\n headers:\n\ - \ content-type: application/json\n status_code: 200\n" - uri: repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml - server: repo - status: completed - tool: read_mcp_resource - type: mcp_tool_call - - content: - - text: ' - - Okay, let''s see. The user wanted me to call the read_mcp_resource function - with specific parameters and then summarize the YAML file. The tool response - provided the contents of the YAML, which seems to be a test cassette for - a web search. The summary needs to be 2-3 sentences and mention the tool - used. - - - First, I need to parse the tool response. The YAML has a request and response - section. The request includes a web search for "potato" with some parameters. - The response includes the search results and a summary from Wikipedia. - The summary mentions the potato''s origin, domestication, and its status - as a staple food. - - - I should condense this into a concise summary. Mention the purpose of - the cassette, the web search query, and the key points from the response. - Also, ensure to note that the data was retrieved using the read_mcp_resource - tool. Let me check the exact wording to make sure it''s accurate and within - the sentence limit. - - ' - type: reasoning_text - encrypted_content: null - id: rs_8140409a2eec0b39 - status: null - summary: [] - type: reasoning - - content: - - annotations: [] - text: ' - - - The `gpt_oss_web_search_nonstreaming.yaml` cassette demonstrates a web - search workflow for the query "potato," including a Wikipedia-based summary - of the vegetable''s origin and global significance. The response highlights - the starchy tuberous plant *Solanum tuberosum*, its historical domestication, - and its role as a staple food. This test cassette was retrieved using - the `read_mcp_resource` tool.' - type: output_text - id: msg_a6de7ee6ee5b4757 - role: assistant - status: completed - type: message - previous_response_id: null - status: completed - usage: - input_tokens: 2022 - input_tokens_details: - cached_tokens: 1024 - output_tokens: 794 - output_tokens_details: - reasoning_tokens: 642 - total_tokens: 2816 - headers: - content-type: application/json - status_code: 200 diff --git a/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml b/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml deleted file mode 100644 index 79b1eac..0000000 --- a/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml +++ /dev/null @@ -1,2790 +0,0 @@ -turns: -- filename: t1 - request: - body: - input: 'You have one MCP resource tool available: read_mcp_resource. The MCP - server label is repo. Call read_mcp_resource exactly once with server repo - and uri repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml. - Then summarize the gpt_oss_web_search_nonstreaming.yaml cassette in 2-3 sentences - and mention that read_mcp_resource was used.' - max_output_tokens: 1024 - model: Qwen/Qwen3-30B-A3B-FP8 - store: true - stream: true - tool_choice: required - tools: - - name: read_mcp_resource - server_label: repo - server_url: http://localhost:8000/mcp - type: mcp - headers: - accept: '*/*' - content-type: application/json - user-agent: python-httpx/0.28.1 - method: POST - path: /v1/responses - query_params: {} - response: - headers: - content-type: text/event-stream; charset=utf-8 - sse: - - 'data: {"response":{"background":false,"created_at":1783949040,"frequency_penalty":0.0,"id":"resp_019f5ba6-19b8-75b1-981a-6f8993e432a3","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":{"format":{"description":null,"name":"tool_calling_response","schema":{"items":{"anyOf":[{"properties":{"name":{"enum":["read_mcp_resource"],"type":"string"},"parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"}},"required":["name","parameters"]}],"type":"object"},"minItems":1,"type":"array"},"strict":true,"type":"json_schema"},"verbosity":null},"tool_choice":"required","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":0,"type":"response.created"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949040,"frequency_penalty":0.0,"id":"resp_019f5ba6-19b8-75b1-981a-6f8993e432a3","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":{"format":{"description":null,"name":"tool_calling_response","schema":{"items":{"anyOf":[{"properties":{"name":{"enum":["read_mcp_resource"],"type":"string"},"parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"}},"required":["name","parameters"]}],"type":"object"},"minItems":1,"type":"array"},"strict":true,"type":"json_schema"},"verbosity":null},"tool_choice":"required","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":1,"type":"response.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"content":null,"encrypted_content":null,"id":"babe9b1b90830eef","status":"in_progress","summary":[],"type":"reasoning"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"babe9b1b90830eef","output_index":0,"part":{"text":"","type":"reasoning_text"},"sequence_number":3,"type":"response.reasoning_part.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":4,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Okay","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":5,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":6,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":7,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":8,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" wants","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":9,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":10,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":11,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" use","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":12,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":13,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":14,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":15,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":16,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":17,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":18,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":19,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":20,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":21,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":22,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":23,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" repo","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":24,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":25,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":26,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":27,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":28,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" they","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":29,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" provided","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":30,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":31,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" repo","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":32,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":33,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cr","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":34,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ates","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":35,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/ag","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":36,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"entic","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":37,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-server","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":38,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-core","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":39,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/tests","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":40,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/c","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":41,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"asset","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":42,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"tes","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":43,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/web","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":44,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":45,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/g","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":46,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"pt","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":47,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":48,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"oss","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":49,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_web","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":50,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":51,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_non","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":52,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"stream","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":53,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ing","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":54,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":55,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":56,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":57,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":58,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":59,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":60,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":61,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":62,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exactly","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":63,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" once","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":64,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":65,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" those","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":66,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":67,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":68,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Once","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":69,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":70,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" get","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":71,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":72,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" data","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":73,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" from","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":74,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":75,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resource","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":76,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":77,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":78,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" have","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":79,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":80,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" summarize","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":81,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":82,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" YAML","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":83,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" file","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":84,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":85,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":86,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"2","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":87,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":88,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"3","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":89,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sentences","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":90,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":91,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" mention","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":92,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":93,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":94,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" used","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":95,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":96,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":97,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":98,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":99,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":100,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":101,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":102,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Let","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":103,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":104,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":105,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sure","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":106,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":107,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" format","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":108,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":109,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":110,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":111,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correctly","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":112,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":113,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" JSON","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":114,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" inside","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":115,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":116,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" XML","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":117,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tags","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":118,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":119,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":120,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":121,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" check","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":122,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":123,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":124,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":125,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" are","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":126,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correctly","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":127,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" structured","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":128,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":129,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" per","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":130,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":131,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":132,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":133,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" requirements","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":134,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":135,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Alright","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":136,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":137,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" everything","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":138,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" seems","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":139,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":140,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" order","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":141,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":142,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Let","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":143,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":144,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" proceed","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":145,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":146,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":147,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":148,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":149,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n","item_id":"babe9b1b90830eef","output_index":0,"sequence_number":150,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"babe9b1b90830eef","output_index":0,"sequence_number":151,"text":"\nOkay, - the user wants me to use the read_mcp_resource function. The server label is - repo, and the URI they provided is repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml. - I need to call that function exactly once with those parameters. Once I get - the data from the resource, I have to summarize the YAML file in 2-3 sentences - and mention that I used the read_mcp_resource tool. Let me make sure I format - the tool call correctly in JSON inside the XML tags. I should check if the parameters - are correctly structured as per the function''s requirements. Alright, everything - seems in order. Let''s proceed with the tool call.\n","type":"response.reasoning_text.done"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"babe9b1b90830eef","output_index":0,"part":{"text":"\nOkay, - the user wants me to use the read_mcp_resource function. The server label is - repo, and the URI they provided is repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml. - I need to call that function exactly once with those parameters. Once I get - the data from the resource, I have to summarize the YAML file in 2-3 sentences - and mention that I used the read_mcp_resource tool. Let me make sure I format - the tool call correctly in JSON inside the XML tags. I should check if the parameters - are correctly structured as per the function''s requirements. Alright, everything - seems in order. Let''s proceed with the tool call.\n","type":"reasoning_text"},"sequence_number":152,"type":"response.reasoning_part.done"} - - ' - - ' - - ' - - 'data: {"item":{"content":[{"text":"\nOkay, the user wants me to use the read_mcp_resource - function. The server label is repo, and the URI they provided is repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml. - I need to call that function exactly once with those parameters. Once I get - the data from the resource, I have to summarize the YAML file in 2-3 sentences - and mention that I used the read_mcp_resource tool. Let me make sure I format - the tool call correctly in JSON inside the XML tags. I should check if the parameters - are correctly structured as per the function''s requirements. Alright, everything - seems in order. Let''s proceed with the tool call.\n","type":"reasoning_text"}],"encrypted_content":null,"id":"babe9b1b90830eef","status":"completed","summary":[],"type":"reasoning"},"output_index":0,"sequence_number":153,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"id":"mcp_984d48be1e31f41f","server":"repo","status":"in_progress","tool":"read_mcp_resource","type":"mcp_tool_call"},"output_index":1,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"item_id":"mcp_984d48be1e31f41f","output_index":1,"type":"response.mcp_tool_call.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"id":"mcp_984d48be1e31f41f","result":{"contents":[{"mimeType":"text/plain","text":"turns:\n- - filename: t1\n request:\n body:\n input: Use web search to look up - potato, then summarize in one sentence.\n max_output_tokens: 1024\n model: - openai/gpt-oss-20b\n store: true\n stream: false\n tool_choice: - auto\n tools:\n - type: web_search_preview\n headers:\n accept: - ''*/*''\n content-type: application/json\n user-agent: python-httpx/0.28.1\n method: - POST\n path: /v1/responses\n query_params: {}\n response:\n body:\n conversation_id: - null\n created_at: 1783307879\n error: null\n id: resp_019f356e-aacf-7ea3-87c6-075c2fcc1eb2\n incomplete_details: - null\n instructions: null\n model: openai/gpt-oss-20b\n object: - response\n output:\n - content:\n - text: ''User: \"Use web - search to look up potato, then summarize in one sentence.\"\n We - need to call web_search. Use search query \"potato\". Provide let''''s\n say - count=5. Ask for news? Might not need. We just want general info.\n Probably - get definition. Use general web search. Use appropriate countries.\n Use - English. Use default. Ok.''\n type: reasoning_text\n encrypted_content: - null\n id: rs_8c5223df3fb54ba8\n status: null\n summary: - []\n type: reasoning\n - action:\n query: potato\n sources:\n - - title: Potato - Wikipedia\n url: https://en.wikipedia.org/wiki/Potato\n - - title: Potatoes | Potato Nutrition | Types of Potatoes | Recipes\n url: - https://potatogoodness.com/\n - title: Potato Facts\n url: - https://www.idahopotatomuseum.com/potato-facts/\n - title: Idaho Potato - Commission\n url: https://idahopotato.com/\n - title: Home - of U.S. Potato Farmers | Potatoes USA\n url: https://potatoesusa.com/\n type: - search\n id: ws_b67561c650733812\n status: completed\n type: - web_search_call\n - content:\n - text: ''We have a summary from - Wikipedia. Enough.\n\n\n Now produce one sentence summary: \"Potato - is a starchy tuberous vegetable\n native to the Americas, cultivated - from Solanum tuberosum, and is a staple\n food worldwide.\" Provide - brief.''\n type: reasoning_text\n encrypted_content: null\n id: - rs_9d6b942ea84e3e00\n status: null\n summary: []\n type: - reasoning\n - content:\n - annotations: []\n text: Potato - (Solanum tuberosum) is a starchy, underground tuber native\n to the - Americas that has been domesticated for thousands of years and\n is - today a staple food in many cultures worldwide.\n type: output_text\n id: - msg_a8af96caf08bdc00\n role: assistant\n status: completed\n type: - message\n previous_response_id: null\n status: completed\n usage:\n input_tokens: - 2285\n input_tokens_details:\n cached_tokens: 352\n output_tokens: - 204\n output_tokens_details:\n reasoning_tokens: 135\n total_tokens: - 2489\n headers:\n content-type: application/json\n status_code: 200\n","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"}]},"server":"repo","status":"completed","tool":"read_mcp_resource","type":"mcp_tool_call"},"item_id":"mcp_984d48be1e31f41f","output_index":1,"type":"response.mcp_tool_call.completed"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"id":"mcp_984d48be1e31f41f","result":{"contents":[{"mimeType":"text/plain","text":"turns:\n- - filename: t1\n request:\n body:\n input: Use web search to look up - potato, then summarize in one sentence.\n max_output_tokens: 1024\n model: - openai/gpt-oss-20b\n store: true\n stream: false\n tool_choice: - auto\n tools:\n - type: web_search_preview\n headers:\n accept: - ''*/*''\n content-type: application/json\n user-agent: python-httpx/0.28.1\n method: - POST\n path: /v1/responses\n query_params: {}\n response:\n body:\n conversation_id: - null\n created_at: 1783307879\n error: null\n id: resp_019f356e-aacf-7ea3-87c6-075c2fcc1eb2\n incomplete_details: - null\n instructions: null\n model: openai/gpt-oss-20b\n object: - response\n output:\n - content:\n - text: ''User: \"Use web - search to look up potato, then summarize in one sentence.\"\n We - need to call web_search. Use search query \"potato\". Provide let''''s\n say - count=5. Ask for news? Might not need. We just want general info.\n Probably - get definition. Use general web search. Use appropriate countries.\n Use - English. Use default. Ok.''\n type: reasoning_text\n encrypted_content: - null\n id: rs_8c5223df3fb54ba8\n status: null\n summary: - []\n type: reasoning\n - action:\n query: potato\n sources:\n - - title: Potato - Wikipedia\n url: https://en.wikipedia.org/wiki/Potato\n - - title: Potatoes | Potato Nutrition | Types of Potatoes | Recipes\n url: - https://potatogoodness.com/\n - title: Potato Facts\n url: - https://www.idahopotatomuseum.com/potato-facts/\n - title: Idaho Potato - Commission\n url: https://idahopotato.com/\n - title: Home - of U.S. Potato Farmers | Potatoes USA\n url: https://potatoesusa.com/\n type: - search\n id: ws_b67561c650733812\n status: completed\n type: - web_search_call\n - content:\n - text: ''We have a summary from - Wikipedia. Enough.\n\n\n Now produce one sentence summary: \"Potato - is a starchy tuberous vegetable\n native to the Americas, cultivated - from Solanum tuberosum, and is a staple\n food worldwide.\" Provide - brief.''\n type: reasoning_text\n encrypted_content: null\n id: - rs_9d6b942ea84e3e00\n status: null\n summary: []\n type: - reasoning\n - content:\n - annotations: []\n text: Potato - (Solanum tuberosum) is a starchy, underground tuber native\n to the - Americas that has been domesticated for thousands of years and\n is - today a staple food in many cultures worldwide.\n type: output_text\n id: - msg_a8af96caf08bdc00\n role: assistant\n status: completed\n type: - message\n previous_response_id: null\n status: completed\n usage:\n input_tokens: - 2285\n input_tokens_details:\n cached_tokens: 352\n output_tokens: - 204\n output_tokens_details:\n reasoning_tokens: 135\n total_tokens: - 2489\n headers:\n content-type: application/json\n status_code: 200\n","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"}]},"server":"repo","status":"completed","tool":"read_mcp_resource","type":"mcp_tool_call"},"output_index":1,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949041,"frequency_penalty":0.0,"id":"resp_019f5ba6-19b8-75b1-981a-6f8993e432a3","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":null,"tool_choice":"auto","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":0,"type":"response.created"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949041,"frequency_penalty":0.0,"id":"resp_019f5ba6-19b8-75b1-981a-6f8993e432a3","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":null,"tool_choice":"auto","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":1,"type":"response.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"content":[],"id":"818d5b6c757fe1eb","phase":null,"role":"assistant","status":"in_progress","type":"message"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"818d5b6c757fe1eb","output_index":0,"part":{"annotations":[],"logprobs":[],"text":"","type":"output_text"},"sequence_number":3,"type":"response.content_part.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":4,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":5,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Okay","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":6,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":7,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" let","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":8,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":9,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" see","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":10,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":11,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":12,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":13,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" asked","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":14,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":15,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" summarize","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":16,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":17,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" g","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":18,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"pt","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":19,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":20,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"oss","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":21,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_web","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":22,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":23,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_non","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":24,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"stream","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":25,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ing","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":26,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":27,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" cassette","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":28,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":29,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":30,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":31,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":32,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" has","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":33,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":34,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" lot","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":35,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" of","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":36,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" data","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":37,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":38,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":39,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":40,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":41,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":42,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" focus","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":43,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" on","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":44,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":45,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" key","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":46,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parts","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":47,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":48,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":49,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" YAML","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":50,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" file","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":51,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" seems","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":52,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":53,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" be","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":54,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":55,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" test","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":56,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" cassette","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":57,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" for","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":58,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":59,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" web","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":60,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" search","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":61,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" scenario","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":62,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":63,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":64,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" request","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":65,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" part","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":66,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" shows","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":67,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":68,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":69,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" query","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":70,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" about","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":71,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" potatoes","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":72,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":73,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":74,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":75,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":76,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" includes","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":77,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":78,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" summary","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":79,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" from","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":80,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Wikipedia","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":81,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":82,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":83,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" main","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":84,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" points","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":85,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" are","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":86,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":87,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" potato","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":88,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":89,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" origin","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":90,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":91,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" its","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":92,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" classification","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":93,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":94,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":95,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" st","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":96,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"archy","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":97,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tub","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":98,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"er","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":99,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":100,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":101,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" its","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":102,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" global","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":103,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" staple","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":104,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" status","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":105,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":106,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"I","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":107,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":108,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":109,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" cond","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":110,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ense","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":111,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" this","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":112,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" into","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":113,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":114,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"2","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":115,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":116,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"3","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":117,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sentences","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":118,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":119,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Also","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":120,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":121,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" mention","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":122,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":123,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":124,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" summary","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":125,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":126,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" generated","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":127,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" using","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":128,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":129,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":130,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":131,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":132,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":133,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":134,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":135,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Let","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":136,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":137,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" check","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":138,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":139,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":140,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":141,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":142,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" made","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":143,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correctly","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":144,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":145,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Yes","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":146,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":147,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":148,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":149,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":150,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" called","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":151,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":152,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":153,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" right","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":154,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":155,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":156,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":157,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":158,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":159,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":160,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" details","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":161,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":162,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" web","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":163,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" search","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":164,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" process","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":165,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":166,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":167,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" final","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":168,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" summary","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":169,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":170,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Alright","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":171,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":172,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" time","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":173,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":174,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" put","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":175,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" it","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":176,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" all","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":177,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" together","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":178,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" clearly","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":179,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":180,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":181,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n\n","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":182,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"The","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":183,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" `","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":184,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"g","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":185,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"pt","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":186,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":187,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"oss","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":188,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_web","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":189,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":190,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_non","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":191,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"stream","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":192,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ing","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":193,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":194,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"`","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":195,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" cassette","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":196,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" demonstrates","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":197,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":198,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" web","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":199,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" search","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":200,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" workflow","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":201,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" for","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":202,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":203,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" query","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":204,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":205,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"pot","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":206,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ato","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":207,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",\"","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":208,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resulting","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":209,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":210,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":211,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" summary","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":212,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" of","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":213,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":214,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" vegetable","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":215,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":216,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" characteristics","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":217,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":218,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" origin","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":219,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":220,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":221,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" global","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":222,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" significance","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":223,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":224,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":225,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" process","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":226,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" involved","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":227,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" retrieving","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":228,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" information","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":229,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" from","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":230,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sources","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":231,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" like","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":232,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Wikipedia","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":233,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":234,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" generating","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":235,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":236,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" concise","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":237,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" output","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":238,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":239,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" This","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":240,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" summary","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":241,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":242,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" derived","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":243,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" using","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":244,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":245,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" `","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":246,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"read","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":247,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":248,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":249,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":250,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"`","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":251,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":252,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":253,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" access","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":254,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":255,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" test","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":256,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" cassette","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":257,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" data","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":258,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":259,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"818d5b6c757fe1eb","logprobs":[],"output_index":0,"sequence_number":260,"text":"\nOkay, - let''s see. The user asked to summarize the gpt_oss_web_search_nonstreaming.yaml - cassette. The tool response has a lot of data, but I need to focus on the key - parts. The YAML file seems to be a test cassette for a web search scenario. - The request part shows a user query about potatoes, and the response includes - a summary from Wikipedia. The main points are the potato''s origin, its classification - as a starchy tuber, and its global staple status.\n\nI need to condense this - into 2-3 sentences. Also, mention that the summary was generated using the read_mcp_resource - tool. Let me check the tool call was made correctly. Yes, the function was called - with the right server and URI. The response details the web search process and - the final summary. Alright, time to put it all together clearly.\n\n\nThe - `gpt_oss_web_search_nonstreaming.yaml` cassette demonstrates a web search workflow - for the query \"potato,\" resulting in a summary of the vegetable''s characteristics, - origin, and global significance. The process involved retrieving information - from sources like Wikipedia and generating a concise output. This summary was - derived using the `read_mcp_resource` tool to access the test cassette data.","type":"response.output_text.done"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"818d5b6c757fe1eb","output_index":0,"part":{"annotations":[],"logprobs":null,"text":"\nOkay, - let''s see. The user asked to summarize the gpt_oss_web_search_nonstreaming.yaml - cassette. The tool response has a lot of data, but I need to focus on the key - parts. The YAML file seems to be a test cassette for a web search scenario. - The request part shows a user query about potatoes, and the response includes - a summary from Wikipedia. The main points are the potato''s origin, its classification - as a starchy tuber, and its global staple status.\n\nI need to condense this - into 2-3 sentences. Also, mention that the summary was generated using the read_mcp_resource - tool. Let me check the tool call was made correctly. Yes, the function was called - with the right server and URI. The response details the web search process and - the final summary. Alright, time to put it all together clearly.\n\n\nThe - `gpt_oss_web_search_nonstreaming.yaml` cassette demonstrates a web search workflow - for the query \"potato,\" resulting in a summary of the vegetable''s characteristics, - origin, and global significance. The process involved retrieving information - from sources like Wikipedia and generating a concise output. This summary was - derived using the `read_mcp_resource` tool to access the test cassette data.","type":"output_text"},"sequence_number":261,"type":"response.content_part.done"} - - ' - - ' - - ' - - 'data: {"item":{"content":[{"annotations":[],"logprobs":null,"text":"\nOkay, - let''s see. The user asked to summarize the gpt_oss_web_search_nonstreaming.yaml - cassette. The tool response has a lot of data, but I need to focus on the key - parts. The YAML file seems to be a test cassette for a web search scenario. - The request part shows a user query about potatoes, and the response includes - a summary from Wikipedia. The main points are the potato''s origin, its classification - as a starchy tuber, and its global staple status.\n\nI need to condense this - into 2-3 sentences. Also, mention that the summary was generated using the read_mcp_resource - tool. Let me check the tool call was made correctly. Yes, the function was called - with the right server and URI. The response details the web search process and - the final summary. Alright, time to put it all together clearly.\n\n\nThe - `gpt_oss_web_search_nonstreaming.yaml` cassette demonstrates a web search workflow - for the query \"potato,\" resulting in a summary of the vegetable''s characteristics, - origin, and global significance. The process involved retrieving information - from sources like Wikipedia and generating a concise output. This summary was - derived using the `read_mcp_resource` tool to access the test cassette data.","type":"output_text"}],"id":"818d5b6c757fe1eb","phase":null,"role":"assistant","status":"completed","summary":[],"type":"message"},"output_index":0,"sequence_number":262,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"response":{"conversation_id":null,"created_at":1783949043,"error":null,"id":"resp_019f5ba6-19b8-75b1-981a-6f8993e432a3","incomplete_details":null,"instructions":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[{"content":[{"text":"\nOkay, - the user wants me to use the read_mcp_resource function. The server label is - repo, and the URI they provided is repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml. - I need to call that function exactly once with those parameters. Once I get - the data from the resource, I have to summarize the YAML file in 2-3 sentences - and mention that I used the read_mcp_resource tool. Let me make sure I format - the tool call correctly in JSON inside the XML tags. I should check if the parameters - are correctly structured as per the function''s requirements. Alright, everything - seems in order. Let''s proceed with the tool call.\n","type":"reasoning_text"}],"encrypted_content":null,"id":"babe9b1b90830eef","status":null,"summary":[],"type":"reasoning"},{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"id":"mcp_984d48be1e31f41f","result":{"contents":[{"mimeType":"text/plain","text":"turns:\n- - filename: t1\n request:\n body:\n input: Use web search to look up - potato, then summarize in one sentence.\n max_output_tokens: 1024\n model: - openai/gpt-oss-20b\n store: true\n stream: false\n tool_choice: - auto\n tools:\n - type: web_search_preview\n headers:\n accept: - ''*/*''\n content-type: application/json\n user-agent: python-httpx/0.28.1\n method: - POST\n path: /v1/responses\n query_params: {}\n response:\n body:\n conversation_id: - null\n created_at: 1783307879\n error: null\n id: resp_019f356e-aacf-7ea3-87c6-075c2fcc1eb2\n incomplete_details: - null\n instructions: null\n model: openai/gpt-oss-20b\n object: - response\n output:\n - content:\n - text: ''User: \"Use web - search to look up potato, then summarize in one sentence.\"\n We - need to call web_search. Use search query \"potato\". Provide let''''s\n say - count=5. Ask for news? Might not need. We just want general info.\n Probably - get definition. Use general web search. Use appropriate countries.\n Use - English. Use default. Ok.''\n type: reasoning_text\n encrypted_content: - null\n id: rs_8c5223df3fb54ba8\n status: null\n summary: - []\n type: reasoning\n - action:\n query: potato\n sources:\n - - title: Potato - Wikipedia\n url: https://en.wikipedia.org/wiki/Potato\n - - title: Potatoes | Potato Nutrition | Types of Potatoes | Recipes\n url: - https://potatogoodness.com/\n - title: Potato Facts\n url: - https://www.idahopotatomuseum.com/potato-facts/\n - title: Idaho Potato - Commission\n url: https://idahopotato.com/\n - title: Home - of U.S. Potato Farmers | Potatoes USA\n url: https://potatoesusa.com/\n type: - search\n id: ws_b67561c650733812\n status: completed\n type: - web_search_call\n - content:\n - text: ''We have a summary from - Wikipedia. Enough.\n\n\n Now produce one sentence summary: \"Potato - is a starchy tuberous vegetable\n native to the Americas, cultivated - from Solanum tuberosum, and is a staple\n food worldwide.\" Provide - brief.''\n type: reasoning_text\n encrypted_content: null\n id: - rs_9d6b942ea84e3e00\n status: null\n summary: []\n type: - reasoning\n - content:\n - annotations: []\n text: Potato - (Solanum tuberosum) is a starchy, underground tuber native\n to the - Americas that has been domesticated for thousands of years and\n is - today a staple food in many cultures worldwide.\n type: output_text\n id: - msg_a8af96caf08bdc00\n role: assistant\n status: completed\n type: - message\n previous_response_id: null\n status: completed\n usage:\n input_tokens: - 2285\n input_tokens_details:\n cached_tokens: 352\n output_tokens: - 204\n output_tokens_details:\n reasoning_tokens: 135\n total_tokens: - 2489\n headers:\n content-type: application/json\n status_code: 200\n","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"}]},"server":"repo","status":"completed","tool":"read_mcp_resource","type":"mcp_tool_call"},{"content":[{"annotations":[],"text":"\nOkay, - let''s see. The user asked to summarize the gpt_oss_web_search_nonstreaming.yaml - cassette. The tool response has a lot of data, but I need to focus on the key - parts. The YAML file seems to be a test cassette for a web search scenario. - The request part shows a user query about potatoes, and the response includes - a summary from Wikipedia. The main points are the potato''s origin, its classification - as a starchy tuber, and its global staple status.\n\nI need to condense this - into 2-3 sentences. Also, mention that the summary was generated using the read_mcp_resource - tool. Let me check the tool call was made correctly. Yes, the function was called - with the right server and URI. The response details the web search process and - the final summary. Alright, time to put it all together clearly.\n\n\nThe - `gpt_oss_web_search_nonstreaming.yaml` cassette demonstrates a web search workflow - for the query \"potato,\" resulting in a summary of the vegetable''s characteristics, - origin, and global significance. The process involved retrieving information - from sources like Wikipedia and generating a concise output. This summary was - derived using the `read_mcp_resource` tool to access the test cassette data.","type":"output_text"}],"id":"818d5b6c757fe1eb","role":"assistant","status":"completed","type":"message"}],"previous_response_id":null,"status":"completed","usage":{"input_tokens":1725,"input_tokens_details":{"cached_tokens":720},"output_tokens":466,"output_tokens_details":{"reasoning_tokens":323},"total_tokens":2191}},"type":"response.completed"} - - ' - - ' - - ' - - 'data: [DONE] - - ' - - ' - - ' - status_code: 200 diff --git a/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-connection-refused-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml b/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-connection-refused-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml deleted file mode 100644 index 5547ea4..0000000 --- a/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-connection-refused-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml +++ /dev/null @@ -1,3536 +0,0 @@ -turns: -- filename: t1 - request: - body: - input: 'You have one MCP resource tool available: read_mcp_resource. The MCP - server label is repo. Call read_mcp_resource exactly once with server repo - and uri repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml. - If the call fails, report the error you received in one sentence.' - max_output_tokens: 1024 - model: Qwen/Qwen3-30B-A3B-FP8 - store: true - stream: true - tool_choice: required - tools: - - name: read_mcp_resource - server_label: repo - server_url: http://127.0.0.1:1/mcp - type: mcp - headers: - accept: '*/*' - content-type: application/json - user-agent: python-httpx/0.28.1 - method: POST - path: /v1/responses - query_params: {} - response: - headers: - content-type: text/event-stream; charset=utf-8 - sse: - - 'data: {"response":{"background":false,"created_at":1783949051,"frequency_penalty":0.0,"id":"resp_019f5ba6-4619-7e91-9bc6-23172bc36bc0","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":{"format":{"description":null,"name":"tool_calling_response","schema":{"items":{"anyOf":[{"properties":{"name":{"enum":["read_mcp_resource"],"type":"string"},"parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"}},"required":["name","parameters"]}],"type":"object"},"minItems":1,"type":"array"},"strict":true,"type":"json_schema"},"verbosity":null},"tool_choice":"required","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":0,"type":"response.created"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949051,"frequency_penalty":0.0,"id":"resp_019f5ba6-4619-7e91-9bc6-23172bc36bc0","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":{"format":{"description":null,"name":"tool_calling_response","schema":{"items":{"anyOf":[{"properties":{"name":{"enum":["read_mcp_resource"],"type":"string"},"parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"}},"required":["name","parameters"]}],"type":"object"},"minItems":1,"type":"array"},"strict":true,"type":"json_schema"},"verbosity":null},"tool_choice":"required","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":1,"type":"response.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"content":null,"encrypted_content":null,"id":"9d5cb45e2e12beba","status":"in_progress","summary":[],"type":"reasoning"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"9d5cb45e2e12beba","output_index":0,"part":{"text":"","type":"reasoning_text"},"sequence_number":3,"type":"response.reasoning_part.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":4,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Okay","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":5,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":6,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" let","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":7,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":8,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" try","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":9,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":10,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" figure","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":11,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" out","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":12,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" how","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":13,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":14,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" handle","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":15,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" this","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":16,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":17,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":18,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" request","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":19,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":20,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" They","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":21,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" mentioned","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":22,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":23,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":24,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" have","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":25,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" access","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":26,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":27,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":28,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":29,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":30,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":31,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":32,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":33,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":34,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" which","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":35,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":36,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" used","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":37,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":38,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":39,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":40,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resource","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":41,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" by","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":42,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":43,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" from","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":44,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" an","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":45,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":46,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":47,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":48,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":49,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":50,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":51,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":52,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" given","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":53,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":54,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":55,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":56,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":57,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":58,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":59,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":60,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" they","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":61,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" want","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":62,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":63,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":64,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" use","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":65,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":66,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":67,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":68,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":69,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cr","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":70,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ates","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":71,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/ag","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":72,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"entic","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":73,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-server","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":74,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-core","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":75,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/tests","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":76,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/c","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":77,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"asset","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":78,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"tes","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":79,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/web","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":80,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":81,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/g","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":82,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"pt","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":83,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":84,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"oss","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":85,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_web","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":86,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":87,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_non","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":88,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"stream","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":89,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ing","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":90,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":91,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":92,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":93,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"First","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":94,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":95,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":96,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":97,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":98,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":99,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sure","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":100,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":101,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" understand","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":102,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":103,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":104,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" required","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":105,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" for","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":106,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":107,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":108,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":109,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":110,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":111,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" requires","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":112,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" both","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":113,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":114,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"server","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":115,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":116,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":117,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":118,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"uri","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":119,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":120,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":121,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":122,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":123,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":124,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specified","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":125,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":126,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":127,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":128,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":129,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":130,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":131,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":132,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":133,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":134,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":135,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":136,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" long","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":137,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" path","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":138,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":139,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" So","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":140,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":141,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":142,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" structure","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":143,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":144,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":145,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":146,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":147,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" those","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":148,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exact","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":149,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" values","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":150,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":151,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Wait","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":152,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":153,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":154,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":155,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" starts","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":156,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":157,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":158,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":159,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":160,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":161,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" which","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":162,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" might","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":163,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" be","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":164,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":165,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specific","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":166,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" format","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":167,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":168,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":169,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" expects","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":170,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":171,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":172,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":173,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":174,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" pass","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":175,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":176,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":177,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":178,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-is","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":179,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":180,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":181,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":182,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" also","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":183,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" said","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":184,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":185,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":186,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":187,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":188,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exactly","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":189,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" once","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":190,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":191,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" So","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":192,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":193,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" shouldn","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":194,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":195,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" do","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":196,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" anything","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":197,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" else","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":198,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":199,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":200,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":201,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" single","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":202,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":203,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":204,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"The","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":205,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":206,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" mentioned","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":207,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":208,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":209,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":210,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":211,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" fails","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":212,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":213,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":214,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":215,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" report","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":216,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":217,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":218,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":219,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" one","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":220,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sentence","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":221,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":222,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" But","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":223,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" since","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":224,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":225,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''m","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":226,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" just","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":227,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sim","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":228,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ulating","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":229,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":230,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" process","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":231,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":232,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":233,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" don","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":234,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":235,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" actually","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":236,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" have","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":237,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":238,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" capability","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":239,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":240,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":241,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":242,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":243,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":244,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" However","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":245,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":246,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":247,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":248,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" real","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":249,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" scenario","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":250,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":251,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":252,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" would","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":253,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":254,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":255,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" handle","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":256,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" any","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":257,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exceptions","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":258,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" or","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":259,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" errors","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":260,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":261,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" might","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":262,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" occur","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":263,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" during","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":264,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":265,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" HTTP","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":266,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" request","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":267,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":268,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" But","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":269,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" for","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":270,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" this","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":271,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" task","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":272,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":273,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":274,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" just","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":275,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":276,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":277,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" generate","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":278,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":279,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correct","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":280,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":281,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":282,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":283,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"So","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":284,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":285,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correct","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":286,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" JSON","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":287,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" object","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":288,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":289,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" have","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":290,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":291,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" name","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":292,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":293,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"read","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":294,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":295,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":296,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":297,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":298,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":299,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":300,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" arguments","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":301,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":302,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":303,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":304,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":305,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":306,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":307,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" uri","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":308,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":309,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":310,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":311,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cr","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":312,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ates","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":313,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/ag","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":314,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"entic","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":315,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-server","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":316,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-core","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":317,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/tests","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":318,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/c","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":319,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"asset","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":320,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"tes","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":321,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/web","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":322,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":323,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/g","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":324,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"pt","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":325,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":326,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"oss","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":327,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_web","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":328,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":329,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_non","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":330,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"stream","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":331,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ing","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":332,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":333,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":334,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":335,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":336,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":337,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":338,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sure","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":339,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" there","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":340,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" are","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":341,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" no","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":342,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ty","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":343,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"pos","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":344,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":345,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":346,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" JSON","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":347,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" structure","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":348,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":349,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Also","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":350,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":351,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" check","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":352,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":353,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":354,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":355,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" are","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":356,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" required","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":357,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":358,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":359,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":360,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":361,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":362,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" uri","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":363,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" are","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":364,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correctly","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":365,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" formatted","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":366,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":367,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"I","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":368,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" think","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":369,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":370,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":371,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" all","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":372,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":373,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Just","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":374,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":375,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":376,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" output","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":377,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":378,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":379,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_call","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":380,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" XML","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":381,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":382,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":383,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correct","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":384,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" JSON","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":385,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" inside","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":386,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n","item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":387,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"9d5cb45e2e12beba","output_index":0,"sequence_number":388,"text":"\nOkay, - let me try to figure out how to handle this user''s request. They mentioned - that I have access to the read_mcp_resource function, which is used to read - a resource by URI from an MCP server. The server label is given as \"repo\", - and the URI they want me to use is \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - \n\nFirst, I need to make sure I understand the parameters required for the - function. The function requires both \"server\" and \"uri\" parameters. The - user specified the server as \"repo\" and the URI as that long path. So I should - structure the function call with those exact values.\n\nWait, the URI starts - with \"repo://\", which might be a specific format the server expects. I need - to pass that URI as-is. The user also said to call the function exactly once. - So I shouldn''t do anything else but make that single call.\n\nThe user mentioned - that if the call fails, I should report the error in one sentence. But since - I''m just simulating the process, I don''t actually have the capability to make - the call. However, in a real scenario, I would need to handle any exceptions - or errors that might occur during the HTTP request. But for this task, I just - need to generate the correct tool call.\n\nSo the correct JSON object should - have the name \"read_mcp_resource\" and the arguments with server \"repo\" and - uri \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - I need to make sure there are no typos in the JSON structure. Also, check that - the parameters are required and that the server and uri are correctly formatted.\n\nI - think that''s all. Just need to output the tool_call XML with the correct JSON - inside.\n","type":"response.reasoning_text.done"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"9d5cb45e2e12beba","output_index":0,"part":{"text":"\nOkay, - let me try to figure out how to handle this user''s request. They mentioned - that I have access to the read_mcp_resource function, which is used to read - a resource by URI from an MCP server. The server label is given as \"repo\", - and the URI they want me to use is \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - \n\nFirst, I need to make sure I understand the parameters required for the - function. The function requires both \"server\" and \"uri\" parameters. The - user specified the server as \"repo\" and the URI as that long path. So I should - structure the function call with those exact values.\n\nWait, the URI starts - with \"repo://\", which might be a specific format the server expects. I need - to pass that URI as-is. The user also said to call the function exactly once. - So I shouldn''t do anything else but make that single call.\n\nThe user mentioned - that if the call fails, I should report the error in one sentence. But since - I''m just simulating the process, I don''t actually have the capability to make - the call. However, in a real scenario, I would need to handle any exceptions - or errors that might occur during the HTTP request. But for this task, I just - need to generate the correct tool call.\n\nSo the correct JSON object should - have the name \"read_mcp_resource\" and the arguments with server \"repo\" and - uri \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - I need to make sure there are no typos in the JSON structure. Also, check that - the parameters are required and that the server and uri are correctly formatted.\n\nI - think that''s all. Just need to output the tool_call XML with the correct JSON - inside.\n","type":"reasoning_text"},"sequence_number":389,"type":"response.reasoning_part.done"} - - ' - - ' - - ' - - 'data: {"item":{"content":[{"text":"\nOkay, let me try to figure out how to - handle this user''s request. They mentioned that I have access to the read_mcp_resource - function, which is used to read a resource by URI from an MCP server. The server - label is given as \"repo\", and the URI they want me to use is \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - \n\nFirst, I need to make sure I understand the parameters required for the - function. The function requires both \"server\" and \"uri\" parameters. The - user specified the server as \"repo\" and the URI as that long path. So I should - structure the function call with those exact values.\n\nWait, the URI starts - with \"repo://\", which might be a specific format the server expects. I need - to pass that URI as-is. The user also said to call the function exactly once. - So I shouldn''t do anything else but make that single call.\n\nThe user mentioned - that if the call fails, I should report the error in one sentence. But since - I''m just simulating the process, I don''t actually have the capability to make - the call. However, in a real scenario, I would need to handle any exceptions - or errors that might occur during the HTTP request. But for this task, I just - need to generate the correct tool call.\n\nSo the correct JSON object should - have the name \"read_mcp_resource\" and the arguments with server \"repo\" and - uri \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - I need to make sure there are no typos in the JSON structure. Also, check that - the parameters are required and that the server and uri are correctly formatted.\n\nI - think that''s all. Just need to output the tool_call XML with the correct JSON - inside.\n","type":"reasoning_text"}],"encrypted_content":null,"id":"9d5cb45e2e12beba","status":"completed","summary":[],"type":"reasoning"},"output_index":0,"sequence_number":390,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"id":"mcp_8957973f0e080557","server":"repo","status":"in_progress","tool":"read_mcp_resource","type":"mcp_tool_call"},"output_index":1,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"item_id":"mcp_8957973f0e080557","output_index":1,"type":"response.mcp_tool_call.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"error":"MCP - server ''repo'' failed to connect: failed to connect to MCP server","id":"mcp_8957973f0e080557","server":"repo","status":"failed","tool":"read_mcp_resource","type":"mcp_tool_call"},"item_id":"mcp_8957973f0e080557","output_index":1,"type":"response.mcp_tool_call.completed"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"error":"MCP - server ''repo'' failed to connect: failed to connect to MCP server","id":"mcp_8957973f0e080557","server":"repo","status":"failed","tool":"read_mcp_resource","type":"mcp_tool_call"},"output_index":1,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949054,"frequency_penalty":0.0,"id":"resp_019f5ba6-4619-7e91-9bc6-23172bc36bc0","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":null,"tool_choice":"auto","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":0,"type":"response.created"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949054,"frequency_penalty":0.0,"id":"resp_019f5ba6-4619-7e91-9bc6-23172bc36bc0","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":null,"tool_choice":"auto","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":1,"type":"response.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"content":[],"id":"bbd5c621572c64ef","phase":null,"role":"assistant","status":"in_progress","type":"message"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"bbd5c621572c64ef","output_index":0,"part":{"annotations":[],"logprobs":[],"text":"","type":"output_text"},"sequence_number":3,"type":"response.content_part.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":4,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":5,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Okay","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":6,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":7,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":8,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":9,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" asked","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":10,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":11,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":12,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":13,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":14,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":15,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":16,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":17,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":18,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":19,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":20,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specific","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":21,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":22,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":23,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":24,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" generated","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":25,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":26,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":27,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":28,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correctly","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":29,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":30,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":31,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":32,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":33,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" indicates","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":34,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":35,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failure","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":36,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":37,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":38,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":39,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" message","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":40,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" says","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":41,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":42,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":43,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":44,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":45,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":46,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":47,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":48,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":49,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" connect","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":50,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":51,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":52,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":53,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":54,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" report","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":55,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" this","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":56,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":57,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":58,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" one","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":59,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sentence","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":60,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":61,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" instructed","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":62,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":63,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"I","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":64,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":65,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" check","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":66,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":67,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" there","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":68,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":69,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" any","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":70,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" additional","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":71,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" information","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":72,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" needed","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":73,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":74,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":75,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":76,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":77,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specified","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":78,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":79,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" report","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":80,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":81,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":82,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" received","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":83,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":84,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":85,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":86,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" message","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":87,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" from","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":88,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":89,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":90,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":91,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":92,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" clear","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":93,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":":","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":94,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":95,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"M","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":96,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"CP","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":97,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":98,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":99,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":100,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":101,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":102,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":103,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" connect","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":104,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":":","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":105,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":106,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":107,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" connect","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":108,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":109,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":110,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":111,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\".","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":112,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":113,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":114,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" present","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":115,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" this","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":116,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exactly","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":117,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":118,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" it","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":119,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":120,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":121,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" without","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":122,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" adding","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":123,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" anything","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":124,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" else","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":125,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":126,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Make","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":127,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sure","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":128,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" it","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":129,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":130,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":131,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" single","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":132,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sentence","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":133,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":134,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Alright","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":135,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":136,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":137,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":138,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" straightforward","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":139,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":140,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":141,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n\n","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":142,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"The","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":143,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":144,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":145,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":146,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":147,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":148,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":149,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":150,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" connect","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":151,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":":","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":152,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":153,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":154,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" connect","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":155,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":156,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":157,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":158,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":159,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"bbd5c621572c64ef","logprobs":[],"output_index":0,"sequence_number":160,"text":"\nOkay, - the user asked me to call the read_mcp_resource function with specific parameters. - I generated the tool call correctly, but the response indicates a failure. The - error message says the MCP server ''repo'' failed to connect. I need to report - this error in one sentence as instructed.\n\nI should check if there''s any - additional information needed, but the user specified to report the error received. - The error message from the tool response is clear: \"MCP server ''repo'' failed - to connect: failed to connect to MCP server\". I should present this exactly - as it is, without adding anything else. Make sure it''s a single sentence. Alright, - that''s straightforward.\n\n\nThe MCP server ''repo'' failed to connect: - failed to connect to MCP server.","type":"response.output_text.done"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"bbd5c621572c64ef","output_index":0,"part":{"annotations":[],"logprobs":null,"text":"\nOkay, - the user asked me to call the read_mcp_resource function with specific parameters. - I generated the tool call correctly, but the response indicates a failure. The - error message says the MCP server ''repo'' failed to connect. I need to report - this error in one sentence as instructed.\n\nI should check if there''s any - additional information needed, but the user specified to report the error received. - The error message from the tool response is clear: \"MCP server ''repo'' failed - to connect: failed to connect to MCP server\". I should present this exactly - as it is, without adding anything else. Make sure it''s a single sentence. Alright, - that''s straightforward.\n\n\nThe MCP server ''repo'' failed to connect: - failed to connect to MCP server.","type":"output_text"},"sequence_number":161,"type":"response.content_part.done"} - - ' - - ' - - ' - - 'data: {"item":{"content":[{"annotations":[],"logprobs":null,"text":"\nOkay, - the user asked me to call the read_mcp_resource function with specific parameters. - I generated the tool call correctly, but the response indicates a failure. The - error message says the MCP server ''repo'' failed to connect. I need to report - this error in one sentence as instructed.\n\nI should check if there''s any - additional information needed, but the user specified to report the error received. - The error message from the tool response is clear: \"MCP server ''repo'' failed - to connect: failed to connect to MCP server\". I should present this exactly - as it is, without adding anything else. Make sure it''s a single sentence. Alright, - that''s straightforward.\n\n\nThe MCP server ''repo'' failed to connect: - failed to connect to MCP server.","type":"output_text"}],"id":"bbd5c621572c64ef","phase":null,"role":"assistant","status":"completed","summary":[],"type":"message"},"output_index":0,"sequence_number":162,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"response":{"conversation_id":null,"created_at":1783949055,"error":null,"id":"resp_019f5ba6-4619-7e91-9bc6-23172bc36bc0","incomplete_details":null,"instructions":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[{"content":[{"text":"\nOkay, - let me try to figure out how to handle this user''s request. They mentioned - that I have access to the read_mcp_resource function, which is used to read - a resource by URI from an MCP server. The server label is given as \"repo\", - and the URI they want me to use is \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - \n\nFirst, I need to make sure I understand the parameters required for the - function. The function requires both \"server\" and \"uri\" parameters. The - user specified the server as \"repo\" and the URI as that long path. So I should - structure the function call with those exact values.\n\nWait, the URI starts - with \"repo://\", which might be a specific format the server expects. I need - to pass that URI as-is. The user also said to call the function exactly once. - So I shouldn''t do anything else but make that single call.\n\nThe user mentioned - that if the call fails, I should report the error in one sentence. But since - I''m just simulating the process, I don''t actually have the capability to make - the call. However, in a real scenario, I would need to handle any exceptions - or errors that might occur during the HTTP request. But for this task, I just - need to generate the correct tool call.\n\nSo the correct JSON object should - have the name \"read_mcp_resource\" and the arguments with server \"repo\" and - uri \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - I need to make sure there are no typos in the JSON structure. Also, check that - the parameters are required and that the server and uri are correctly formatted.\n\nI - think that''s all. Just need to output the tool_call XML with the correct JSON - inside.\n","type":"reasoning_text"}],"encrypted_content":null,"id":"9d5cb45e2e12beba","status":null,"summary":[],"type":"reasoning"},{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"error":"MCP - server ''repo'' failed to connect: failed to connect to MCP server","id":"mcp_8957973f0e080557","server":"repo","status":"failed","tool":"read_mcp_resource","type":"mcp_tool_call"},{"content":[{"annotations":[],"text":"\nOkay, - the user asked me to call the read_mcp_resource function with specific parameters. - I generated the tool call correctly, but the response indicates a failure. The - error message says the MCP server ''repo'' failed to connect. I need to report - this error in one sentence as instructed.\n\nI should check if there''s any - additional information needed, but the user specified to report the error received. - The error message from the tool response is clear: \"MCP server ''repo'' failed - to connect: failed to connect to MCP server\". I should present this exactly - as it is, without adding anything else. Make sure it''s a single sentence. Alright, - that''s straightforward.\n\n\nThe MCP server ''repo'' failed to connect: - failed to connect to MCP server.","type":"output_text"}],"id":"bbd5c621572c64ef","role":"assistant","status":"completed","type":"message"}],"previous_response_id":null,"status":"completed","usage":{"input_tokens":1028,"input_tokens_details":{"cached_tokens":928},"output_tokens":593,"output_tokens_details":{"reasoning_tokens":520},"total_tokens":1621}},"type":"response.completed"} - - ' - - ' - - ' - - 'data: [DONE] - - ' - - ' - - ' - status_code: 200 diff --git a/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-missing-resource-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml b/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-missing-resource-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml deleted file mode 100644 index 5234bff..0000000 --- a/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-missing-resource-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml +++ /dev/null @@ -1,4374 +0,0 @@ -turns: -- filename: t1 - request: - body: - input: 'You have one MCP resource tool available: read_mcp_resource. The MCP - server label is repo. Call read_mcp_resource exactly once with server repo - and uri repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml.' - max_output_tokens: 4096 - model: Qwen/Qwen3-30B-A3B-FP8 - store: true - stream: true - tool_choice: required - tools: - - name: read_mcp_resource - server_label: repo - server_url: http://localhost:8000/mcp - type: mcp - headers: - accept: '*/*' - content-type: application/json - user-agent: python-httpx/0.28.1 - method: POST - path: /v1/responses - query_params: {} - response: - headers: - content-type: text/event-stream; charset=utf-8 - sse: - - 'data: {"response":{"background":false,"created_at":1783949057,"frequency_penalty":0.0,"id":"resp_019f5ba6-5bdc-7f20-b756-1d689b62bfac","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":4096,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":{"format":{"description":null,"name":"tool_calling_response","schema":{"items":{"anyOf":[{"properties":{"name":{"enum":["read_mcp_resource"],"type":"string"},"parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"}},"required":["name","parameters"]}],"type":"object"},"minItems":1,"type":"array"},"strict":true,"type":"json_schema"},"verbosity":null},"tool_choice":"required","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":0,"type":"response.created"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949057,"frequency_penalty":0.0,"id":"resp_019f5ba6-5bdc-7f20-b756-1d689b62bfac","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":4096,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":{"format":{"description":null,"name":"tool_calling_response","schema":{"items":{"anyOf":[{"properties":{"name":{"enum":["read_mcp_resource"],"type":"string"},"parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"}},"required":["name","parameters"]}],"type":"object"},"minItems":1,"type":"array"},"strict":true,"type":"json_schema"},"verbosity":null},"tool_choice":"required","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":1,"type":"response.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"content":null,"encrypted_content":null,"id":"8666e0cbdb195372","status":"in_progress","summary":[],"type":"reasoning"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"8666e0cbdb195372","output_index":0,"part":{"text":"","type":"reasoning_text"},"sequence_number":3,"type":"response.reasoning_part.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":4,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Okay","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":5,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":6,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" let","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":7,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":8,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" try","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":9,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":10,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" figure","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":11,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" this","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":12,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" out","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":13,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":14,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":15,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":16,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" wants","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":17,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":18,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":19,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":20,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":21,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":22,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":23,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":24,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":25,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":26,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" once","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":27,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":28,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":29,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":30,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":31,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":32,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":33,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":34,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\",","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":35,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":36,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":37,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":38,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" they","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":39,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" provided","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":40,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":41,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":42,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":43,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":44,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cr","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":45,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ates","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":46,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/ag","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":47,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"entic","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":48,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-server","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":49,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-core","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":50,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/tests","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":51,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/c","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":52,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"asset","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":53,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"tes","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":54,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/m","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":55,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":56,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":57,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"does","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":58,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-not","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":59,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-ex","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":60,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ist","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":61,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":62,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":63,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":64,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"First","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":65,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":66,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":67,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":68,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":69,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":70,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sure","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":71,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":72,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" understand","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":73,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":74,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":75,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":76,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":77,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":78,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":79,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" requires","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":80,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" both","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":81,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":82,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"server","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":83,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":84,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":85,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":86,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"uri","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":87,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":88,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":89,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":90,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":91,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":92,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":93,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" given","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":94,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":95,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":96,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":97,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\",","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":98,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":99,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":100,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":101,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":102,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":103,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" long","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":104,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" string","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":105,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" they","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":106,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" mentioned","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":107,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":108,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":109,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Wait","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":110,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":111,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":112,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":113,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" starts","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":114,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":115,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":116,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":117,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":118,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\",","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":119,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" which","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":120,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" might","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":121,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" be","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":122,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":123,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specific","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":124,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" format","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":125,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" for","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":126,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":127,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":128,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":129,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":130,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":131,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":132,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" use","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":133,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":134,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exact","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":135,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":136,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" they","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":137,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" provided","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":138,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":139,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":140,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":141,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" emphasized","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":142,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":143,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":144,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":145,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":146,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exactly","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":147,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" once","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":148,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":149,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" those","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":150,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":151,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":152,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":153,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"I","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":154,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":155,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" check","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":156,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":157,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" there","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":158,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" are","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":159,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" any","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":160,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" other","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":161,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":162,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" or","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":163,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":164,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" there","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":165,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":166,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":167,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" chance","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":168,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":169,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" might","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":170,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" mis","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":171,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"interpret","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":172,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":173,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":174,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":175,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" But","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":176,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" according","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":177,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":178,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":179,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" problem","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":180,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" statement","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":181,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":182,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":183,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":184,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":185,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" straightforward","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":186,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":187,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" So","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":188,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":189,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" just","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":190,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":191,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":192,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" structure","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":193,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":194,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" JSON","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":195,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correctly","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":196,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":197,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":198,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":199,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":200,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" uri","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":201,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" fields","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":202,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":203,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"I","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":204,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" think","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":205,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":206,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":207,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" all","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":208,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":209,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":210,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":211,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":212,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" testing","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":213,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":214,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":215,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" can","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":216,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correctly","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":217,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" format","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":218,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":219,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":220,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":221,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":222,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":223,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" given","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":224,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":225,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":226,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" No","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":227,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":228,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":229,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" over","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":230,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"comp","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":231,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"licate","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":232,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" it","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":233,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":234,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Just","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":235,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" pass","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":236,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":237,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":238,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":239,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":240,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":241,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":242,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":243,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":244,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":245,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":246,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specified","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":247,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n","item_id":"8666e0cbdb195372","output_index":0,"sequence_number":248,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"8666e0cbdb195372","output_index":0,"sequence_number":249,"text":"\nOkay, - let me try to figure this out. The user wants me to call the read_mcp_resource - function once. The server label is \"repo\", and the URI they provided is \"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml\". - \n\nFirst, I need to make sure I understand the function parameters. The function - requires both \"server\" and \"uri\" parameters. The server is given as \"repo\", - and the URI is the long string they mentioned. \n\nWait, the URI starts with - \"repo://\", which might be a specific format for the MCP server. I should use - the exact URI they provided. The user emphasized to call the function exactly - once with those parameters. \n\nI should check if there are any other parameters - or if there''s a chance I might misinterpret the URI. But according to the problem - statement, the URI is straightforward. So I just need to structure the JSON - correctly with the server and uri fields.\n\nI think that''s all. The user is - testing if I can correctly format the tool call with the given parameters. No - need to overcomplicate it. Just pass the server as \"repo\" and the URI as specified.\n","type":"response.reasoning_text.done"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"8666e0cbdb195372","output_index":0,"part":{"text":"\nOkay, - let me try to figure this out. The user wants me to call the read_mcp_resource - function once. The server label is \"repo\", and the URI they provided is \"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml\". - \n\nFirst, I need to make sure I understand the function parameters. The function - requires both \"server\" and \"uri\" parameters. The server is given as \"repo\", - and the URI is the long string they mentioned. \n\nWait, the URI starts with - \"repo://\", which might be a specific format for the MCP server. I should use - the exact URI they provided. The user emphasized to call the function exactly - once with those parameters. \n\nI should check if there are any other parameters - or if there''s a chance I might misinterpret the URI. But according to the problem - statement, the URI is straightforward. So I just need to structure the JSON - correctly with the server and uri fields.\n\nI think that''s all. The user is - testing if I can correctly format the tool call with the given parameters. No - need to overcomplicate it. Just pass the server as \"repo\" and the URI as specified.\n","type":"reasoning_text"},"sequence_number":250,"type":"response.reasoning_part.done"} - - ' - - ' - - ' - - 'data: {"item":{"content":[{"text":"\nOkay, let me try to figure this out. The - user wants me to call the read_mcp_resource function once. The server label - is \"repo\", and the URI they provided is \"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml\". - \n\nFirst, I need to make sure I understand the function parameters. The function - requires both \"server\" and \"uri\" parameters. The server is given as \"repo\", - and the URI is the long string they mentioned. \n\nWait, the URI starts with - \"repo://\", which might be a specific format for the MCP server. I should use - the exact URI they provided. The user emphasized to call the function exactly - once with those parameters. \n\nI should check if there are any other parameters - or if there''s a chance I might misinterpret the URI. But according to the problem - statement, the URI is straightforward. So I just need to structure the JSON - correctly with the server and uri fields.\n\nI think that''s all. The user is - testing if I can correctly format the tool call with the given parameters. No - need to overcomplicate it. Just pass the server as \"repo\" and the URI as specified.\n","type":"reasoning_text"}],"encrypted_content":null,"id":"8666e0cbdb195372","status":"completed","summary":[],"type":"reasoning"},"output_index":0,"sequence_number":251,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml"},"id":"mcp_a72be084f6711a34","server":"repo","status":"in_progress","tool":"read_mcp_resource","type":"mcp_tool_call"},"output_index":1,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"item_id":"mcp_a72be084f6711a34","output_index":1,"type":"response.mcp_tool_call.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml"},"error":"resources/read - failed: MCP operation failed during resources/read","id":"mcp_a72be084f6711a34","server":"repo","status":"failed","tool":"read_mcp_resource","type":"mcp_tool_call"},"item_id":"mcp_a72be084f6711a34","output_index":1,"type":"response.mcp_tool_call.completed"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml"},"error":"resources/read - failed: MCP operation failed during resources/read","id":"mcp_a72be084f6711a34","server":"repo","status":"failed","tool":"read_mcp_resource","type":"mcp_tool_call"},"output_index":1,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949059,"frequency_penalty":0.0,"id":"resp_019f5ba6-5bdc-7f20-b756-1d689b62bfac","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":4096,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":null,"tool_choice":"auto","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":0,"type":"response.created"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949059,"frequency_penalty":0.0,"id":"resp_019f5ba6-5bdc-7f20-b756-1d689b62bfac","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":4096,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":null,"tool_choice":"auto","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":1,"type":"response.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"content":[],"id":"ad3b625206d95b56","phase":null,"role":"assistant","status":"in_progress","type":"message"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"ad3b625206d95b56","output_index":0,"part":{"annotations":[],"logprobs":[],"text":"","type":"output_text"},"sequence_number":3,"type":"response.content_part.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":4,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":5,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Okay","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":6,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":7,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":8,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":9,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" asked","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":10,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":11,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":12,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":13,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":14,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":15,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":16,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":17,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":18,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":19,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":20,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":21,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specific","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":22,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":23,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":24,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":25,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":26,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":27,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" did","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":28,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":29,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":30,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":31,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":32,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":33,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":34,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" an","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":35,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":36,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":":","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":37,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":38,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"resources","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":39,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/read","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":40,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":41,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":":","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":42,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":43,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" operation","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":44,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":45,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" during","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":46,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resources","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":47,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/read","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":48,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":49,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Hmm","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":50,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":51,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":52,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":53,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" message","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":54,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" isn","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":55,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":56,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" very","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":57,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" detailed","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":58,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":59,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Let","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":60,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":61,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" think","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":62,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" about","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":63,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" what","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":64,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" could","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":65,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" have","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":66,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" gone","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":67,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" wrong","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":68,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":69,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"First","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":70,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":71,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":72,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":73,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" they","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":74,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" provided","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":75,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":76,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":77,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":78,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":79,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cr","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":80,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ates","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":81,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/ag","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":82,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"entic","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":83,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-server","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":84,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-core","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":85,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/tests","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":86,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/c","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":87,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"asset","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":88,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"tes","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":89,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/m","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":90,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":91,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":92,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"does","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":93,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-not","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":94,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-ex","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":95,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ist","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":96,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":97,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":98,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Wait","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":99,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":100,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":101,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" filename","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":102,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":103,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":104,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"does","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":105,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-not","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":106,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-ex","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":107,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ist","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":108,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":109,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":110,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" which","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":111,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" suggests","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":112,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":113,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":114,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resource","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":115,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" might","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":116,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" not","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":117,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" actually","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":118,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exist","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":119,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" on","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":120,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":121,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":122,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":123,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":124,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":125,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" message","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":126,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" mentions","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":127,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":128,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failure","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":129,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" during","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":130,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":131,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":132,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" operation","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":133,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":134,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" which","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":135,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" could","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":136,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" be","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":137,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" because","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":138,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":139,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" file","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":140,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" isn","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":141,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":142,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" present","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":143,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":144,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":145,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"But","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":146,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":147,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":148,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":149,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" instruction","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":150,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":151,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":152,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":153,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":154,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":155,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exactly","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":156,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" once","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":157,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":158,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" those","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":159,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":160,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":161,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Maybe","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":162,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" they","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":163,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" wanted","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":164,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":165,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" test","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":166,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" how","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":167,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":168,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" handle","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":169,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":170,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" missing","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":171,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resource","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":172,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":173,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":174,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":175,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":176,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" from","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":177,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":178,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":179,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":180,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":181,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" so","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":182,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" it","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":183,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":184,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" possible","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":185,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":186,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":187,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":188,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" returns","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":189,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":190,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specific","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":191,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":192,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" code","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":193,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" or","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":194,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" message","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":195,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" when","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":196,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":197,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resource","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":198,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" isn","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":199,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":200,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" found","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":201,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":202,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" However","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":203,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":204,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":205,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":206,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":207,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":208,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" here","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":209,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":210,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" generic","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":211,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":212,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":213,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Since","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":214,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":215,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":216,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":217,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" task","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":218,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":219,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":220,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":221,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":222,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":223,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":224,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":225,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":226,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" did","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":227,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":228,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":229,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":230,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" next","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":231,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" step","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":232,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":233,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":234,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" inform","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":235,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" them","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":236,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" of","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":237,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":238,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" result","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":239,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":240,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":241,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":242,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" indicates","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":243,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":244,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":245,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":246,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":247,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":248,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":249,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" since","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":250,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":251,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":252,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":253,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correct","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":254,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":255,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" per","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":256,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":257,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":258,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":259,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" input","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":260,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":261,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":262,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" issue","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":263,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" might","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":264,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" be","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":265,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" on","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":266,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":267,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":268,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" side","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":269,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" or","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":270,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":271,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resource","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":272,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" not","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":273,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" existing","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":274,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":275,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":276,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"I","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":277,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":278,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" present","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":279,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":280,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":281,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":282,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" clearly","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":283,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":284,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" confirm","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":285,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":286,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":287,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":288,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":289,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" called","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":290,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":291,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" requested","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":292,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":293,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":294,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":295,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" might","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":296,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" be","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":297,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" expecting","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":298,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" an","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":299,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" acknowledgment","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":300,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" of","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":301,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":302,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":303,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" or","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":304,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" further","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":305,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" steps","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":306,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":307,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":308,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" based","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":309,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" on","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":310,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":311,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" initial","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":312,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" instructions","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":313,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":314,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":315,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" main","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":316,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" task","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":317,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":318,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":319,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":320,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":321,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":322,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":323,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":324,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" So","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":325,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":326,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" answer","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":327,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":328,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" include","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":329,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":330,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":331,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":332,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":333,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":334,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":335,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":336,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":337,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" explaining","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":338,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":339,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":340,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":341,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" operation","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":342,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":343,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":344,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":345,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n\n","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":346,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"The","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":347,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" `","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":348,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"read","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":349,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":350,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":351,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":352,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"`","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":353,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":354,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":355,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" called","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":356,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":357,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":358,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specified","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":359,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":360,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":361,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":362,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":363,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":364,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":365,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" returned","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":366,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" an","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":367,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":368,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":":","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":369,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":370,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"**","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":371,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":372,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"resources","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":373,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/read","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":374,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":375,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":":","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":376,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":377,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" operation","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":378,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":379,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" during","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":380,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resources","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":381,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/read","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":382,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":383,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"**","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":384,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":385,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"This","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":386,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" likely","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":387,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" indicates","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":388,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":389,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resource","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":390,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" at","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":391,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" `","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":392,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":393,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":394,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cr","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":395,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ates","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":396,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/ag","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":397,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"entic","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":398,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-server","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":399,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-core","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":400,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/tests","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":401,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/c","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":402,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"asset","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":403,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"tes","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":404,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/m","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":405,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":406,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":407,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"does","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":408,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-not","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":409,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-ex","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":410,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ist","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":411,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":412,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"`","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":413,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" does","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":414,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" not","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":415,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exist","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":416,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" or","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":417,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":418,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" inaccessible","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":419,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":420,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Let","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":421,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":422,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" know","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":423,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":424,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" you","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":425,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''d","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":426,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" like","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":427,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":428,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" try","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":429,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":430,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" different","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":431,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":432,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"!","item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":433,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"ad3b625206d95b56","logprobs":[],"output_index":0,"sequence_number":434,"text":"\nOkay, - the user asked me to call the read_mcp_resource function with a specific server - and URI. I did that, but the response was an error: \"resources/read failed: - MCP operation failed during resources/read\". Hmm, the error message isn''t - very detailed. Let me think about what could have gone wrong.\n\nFirst, the - URI they provided is \"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml\". - Wait, the filename is \"does-not-exist.yaml\", which suggests that the resource - might not actually exist on the server. The error message mentions a failure - during the read operation, which could be because the file isn''t present. \n\nBut - the user''s instruction was to call the function exactly once with those parameters. - Maybe they wanted to test how I handle a missing resource. The error is from - the MCP server, so it''s possible that the server returns a specific error code - or message when the resource isn''t found. However, the tool''s response here - is generic. \n\nSince the user''s task was to make the call, and I did that, - the next step is to inform them of the result. The error indicates that the - read failed, but since the URI was correct as per the user''s input, the issue - might be on the server side or the resource not existing. \n\nI should present - the error response clearly and confirm that the function was called as requested. - The user might be expecting an acknowledgment of the error or further steps, - but based on the initial instructions, the main task was to make the tool call. - So the answer should include the tool call and the error response, explaining - that the read operation failed.\n\n\nThe `read_mcp_resource` function - was called with the specified parameters, but the MCP server returned an error: \n**\"resources/read - failed: MCP operation failed during resources/read\"** \n\nThis likely indicates - the resource at `repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml` - does not exist or is inaccessible. Let me know if you''d like to try a different - URI!","type":"response.output_text.done"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"ad3b625206d95b56","output_index":0,"part":{"annotations":[],"logprobs":null,"text":"\nOkay, - the user asked me to call the read_mcp_resource function with a specific server - and URI. I did that, but the response was an error: \"resources/read failed: - MCP operation failed during resources/read\". Hmm, the error message isn''t - very detailed. Let me think about what could have gone wrong.\n\nFirst, the - URI they provided is \"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml\". - Wait, the filename is \"does-not-exist.yaml\", which suggests that the resource - might not actually exist on the server. The error message mentions a failure - during the read operation, which could be because the file isn''t present. \n\nBut - the user''s instruction was to call the function exactly once with those parameters. - Maybe they wanted to test how I handle a missing resource. The error is from - the MCP server, so it''s possible that the server returns a specific error code - or message when the resource isn''t found. However, the tool''s response here - is generic. \n\nSince the user''s task was to make the call, and I did that, - the next step is to inform them of the result. The error indicates that the - read failed, but since the URI was correct as per the user''s input, the issue - might be on the server side or the resource not existing. \n\nI should present - the error response clearly and confirm that the function was called as requested. - The user might be expecting an acknowledgment of the error or further steps, - but based on the initial instructions, the main task was to make the tool call. - So the answer should include the tool call and the error response, explaining - that the read operation failed.\n\n\nThe `read_mcp_resource` function - was called with the specified parameters, but the MCP server returned an error: \n**\"resources/read - failed: MCP operation failed during resources/read\"** \n\nThis likely indicates - the resource at `repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml` - does not exist or is inaccessible. Let me know if you''d like to try a different - URI!","type":"output_text"},"sequence_number":435,"type":"response.content_part.done"} - - ' - - ' - - ' - - 'data: {"item":{"content":[{"annotations":[],"logprobs":null,"text":"\nOkay, - the user asked me to call the read_mcp_resource function with a specific server - and URI. I did that, but the response was an error: \"resources/read failed: - MCP operation failed during resources/read\". Hmm, the error message isn''t - very detailed. Let me think about what could have gone wrong.\n\nFirst, the - URI they provided is \"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml\". - Wait, the filename is \"does-not-exist.yaml\", which suggests that the resource - might not actually exist on the server. The error message mentions a failure - during the read operation, which could be because the file isn''t present. \n\nBut - the user''s instruction was to call the function exactly once with those parameters. - Maybe they wanted to test how I handle a missing resource. The error is from - the MCP server, so it''s possible that the server returns a specific error code - or message when the resource isn''t found. However, the tool''s response here - is generic. \n\nSince the user''s task was to make the call, and I did that, - the next step is to inform them of the result. The error indicates that the - read failed, but since the URI was correct as per the user''s input, the issue - might be on the server side or the resource not existing. \n\nI should present - the error response clearly and confirm that the function was called as requested. - The user might be expecting an acknowledgment of the error or further steps, - but based on the initial instructions, the main task was to make the tool call. - So the answer should include the tool call and the error response, explaining - that the read operation failed.\n\n\nThe `read_mcp_resource` function - was called with the specified parameters, but the MCP server returned an error: \n**\"resources/read - failed: MCP operation failed during resources/read\"** \n\nThis likely indicates - the resource at `repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml` - does not exist or is inaccessible. Let me know if you''d like to try a different - URI!","type":"output_text"}],"id":"ad3b625206d95b56","phase":null,"role":"assistant","status":"completed","summary":[],"type":"message"},"output_index":0,"sequence_number":436,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"response":{"conversation_id":null,"created_at":1783949062,"error":null,"id":"resp_019f5ba6-5bdc-7f20-b756-1d689b62bfac","incomplete_details":null,"instructions":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[{"content":[{"text":"\nOkay, - let me try to figure this out. The user wants me to call the read_mcp_resource - function once. The server label is \"repo\", and the URI they provided is \"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml\". - \n\nFirst, I need to make sure I understand the function parameters. The function - requires both \"server\" and \"uri\" parameters. The server is given as \"repo\", - and the URI is the long string they mentioned. \n\nWait, the URI starts with - \"repo://\", which might be a specific format for the MCP server. I should use - the exact URI they provided. The user emphasized to call the function exactly - once with those parameters. \n\nI should check if there are any other parameters - or if there''s a chance I might misinterpret the URI. But according to the problem - statement, the URI is straightforward. So I just need to structure the JSON - correctly with the server and uri fields.\n\nI think that''s all. The user is - testing if I can correctly format the tool call with the given parameters. No - need to overcomplicate it. Just pass the server as \"repo\" and the URI as specified.\n","type":"reasoning_text"}],"encrypted_content":null,"id":"8666e0cbdb195372","status":null,"summary":[],"type":"reasoning"},{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml"},"error":"resources/read - failed: MCP operation failed during resources/read","id":"mcp_a72be084f6711a34","server":"repo","status":"failed","tool":"read_mcp_resource","type":"mcp_tool_call"},{"content":[{"annotations":[],"text":"\nOkay, - the user asked me to call the read_mcp_resource function with a specific server - and URI. I did that, but the response was an error: \"resources/read failed: - MCP operation failed during resources/read\". Hmm, the error message isn''t - very detailed. Let me think about what could have gone wrong.\n\nFirst, the - URI they provided is \"repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml\". - Wait, the filename is \"does-not-exist.yaml\", which suggests that the resource - might not actually exist on the server. The error message mentions a failure - during the read operation, which could be because the file isn''t present. \n\nBut - the user''s instruction was to call the function exactly once with those parameters. - Maybe they wanted to test how I handle a missing resource. The error is from - the MCP server, so it''s possible that the server returns a specific error code - or message when the resource isn''t found. However, the tool''s response here - is generic. \n\nSince the user''s task was to make the call, and I did that, - the next step is to inform them of the result. The error indicates that the - read failed, but since the URI was correct as per the user''s input, the issue - might be on the server side or the resource not existing. \n\nI should present - the error response clearly and confirm that the function was called as requested. - The user might be expecting an acknowledgment of the error or further steps, - but based on the initial instructions, the main task was to make the tool call. - So the answer should include the tool call and the error response, explaining - that the read operation failed.\n\n\nThe `read_mcp_resource` function - was called with the specified parameters, but the MCP server returned an error: \n**\"resources/read - failed: MCP operation failed during resources/read\"** \n\nThis likely indicates - the resource at `repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml` - does not exist or is inaccessible. Let me know if you''d like to try a different - URI!","type":"output_text"}],"id":"ad3b625206d95b56","role":"assistant","status":"completed","type":"message"}],"previous_response_id":null,"status":"completed","usage":{"input_tokens":843,"input_tokens_details":{"cached_tokens":752},"output_tokens":724,"output_tokens_details":{"reasoning_tokens":585},"total_tokens":1567}},"type":"response.completed"} - - ' - - ' - - ' - - 'data: [DONE] - - ' - - ' - - ' - status_code: 200 diff --git a/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-unreachable-server-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml b/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-unreachable-server-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml deleted file mode 100644 index a2f6e96..0000000 --- a/crates/agentic-server-core/tests/cassettes/mcp/mcp-read-resource-unreachable-server-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml +++ /dev/null @@ -1,4473 +0,0 @@ -turns: -- filename: t1 - request: - body: - input: 'You have one MCP resource tool available: read_mcp_resource. The MCP - server label is repo. Call read_mcp_resource exactly once with server repo - and uri repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml. - If the call fails, report the error you received in one sentence.' - max_output_tokens: 1024 - model: Qwen/Qwen3-30B-A3B-FP8 - store: true - stream: true - tool_choice: required - tools: - - name: read_mcp_resource - server_label: repo - server_url: http://192.0.2.1:8000/mcp - type: mcp - headers: - accept: '*/*' - content-type: application/json - user-agent: python-httpx/0.28.1 - method: POST - path: /v1/responses - query_params: {} - response: - headers: - content-type: text/event-stream; charset=utf-8 - sse: - - 'data: {"response":{"background":false,"created_at":1783949044,"frequency_penalty":0.0,"id":"resp_019f5ba6-2c5a-7e83-be7f-c1fb32957d1f","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":{"format":{"description":null,"name":"tool_calling_response","schema":{"items":{"anyOf":[{"properties":{"name":{"enum":["read_mcp_resource"],"type":"string"},"parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"}},"required":["name","parameters"]}],"type":"object"},"minItems":1,"type":"array"},"strict":true,"type":"json_schema"},"verbosity":null},"tool_choice":"required","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":0,"type":"response.created"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949044,"frequency_penalty":0.0,"id":"resp_019f5ba6-2c5a-7e83-be7f-c1fb32957d1f","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":{"format":{"description":null,"name":"tool_calling_response","schema":{"items":{"anyOf":[{"properties":{"name":{"enum":["read_mcp_resource"],"type":"string"},"parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"}},"required":["name","parameters"]}],"type":"object"},"minItems":1,"type":"array"},"strict":true,"type":"json_schema"},"verbosity":null},"tool_choice":"required","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":1,"type":"response.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"content":null,"encrypted_content":null,"id":"a83cc847becfbe40","status":"in_progress","summary":[],"type":"reasoning"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"a83cc847becfbe40","output_index":0,"part":{"text":"","type":"reasoning_text"},"sequence_number":3,"type":"response.reasoning_part.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":4,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Okay","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":5,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":6,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" let","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":7,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":8,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" see","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":9,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":10,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":11,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":12,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" wants","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":13,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":14,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":15,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":16,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":17,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":18,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":19,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":20,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":21,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":22,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" once","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":23,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":24,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":25,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":26,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" set","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":27,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":28,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":29,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":30,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":31,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":32,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":33,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":34,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":35,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":36,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":37,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":38,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cr","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":39,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ates","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":40,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/ag","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":41,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"entic","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":42,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-server","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":43,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-core","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":44,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/tests","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":45,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/c","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":46,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"asset","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":47,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"tes","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":48,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/web","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":49,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":50,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/g","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":51,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"pt","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":52,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":53,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"oss","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":54,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_web","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":55,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":56,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_non","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":57,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"stream","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":58,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ing","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":59,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":60,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''.","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":61,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" They","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":62,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" also","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":63,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" mentioned","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":64,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":65,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":66,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":67,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":68,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" fails","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":69,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":70,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":71,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":72,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" report","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":73,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":74,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":75,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":76,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" one","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":77,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sentence","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":78,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":79,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"First","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":80,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":81,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":82,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":83,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":84,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":85,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sure","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":86,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":87,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" understand","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":88,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":89,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":90,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":91,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":92,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":93,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":94,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" requires","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":95,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" both","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":96,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":97,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"server","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":98,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":99,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":100,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":101,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"uri","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":102,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":103,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":104,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":105,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":106,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":107,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":108,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":109,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" given","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":110,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":111,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":112,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":113,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"'',","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":114,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":115,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":116,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":117,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":118,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" provided","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":119,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":120,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" So","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":121,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":122,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":123,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" structure","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":124,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":125,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":126,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":127,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correctly","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":128,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":129,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Wait","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":130,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":131,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":132,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":133,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" starts","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":134,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":135,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":136,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":137,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":138,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"'',","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":139,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" which","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":140,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" might","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":141,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" be","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":142,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":143,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specific","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":144,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" format","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":145,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":146,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":147,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":148,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" expects","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":149,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":150,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":151,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":152,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" use","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":153,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" it","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":154,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":155,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" provided","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":156,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":157,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":158,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":159,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specified","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":160,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":161,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":162,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":163,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":164,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exactly","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":165,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" once","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":166,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":167,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" so","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":168,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":169,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" don","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":170,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":171,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":172,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":173,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" handle","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":174,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" retries","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":175,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" or","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":176,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" anything","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":177,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" else","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":178,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":179,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":180,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":181,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":182,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":183,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" check","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":184,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":185,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" there","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":186,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" are","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":187,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" any","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":188,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" possible","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":189,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" issues","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":190,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":191,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Maybe","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":192,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":193,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":194,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":195,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":196,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":197,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":198,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":199,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correct","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":200,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"?","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":201,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Or","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":202,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" perhaps","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":203,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":204,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":205,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":206,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" malformed","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":207,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"?","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":208,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" But","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":209,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" according","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":210,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":211,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":212,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":213,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":214,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" instruction","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":215,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":216,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":217,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":218,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" use","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":219,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" those","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":220,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exact","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":221,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" values","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":222,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":223,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" So","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":224,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":225,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''ll","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":226,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" proceed","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":227,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":228,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" generate","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":229,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":230,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" tool","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":231,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":232,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":233,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" those","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":234,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" parameters","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":235,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":236,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"If","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":237,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":238,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":239,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" fails","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":240,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":241,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":242,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":243,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" wants","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":244,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":245,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":246,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" reported","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":247,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":248,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" one","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":249,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sentence","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":250,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":251,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" But","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":252,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" since","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":253,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":254,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''m","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":255,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" just","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":256,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" making","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":257,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":258,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":259,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":260,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":261,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" don","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":262,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":263,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" have","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":264,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":265,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" actual","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":266,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":267,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" yet","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":268,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":269,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" So","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":270,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":271,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":272,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":273,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":274,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":275,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" there","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":276,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":277,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" an","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":278,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":279,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":280,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":281,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''ll","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":282,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":283,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":284,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" capture","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":285,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":286,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":287,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" present","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":288,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" it","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":289,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" conc","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":290,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"is","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":291,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ely","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":292,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":293,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" But","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":294,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" for","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":295,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" now","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":296,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":297,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":298,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" task","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":299,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":300,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":301,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":302,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":303,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":304,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":305,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":306,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"So","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":307,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":308,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" JSON","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":309,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" object","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":310,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":311,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" have","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":312,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":313,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" name","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":314,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":315,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"read","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":316,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":317,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":318,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":319,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":320,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":321,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":322,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" arguments","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":323,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":324,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":325,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":326,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":327,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":328,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":329,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" uri","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":330,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":331,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":332,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":333,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cr","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":334,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ates","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":335,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/ag","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":336,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"entic","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":337,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-server","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":338,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"-core","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":339,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/tests","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":340,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/c","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":341,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"asset","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":342,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"tes","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":343,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/web","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":344,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":345,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"/g","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":346,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"pt","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":347,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":348,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"oss","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":349,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_web","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":350,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_search","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":351,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_non","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":352,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"stream","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":353,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ing","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":354,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".yaml","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":355,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\".","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":356,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Let","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":357,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":358,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" format","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":359,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":360,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" properly","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":361,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n","item_id":"a83cc847becfbe40","output_index":0,"sequence_number":362,"type":"response.reasoning_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"a83cc847becfbe40","output_index":0,"sequence_number":363,"text":"\nOkay, - let''s see. The user wants me to call the read_mcp_resource function once with - the server set to ''repo'' and the URI as ''repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml''. - They also mentioned that if the call fails, I should report the error in one - sentence.\n\nFirst, I need to make sure I understand the function parameters. - The function requires both ''server'' and ''uri'' parameters. The server label - is given as ''repo'', and the URI is provided. So I should structure the tool - call correctly.\n\nWait, the URI starts with ''repo://'', which might be a specific - format the MCP server expects. I should use it as provided. The user specified - to call the function exactly once, so I don''t need to handle retries or anything - else. \n\nI need to check if there are any possible issues. Maybe the server - label ''repo'' is correct? Or perhaps the URI is malformed? But according to - the user''s instruction, I should use those exact values. So I''ll proceed to - generate the tool call with those parameters.\n\nIf the call fails, the user - wants the error reported in one sentence. But since I''m just making the call, - I don''t have the actual error yet. So in the response, if there''s an error, - I''ll need to capture that and present it concisely. But for now, the task is - to make the call. \n\nSo the JSON object should have the name \"read_mcp_resource\" - and the arguments with server \"repo\" and uri \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - Let me format that properly.\n","type":"response.reasoning_text.done"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"a83cc847becfbe40","output_index":0,"part":{"text":"\nOkay, - let''s see. The user wants me to call the read_mcp_resource function once with - the server set to ''repo'' and the URI as ''repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml''. - They also mentioned that if the call fails, I should report the error in one - sentence.\n\nFirst, I need to make sure I understand the function parameters. - The function requires both ''server'' and ''uri'' parameters. The server label - is given as ''repo'', and the URI is provided. So I should structure the tool - call correctly.\n\nWait, the URI starts with ''repo://'', which might be a specific - format the MCP server expects. I should use it as provided. The user specified - to call the function exactly once, so I don''t need to handle retries or anything - else. \n\nI need to check if there are any possible issues. Maybe the server - label ''repo'' is correct? Or perhaps the URI is malformed? But according to - the user''s instruction, I should use those exact values. So I''ll proceed to - generate the tool call with those parameters.\n\nIf the call fails, the user - wants the error reported in one sentence. But since I''m just making the call, - I don''t have the actual error yet. So in the response, if there''s an error, - I''ll need to capture that and present it concisely. But for now, the task is - to make the call. \n\nSo the JSON object should have the name \"read_mcp_resource\" - and the arguments with server \"repo\" and uri \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - Let me format that properly.\n","type":"reasoning_text"},"sequence_number":364,"type":"response.reasoning_part.done"} - - ' - - ' - - ' - - 'data: {"item":{"content":[{"text":"\nOkay, let''s see. The user wants me to - call the read_mcp_resource function once with the server set to ''repo'' and - the URI as ''repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml''. - They also mentioned that if the call fails, I should report the error in one - sentence.\n\nFirst, I need to make sure I understand the function parameters. - The function requires both ''server'' and ''uri'' parameters. The server label - is given as ''repo'', and the URI is provided. So I should structure the tool - call correctly.\n\nWait, the URI starts with ''repo://'', which might be a specific - format the MCP server expects. I should use it as provided. The user specified - to call the function exactly once, so I don''t need to handle retries or anything - else. \n\nI need to check if there are any possible issues. Maybe the server - label ''repo'' is correct? Or perhaps the URI is malformed? But according to - the user''s instruction, I should use those exact values. So I''ll proceed to - generate the tool call with those parameters.\n\nIf the call fails, the user - wants the error reported in one sentence. But since I''m just making the call, - I don''t have the actual error yet. So in the response, if there''s an error, - I''ll need to capture that and present it concisely. But for now, the task is - to make the call. \n\nSo the JSON object should have the name \"read_mcp_resource\" - and the arguments with server \"repo\" and uri \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - Let me format that properly.\n","type":"reasoning_text"}],"encrypted_content":null,"id":"a83cc847becfbe40","status":"completed","summary":[],"type":"reasoning"},"output_index":0,"sequence_number":365,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"id":"mcp_9b0426872731f65e","server":"repo","status":"in_progress","tool":"read_mcp_resource","type":"mcp_tool_call"},"output_index":1,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"item_id":"mcp_9b0426872731f65e","output_index":1,"type":"response.mcp_tool_call.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"error":"unknown - MCP server: repo","id":"mcp_9b0426872731f65e","server":"repo","status":"failed","tool":"read_mcp_resource","type":"mcp_tool_call"},"item_id":"mcp_9b0426872731f65e","output_index":1,"type":"response.mcp_tool_call.completed"} - - ' - - ' - - ' - - 'data: {"item":{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"error":"unknown - MCP server: repo","id":"mcp_9b0426872731f65e","server":"repo","status":"failed","tool":"read_mcp_resource","type":"mcp_tool_call"},"output_index":1,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949047,"frequency_penalty":0.0,"id":"resp_019f5ba6-2c5a-7e83-be7f-c1fb32957d1f","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":null,"tool_choice":"auto","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":0,"type":"response.created"} - - ' - - ' - - ' - - 'data: {"response":{"background":false,"created_at":1783949047,"frequency_penalty":0.0,"id":"resp_019f5ba6-2c5a-7e83-be7f-c1fb32957d1f","incomplete_details":null,"input_messages":null,"instructions":null,"kv_transfer_params":null,"max_output_tokens":1024,"max_tool_calls":null,"metadata":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[],"output_messages":null,"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt":null,"reasoning":null,"service_tier":"auto","status":"in_progress","temperature":0.6,"text":null,"tool_choice":"auto","tools":[{"defer_loading":null,"description":"Read - a resource by URI from a connected MCP server.","name":"read_mcp_resource","parameters":{"additionalProperties":false,"properties":{"server":{"description":"The - server_label to read from.","type":"string"},"uri":{"description":"The resource - URI to read.","type":"string"}},"required":["server","uri"],"type":"object"},"strict":false,"type":"function"}],"top_logprobs":null,"top_p":0.95,"truncation":"disabled","usage":null,"user":null},"sequence_number":1,"type":"response.in_progress"} - - ' - - ' - - ' - - 'data: {"item":{"content":[],"id":"946106c32a051d32","phase":null,"role":"assistant","status":"in_progress","type":"message"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"946106c32a051d32","output_index":0,"part":{"annotations":[],"logprobs":[],"text":"","type":"output_text"},"sequence_number":3,"type":"response.content_part.added"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":4,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":5,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Okay","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":6,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":7,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":8,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":9,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" told","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":10,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" me","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":11,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":12,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":13,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":14,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":15,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":16,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":17,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":18,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" function","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":19,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":20,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":21,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":22,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":23,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":24,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" and","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":25,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":26,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specific","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":27,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":28,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":29,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":30,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" did","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":31,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":32,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":33,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":34,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":35,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":36,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":37,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" an","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":38,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":39,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":":","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":40,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":41,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"unknown","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":42,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":43,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":44,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":":","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":45,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":46,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":47,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Hmm","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":48,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":49,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" so","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":50,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":51,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":52,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":53,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":54,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":55,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":56,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" isn","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":57,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":58,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" recognized","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":59,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":60,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Maybe","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":61,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":62,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" actual","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":63,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":64,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" name","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":65,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":66,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" different","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":67,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"?","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":68,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Like","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":69,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" maybe","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":70,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":71,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cr","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":72,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ates","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":73,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":74,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" instead","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":75,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" of","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":76,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":77,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":78,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''?","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":79,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Or","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":80,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" perhaps","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":81,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" there","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":82,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":83,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":84,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" typo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":85,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":86,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":87,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":88,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":89,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n\n","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":90,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"Wait","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":91,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":92,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":93,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":94,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" provided","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":95,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":96,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":97,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":98,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":99,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":100,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":101,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"'',","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":102,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":103,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":104,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":105,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" says","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":106,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":107,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":108,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":109,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":110,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":111,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":112,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":113,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" unknown","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":114,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":115,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" That","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":116,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" means","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":117,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":118,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" configuration","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":119,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" for","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":120,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":121,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":122,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":123,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":124,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":125,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" isn","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":126,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":127,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" set","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":128,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" up","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":129,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correctly","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":130,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" or","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":131,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" doesn","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":132,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":133,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exist","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":134,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":135,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":136,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" URI","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":137,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" they","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":138,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" gave","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":139,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" starts","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":140,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" with","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":141,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":142,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":143,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"://","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":144,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"'',","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":145,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" which","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":146,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" might","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":147,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" be","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":148,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" part","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":149,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" of","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":150,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":151,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" resource","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":152,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" path","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":153,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":154,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":155,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":156,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":157,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":158,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":159,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" separate","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":160,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":161,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":162,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"I","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":163,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" need","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":164,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":165,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" check","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":166,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":167,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":168,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":169,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":170,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":171,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":172,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":173,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":174,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" correct","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":175,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":176,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" If","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":177,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":178,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":179,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" intended","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":180,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":181,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" use","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":182,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" a","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":183,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" different","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":184,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":185,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":186,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" like","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":187,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":188,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cr","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":189,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"ates","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":190,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":191,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" or","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":192,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" another","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":193,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" label","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":194,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":195,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":196,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" would","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":197,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" be","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":198,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":199,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" issue","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":200,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":201,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" But","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":202,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" according","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":203,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":204,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":205,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" instructions","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":206,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":207,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":208,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":209,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" use","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":210,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":211,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":212,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":213,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":214,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":215,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":216,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":217,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" Since","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":218,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":219,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":220,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" occurred","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":221,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":222,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":223,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":224,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" report","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":225,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" it","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":226,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" as","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":227,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" per","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":228,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":229,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":230,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''s","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":231,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" request","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":232,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":233,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \n\n","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":234,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"The","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":235,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":236,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" also","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":237,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" mentioned","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":238,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":239,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" if","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":240,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":241,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":242,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" fails","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":243,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":244,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":245,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":246,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" report","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":247,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":248,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":249,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" in","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":250,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" one","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":251,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" sentence","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":252,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":253,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" The","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":254,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":255,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" received","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":256,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" was","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":257,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":258,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"unknown","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":259,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":260,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":261,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":":","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":262,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":263,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":264,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" So","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":265,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":266,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" answer","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":267,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" should","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":268,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" state","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":269,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":270,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":271,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":272,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":273,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" because","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":274,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":275,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":276,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" ''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":277,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":278,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":279,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":280,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" unknown","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":281,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":282,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" I","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":283,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" shouldn","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":284,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"''t","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":285,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" make","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":286,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" assumptions","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":287,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" beyond","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":288,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" that","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":289,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" unless","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":290,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" told","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":291,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":292,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" try","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":293,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" alternatives","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":294,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":",","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":295,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" but","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":296,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":297,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" user","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":298,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" said","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":299,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":300,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":301,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" it","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":302,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" exactly","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":303,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" once","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":304,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":305,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" So","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":306,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":307,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" final","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":308,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" response","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":309,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":310,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" just","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":311,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":312,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" error","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":313,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" message","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":314,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".\n","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":315,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":316,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\n\n","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":317,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"The","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":318,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" call","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":319,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" to","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":320,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" read","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":321,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_m","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":322,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"cp","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":323,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"_resource","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":324,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" failed","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":325,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" because","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":326,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" the","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":327,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" specified","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":328,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" MCP","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":329,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" server","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":330,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" \"","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":331,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"repo","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":332,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":"\"","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":333,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" is","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":334,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":" unknown","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":335,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"delta":".","item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":336,"type":"response.output_text.delta"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"946106c32a051d32","logprobs":[],"output_index":0,"sequence_number":337,"text":"\nOkay, - the user told me to call the read_mcp_resource function with server ''repo'' - and a specific URI. I did that, but the response was an error: \"unknown MCP - server: repo\". Hmm, so the server label ''repo'' isn''t recognized. Maybe the - actual server name is different? Like maybe ''crates'' instead of ''repo''? - Or perhaps there''s a typo in the server label.\n\nWait, the user provided the - server label as ''repo'', but the error says the MCP server ''repo'' is unknown. - That means the configuration for the server ''repo'' isn''t set up correctly - or doesn''t exist. The URI they gave starts with ''repo://'', which might be - part of the resource path, but the server label is separate. \n\nI need to check - if the server label ''repo'' is correct. If the user intended to use a different - server, like ''crates'' or another label, that would be the issue. But according - to the instructions, I should use ''repo'' as the server. Since the error occurred, - I should report it as per the user''s request. \n\nThe user also mentioned that - if the call fails, I should report the error in one sentence. The error received - was \"unknown MCP server: repo\". So the answer should state that the call failed - because the server ''repo'' is unknown. I shouldn''t make assumptions beyond - that unless told to try alternatives, but the user said to call it exactly once. - So the final response is just the error message.\n\n\nThe call to read_mcp_resource - failed because the specified MCP server \"repo\" is unknown.","type":"response.output_text.done"} - - ' - - ' - - ' - - 'data: {"content_index":0,"item_id":"946106c32a051d32","output_index":0,"part":{"annotations":[],"logprobs":null,"text":"\nOkay, - the user told me to call the read_mcp_resource function with server ''repo'' - and a specific URI. I did that, but the response was an error: \"unknown MCP - server: repo\". Hmm, so the server label ''repo'' isn''t recognized. Maybe the - actual server name is different? Like maybe ''crates'' instead of ''repo''? - Or perhaps there''s a typo in the server label.\n\nWait, the user provided the - server label as ''repo'', but the error says the MCP server ''repo'' is unknown. - That means the configuration for the server ''repo'' isn''t set up correctly - or doesn''t exist. The URI they gave starts with ''repo://'', which might be - part of the resource path, but the server label is separate. \n\nI need to check - if the server label ''repo'' is correct. If the user intended to use a different - server, like ''crates'' or another label, that would be the issue. But according - to the instructions, I should use ''repo'' as the server. Since the error occurred, - I should report it as per the user''s request. \n\nThe user also mentioned that - if the call fails, I should report the error in one sentence. The error received - was \"unknown MCP server: repo\". So the answer should state that the call failed - because the server ''repo'' is unknown. I shouldn''t make assumptions beyond - that unless told to try alternatives, but the user said to call it exactly once. - So the final response is just the error message.\n\n\nThe call to read_mcp_resource - failed because the specified MCP server \"repo\" is unknown.","type":"output_text"},"sequence_number":338,"type":"response.content_part.done"} - - ' - - ' - - ' - - 'data: {"item":{"content":[{"annotations":[],"logprobs":null,"text":"\nOkay, - the user told me to call the read_mcp_resource function with server ''repo'' - and a specific URI. I did that, but the response was an error: \"unknown MCP - server: repo\". Hmm, so the server label ''repo'' isn''t recognized. Maybe the - actual server name is different? Like maybe ''crates'' instead of ''repo''? - Or perhaps there''s a typo in the server label.\n\nWait, the user provided the - server label as ''repo'', but the error says the MCP server ''repo'' is unknown. - That means the configuration for the server ''repo'' isn''t set up correctly - or doesn''t exist. The URI they gave starts with ''repo://'', which might be - part of the resource path, but the server label is separate. \n\nI need to check - if the server label ''repo'' is correct. If the user intended to use a different - server, like ''crates'' or another label, that would be the issue. But according - to the instructions, I should use ''repo'' as the server. Since the error occurred, - I should report it as per the user''s request. \n\nThe user also mentioned that - if the call fails, I should report the error in one sentence. The error received - was \"unknown MCP server: repo\". So the answer should state that the call failed - because the server ''repo'' is unknown. I shouldn''t make assumptions beyond - that unless told to try alternatives, but the user said to call it exactly once. - So the final response is just the error message.\n\n\nThe call to read_mcp_resource - failed because the specified MCP server \"repo\" is unknown.","type":"output_text"}],"id":"946106c32a051d32","phase":null,"role":"assistant","status":"completed","summary":[],"type":"message"},"output_index":0,"sequence_number":339,"type":"response.output_item.done"} - - ' - - ' - - ' - - 'data: {"response":{"conversation_id":null,"created_at":1783949049,"error":null,"id":"resp_019f5ba6-2c5a-7e83-be7f-c1fb32957d1f","incomplete_details":null,"instructions":null,"model":"Qwen/Qwen3-30B-A3B-FP8","object":"response","output":[{"content":[{"text":"\nOkay, - let''s see. The user wants me to call the read_mcp_resource function once with - the server set to ''repo'' and the URI as ''repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml''. - They also mentioned that if the call fails, I should report the error in one - sentence.\n\nFirst, I need to make sure I understand the function parameters. - The function requires both ''server'' and ''uri'' parameters. The server label - is given as ''repo'', and the URI is provided. So I should structure the tool - call correctly.\n\nWait, the URI starts with ''repo://'', which might be a specific - format the MCP server expects. I should use it as provided. The user specified - to call the function exactly once, so I don''t need to handle retries or anything - else. \n\nI need to check if there are any possible issues. Maybe the server - label ''repo'' is correct? Or perhaps the URI is malformed? But according to - the user''s instruction, I should use those exact values. So I''ll proceed to - generate the tool call with those parameters.\n\nIf the call fails, the user - wants the error reported in one sentence. But since I''m just making the call, - I don''t have the actual error yet. So in the response, if there''s an error, - I''ll need to capture that and present it concisely. But for now, the task is - to make the call. \n\nSo the JSON object should have the name \"read_mcp_resource\" - and the arguments with server \"repo\" and uri \"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml\". - Let me format that properly.\n","type":"reasoning_text"}],"encrypted_content":null,"id":"a83cc847becfbe40","status":null,"summary":[],"type":"reasoning"},{"arguments":{"server":"repo","uri":"repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"},"error":"unknown - MCP server: repo","id":"mcp_9b0426872731f65e","server":"repo","status":"failed","tool":"read_mcp_resource","type":"mcp_tool_call"},{"content":[{"annotations":[],"text":"\nOkay, - the user told me to call the read_mcp_resource function with server ''repo'' - and a specific URI. I did that, but the response was an error: \"unknown MCP - server: repo\". Hmm, so the server label ''repo'' isn''t recognized. Maybe the - actual server name is different? Like maybe ''crates'' instead of ''repo''? - Or perhaps there''s a typo in the server label.\n\nWait, the user provided the - server label as ''repo'', but the error says the MCP server ''repo'' is unknown. - That means the configuration for the server ''repo'' isn''t set up correctly - or doesn''t exist. The URI they gave starts with ''repo://'', which might be - part of the resource path, but the server label is separate. \n\nI need to check - if the server label ''repo'' is correct. If the user intended to use a different - server, like ''crates'' or another label, that would be the issue. But according - to the instructions, I should use ''repo'' as the server. Since the error occurred, - I should report it as per the user''s request. \n\nThe user also mentioned that - if the call fails, I should report the error in one sentence. The error received - was \"unknown MCP server: repo\". So the answer should state that the call failed - because the server ''repo'' is unknown. I shouldn''t make assumptions beyond - that unless told to try alternatives, but the user said to call it exactly once. - So the final response is just the error message.\n\n\nThe call to read_mcp_resource - failed because the specified MCP server \"repo\" is unknown.","type":"output_text"}],"id":"946106c32a051d32","role":"assistant","status":"completed","type":"message"}],"previous_response_id":null,"status":"completed","usage":{"input_tokens":992,"input_tokens_details":{"cached_tokens":912},"output_tokens":745,"output_tokens_details":{"reasoning_tokens":670},"total_tokens":1737}},"type":"response.completed"} - - ' - - ' - - ' - - 'data: [DONE] - - ' - - ' - - ' - status_code: 200 diff --git a/crates/agentic-server-core/tests/cassettes/mcp/tools.json b/crates/agentic-server-core/tests/cassettes/mcp/tools.json deleted file mode 100644 index 85ae12d..0000000 --- a/crates/agentic-server-core/tests/cassettes/mcp/tools.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "type": "mcp", - "name": "read_mcp_resource", - "server_label": "repo", - "server_url": "http://localhost:8000/mcp" - } -] diff --git a/crates/agentic-server-core/tests/cassettes/record_mcp_cassettes.sh b/crates/agentic-server-core/tests/cassettes/record_mcp_cassettes.sh deleted file mode 100755 index bc754fe..0000000 --- a/crates/agentic-server-core/tests/cassettes/record_mcp_cassettes.sh +++ /dev/null @@ -1,231 +0,0 @@ -#!/usr/bin/env bash -# record_mcp_cassettes.sh -# -# Records MCP gateway tool cassettes through tests/cassettes/record_cassette.py. -# -# This records the gateway-facing MCP request: -# - the request includes {"type":"mcp","name":"read_mcp_resource"} -# - the gateway normalizes that to the model-facing function tool -# - the gateway executor runs the MCP tool loop and records the final response -# -# Records five single-turn cassettes: -# - happy path, non-streaming and streaming -# - unhappy path: server_url fails the SSRF host allowlist ("unknown MCP -# server", no connection attempted) -# - unhappy path: server_url is loopback but nothing is listening -# ("failed to connect") -# - unhappy path: the MCP server is reachable but the resource URI does -# not exist (resources/read fails) -# -# Prerequisites: -# - agentic-api gateway running at GATEWAY_URL -# - gateway upstream model has tool-call support -# - gateway has an MCP server named MCP_SERVER_LABEL rooted at the agentic-api -# repository, so it can serve the repo-relative MCP_RESOURCE_URI below. -# -# Usage: -# bash crates/agentic-server-core/tests/cassettes/record_mcp_cassettes.sh -# MCP_SERVER_URL=http://localhost:8000/mcp GATEWAY_URL=http://localhost:9000 MODEL=Qwen/Qwen3-30B-A3B-FP8 bash crates/agentic-server-core/tests/cassettes/record_mcp_cassettes.sh - -set -euo pipefail - -SCRIPTS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "$SCRIPTS_DIR/../../../.." && pwd)" -BASE_DIR="$SCRIPTS_DIR/mcp" -TOOLS_FILE="$BASE_DIR/tools.json" -GATEWAY_URL="${GATEWAY_URL:-http://localhost:9000}" -MODEL="${MODEL:-Qwen/Qwen3-30B-A3B-FP8}" -MODEL_SLUG="$(echo "$MODEL" | tr '/: ' '---')" -MCP_SERVER_LABEL="${MCP_SERVER_LABEL:-repo}" -MCP_SERVER_URL="${MCP_SERVER_URL:-http://localhost:8000/mcp}" -# Deliberately unroutable (RFC 5737 TEST-NET-1) — rejected by the gateway's -# SSRF host allowlist before any connection is attempted, so the tool call -# fails with "unknown MCP server", not a connection error. -MCP_UNREACHABLE_SERVER_URL="${MCP_UNREACHABLE_SERVER_URL:-http://192.0.2.1:8000/mcp}" -# Loopback (passes the allowlist) but nothing listens on this port, so the -# gateway actually attempts to connect and fails with a real connection -# error — "MCP server '{label}' failed to connect: {error}". -MCP_CONNECTION_REFUSED_SERVER_URL="${MCP_CONNECTION_REFUSED_SERVER_URL:-http://127.0.0.1:1/mcp}" -MCP_RESOURCE_URI="${MCP_RESOURCE_URI:-repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml}" -MCP_MISSING_RESOURCE_URI="${MCP_MISSING_RESOURCE_URI:-repo://crates/agentic-server-core/tests/cassettes/mcp/does-not-exist.yaml}" -NONSTREAMING_OUTPUT="$BASE_DIR/mcp-read-resource-${MODEL_SLUG}-nonstreaming.yaml" -STREAMING_OUTPUT="$BASE_DIR/mcp-read-resource-${MODEL_SLUG}-streaming.yaml" -UNREACHABLE_SERVER_OUTPUT="$BASE_DIR/mcp-read-resource-unreachable-server-${MODEL_SLUG}-streaming.yaml" -CONNECTION_REFUSED_OUTPUT="$BASE_DIR/mcp-read-resource-connection-refused-${MODEL_SLUG}-streaming.yaml" -MISSING_RESOURCE_OUTPUT="$BASE_DIR/mcp-read-resource-missing-resource-${MODEL_SLUG}-streaming.yaml" -REPO_PLACEHOLDER="" - -green() { printf '\033[32m%s\033[0m\n' "$*"; } -bold() { printf '\033[1m%s\033[0m\n' "$*"; } - -sanitize_cassette() { - local file="$1" - perl -0pi -e "s|\\Q$REPO_ROOT\\E|$REPO_PLACEHOLDER|g" "$file" -} - -# Writes the single reusable tools.json, pointed at whichever server_url the -# scenario needs (real server for happy-path/missing-resource, a bad URL for -# the unreachable/connection-refused unhappy paths). -write_tools_file() { - local server_url="$1" - cat > "$TOOLS_FILE" <&2 - exit 1 -fi - -write_tools_file "$MCP_SERVER_URL" - -PROMPT="You have one MCP resource tool available: read_mcp_resource. The MCP server label is ${MCP_SERVER_LABEL}. Call read_mcp_resource exactly once with server ${MCP_SERVER_LABEL} and uri ${MCP_RESOURCE_URI}. Then summarize the gpt_oss_web_search_nonstreaming.yaml cassette in 2-3 sentences and mention that read_mcp_resource was used." - -bold "Gateway: $GATEWAY_URL" -bold "Model: $MODEL" -bold "Tools: $TOOLS_FILE" -bold "Server: $MCP_SERVER_LABEL" -bold "URL: $MCP_SERVER_URL" -bold "URI: $MCP_RESOURCE_URI" -echo - -bold "═══════════════════════════════════════════════════════════════" -bold "MCP cassette — read_mcp_resource, non-streaming" -bold "Expected model behavior:" -bold " 1. Call read_mcp_resource exactly once with server=$MCP_SERVER_LABEL" -bold " 2. Use uri=$MCP_RESOURCE_URI" -bold " 3. Summarize the gateway-executed MCP resource output" -bold "═══════════════════════════════════════════════════════════════" -echo - -printf '%s\n' "$PROMPT" \ -| python "$SCRIPTS_DIR/record_cassette.py" \ - --mode responses \ - --turns 1 \ - --no-stream \ - --model "$MODEL" \ - --gateway "$GATEWAY_URL" \ - --tools "$TOOLS_FILE" \ - --tool-choice "required" \ - --output "$NONSTREAMING_OUTPUT" - -sanitize_cassette "$NONSTREAMING_OUTPUT" -green "✓ MCP cassette recorded -> $NONSTREAMING_OUTPUT" - -echo -bold "═══════════════════════════════════════════════════════════════" -bold "MCP cassette — read_mcp_resource, streaming" -bold "═══════════════════════════════════════════════════════════════" -echo - -printf '%s\n' "$PROMPT" \ -| python "$SCRIPTS_DIR/record_cassette.py" \ - --mode responses \ - --turns 1 \ - --stream \ - --model "$MODEL" \ - --gateway "$GATEWAY_URL" \ - --tools "$TOOLS_FILE" \ - --tool-choice "required" \ - --output "$STREAMING_OUTPUT" - -sanitize_cassette "$STREAMING_OUTPUT" -green "✓ MCP cassette recorded -> $STREAMING_OUTPUT" - -echo -bold "═══════════════════════════════════════════════════════════════" -bold "MCP cassette — read_mcp_resource, unreachable server (unhappy path)" -bold "Expected model behavior:" -bold " 1. Call read_mcp_resource with server=$MCP_SERVER_LABEL" -bold " 2. server_url fails the gateway's SSRF host allowlist, so no" -bold " connection is even attempted" -bold " 3. The model receives an \"unknown MCP server\" error and reports it" -bold "═══════════════════════════════════════════════════════════════" -echo - -write_tools_file "$MCP_UNREACHABLE_SERVER_URL" - -UNREACHABLE_PROMPT="You have one MCP resource tool available: read_mcp_resource. The MCP server label is ${MCP_SERVER_LABEL}. Call read_mcp_resource exactly once with server ${MCP_SERVER_LABEL} and uri ${MCP_RESOURCE_URI}. If the call fails, report the error you received in one sentence." - -printf '%s\n' "$UNREACHABLE_PROMPT" \ -| python "$SCRIPTS_DIR/record_cassette.py" \ - --mode responses \ - --turns 1 \ - --stream \ - --model "$MODEL" \ - --gateway "$GATEWAY_URL" \ - --tools "$TOOLS_FILE" \ - --tool-choice "required" \ - --output "$UNREACHABLE_SERVER_OUTPUT" - -sanitize_cassette "$UNREACHABLE_SERVER_OUTPUT" -green "✓ MCP cassette recorded -> $UNREACHABLE_SERVER_OUTPUT" - -echo -bold "═══════════════════════════════════════════════════════════════" -bold "MCP cassette — read_mcp_resource, connection refused (unhappy path)" -bold "Expected model behavior:" -bold " 1. Call read_mcp_resource with server=$MCP_SERVER_LABEL" -bold " 2. server_url is loopback (passes the allowlist) but nothing is" -bold " listening, so the gateway's connection attempt itself fails" -bold " 3. The model receives a \"failed to connect\" error and reports it" -bold "═══════════════════════════════════════════════════════════════" -echo - -write_tools_file "$MCP_CONNECTION_REFUSED_SERVER_URL" - -CONNECTION_REFUSED_PROMPT="You have one MCP resource tool available: read_mcp_resource. The MCP server label is ${MCP_SERVER_LABEL}. Call read_mcp_resource exactly once with server ${MCP_SERVER_LABEL} and uri ${MCP_RESOURCE_URI}. If the call fails, report the error you received in one sentence." - -printf '%s\n' "$CONNECTION_REFUSED_PROMPT" \ -| python "$SCRIPTS_DIR/record_cassette.py" \ - --mode responses \ - --turns 1 \ - --stream \ - --model "$MODEL" \ - --gateway "$GATEWAY_URL" \ - --tools "$TOOLS_FILE" \ - --tool-choice "required" \ - --output "$CONNECTION_REFUSED_OUTPUT" - -sanitize_cassette "$CONNECTION_REFUSED_OUTPUT" -green "✓ MCP cassette recorded -> $CONNECTION_REFUSED_OUTPUT" - -echo -bold "═══════════════════════════════════════════════════════════════" -bold "MCP cassette — read_mcp_resource, missing resource (unhappy path)" -bold "Expected model behavior:" -bold " 1. Call read_mcp_resource with server=$MCP_SERVER_LABEL" -bold " 2. The MCP server connects fine but resources/read fails —" -bold " $MCP_MISSING_RESOURCE_URI does not exist" -bold " 3. The model receives a resource-not-found error and reports it" -bold "═══════════════════════════════════════════════════════════════" -echo - -write_tools_file "$MCP_SERVER_URL" - -MISSING_RESOURCE_PROMPT="You have one MCP resource tool available: read_mcp_resource. The MCP server label is ${MCP_SERVER_LABEL}. Call read_mcp_resource exactly once with server ${MCP_SERVER_LABEL} and uri ${MCP_MISSING_RESOURCE_URI}." - -printf '%s\n' "$MISSING_RESOURCE_PROMPT" \ -| python "$SCRIPTS_DIR/record_cassette.py" \ - --mode responses \ - --turns 1 \ - --stream \ - --model "$MODEL" \ - --gateway "$GATEWAY_URL" \ - --tools "$TOOLS_FILE" \ - --tool-choice "required" \ - --max-output-tokens 4096 \ - --output "$MISSING_RESOURCE_OUTPUT" - -sanitize_cassette "$MISSING_RESOURCE_OUTPUT" -green "✓ MCP cassette recorded -> $MISSING_RESOURCE_OUTPUT" diff --git a/crates/agentic-server-core/tests/mcp_tool_test.rs b/crates/agentic-server-core/tests/mcp_tool_test.rs index 812434d..710dbe6 100644 --- a/crates/agentic-server-core/tests/mcp_tool_test.rs +++ b/crates/agentic-server-core/tests/mcp_tool_test.rs @@ -1,282 +1,42 @@ -use agentic_core::executor::accumulator::ResponseAccumulator; -use agentic_core::types::io::OutputItem; +use agentic_core::types::tools::ResponsesTool; -mod support; - -const MCP_DIR: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/tests/cassettes/mcp"); -const READ_RESOURCE_URI: &str = - "repo://crates/agentic-server-core/tests/cassettes/web_search/gpt_oss_web_search_nonstreaming.yaml"; - -fn load_mcp_cassette(filename: &str) -> support::Cassette { - let path = format!("{MCP_DIR}/{filename}"); - support::load_cassette(&path) -} - -fn extract_data_lines(sse_entries: &[String]) -> Vec { - sse_entries - .iter() - .flat_map(|entry| entry.lines()) - .filter(|line| line.starts_with("data: ")) - .map(ToString::to_string) - .collect() -} - -fn count_function_calls(output: &[OutputItem]) -> usize { - output - .iter() - .filter(|item| matches!(item, OutputItem::FunctionCall(_))) - .count() -} - -fn has_reasoning(output: &[OutputItem]) -> bool { - output.iter().any(|item| matches!(item, OutputItem::Reasoning(_))) -} - -fn assert_loopback_mcp_url(value: &str) { - let url = reqwest::Url::parse(value).expect("server_url should be a valid URL"); - assert_eq!(url.scheme(), "http"); - assert_eq!(url.path(), "/mcp"); - assert!( - matches!(url.host_str(), Some("localhost" | "127.0.0.1" | "::1")), - "server_url should point at a loopback MCP server, got {value}" - ); -} - -fn process_nonstreaming_turn(cassette: &support::Cassette, turn_idx: usize, model: &str) -> Vec { - let body = cassette.turns[turn_idx] - .response - .body - .as_ref() - .unwrap_or_else(|| panic!("turn {} must have response body", turn_idx + 1)); - let body_str = serde_json::to_string(body).unwrap(); - let acc = ResponseAccumulator::from_json(&body_str, None).unwrap(); - let payload = acc.finalize(model, None, None); - assert_eq!(payload.status, "completed"); - payload.output -} - -fn process_streaming_turn(cassette: &support::Cassette, turn_idx: usize, model: &str) -> Vec { - let sse = cassette.turns[turn_idx] - .response - .sse - .as_ref() - .unwrap_or_else(|| panic!("turn {} must have SSE events", turn_idx + 1)); - let data_lines = extract_data_lines(sse); - assert!( - !data_lines.is_empty(), - "streaming turn {} must have SSE data lines", - turn_idx + 1 - ); - let final_payload = data_lines - .iter() - .rev() - .filter_map(|line| line.strip_prefix("data: ")) - .filter(|data| *data != "[DONE]") - .filter_map(|data| serde_json::from_str::(data).ok()) - .filter_map(|event| event.get("response").cloned()) - .find(|response| response["status"].as_str() == Some("completed") && response["output"].is_array()) - .unwrap_or_else(|| panic!("turn {} must include a completed final response payload", turn_idx + 1)); - let final_payload = serde_json::to_string(&final_payload).unwrap(); - let acc = ResponseAccumulator::from_json(&final_payload, None).unwrap(); - let payload = acc.finalize(model, None, None); - assert_eq!(payload.status, "completed"); - payload.output -} - -fn assert_completed_read_mcp_resource(output: &[OutputItem]) { - assert_eq!( - count_function_calls(output), - 0, - "raw read_mcp_resource function call should not leak" - ); - let mcp_call = output - .iter() - .find_map(|item| match item { - OutputItem::McpToolCall(call) if call.status.as_str() == "completed" => Some(call), - _ => None, - }) - .expect("cassette output should include a completed mcp_tool_call item"); - assert_eq!(mcp_call.status.as_str(), "completed"); - assert_eq!(mcp_call.server, "repo"); - assert_eq!(mcp_call.tool, "read_mcp_resource"); - assert_eq!(mcp_call.arguments["server"], "repo"); - assert_eq!(mcp_call.arguments["uri"], READ_RESOURCE_URI); - - let result = mcp_call.result.as_ref().expect("mcp tool call should include a result"); - let text = result["contents"][0]["text"] - .as_str() - .expect("read_mcp_resource result should include text content"); - assert!(text.contains("web_search_preview")); - assert!(text.contains("Potato - Wikipedia")); - assert!( - output.iter().any(|item| matches!(item, OutputItem::Message(_))), - "cassette output should include a final assistant message" - ); -} - -#[test] -fn read_mcp_resource_cassette_nonstreaming() { - let cassette = load_mcp_cassette("mcp-read-resource-Qwen-Qwen3-30B-A3B-FP8-nonstreaming.yaml"); - assert_eq!(cassette.turns.len(), 1); - let body = &cassette.turns[0].request.body; - let tool = &body.tools[0]; - assert_eq!(tool["type"].as_str().unwrap(), "mcp"); - assert_eq!(tool["name"].as_str().unwrap(), "read_mcp_resource"); - assert_eq!(tool["server_label"].as_str().unwrap(), "repo"); - assert_loopback_mcp_url(tool["server_url"].as_str().unwrap()); - assert_eq!(body.tool_choice.as_ref().unwrap().as_str().unwrap(), "required"); - - let output = process_nonstreaming_turn(&cassette, 0, "Qwen/Qwen3-30B-A3B-FP8"); - assert!( - has_reasoning(&output), - "mcp read_resource cassette should include reasoning" - ); - assert_completed_read_mcp_resource(&output); +fn native_mcp_declaration() -> ResponsesTool { + serde_json::from_value(serde_json::json!({ + "type": "mcp", + "server_label": "counter", + "server_url": "http://127.0.0.1:8000/mcp", + "allowed_tools": ["increment"], + "require_approval": "never" + })) + .expect("native MCP declaration") } #[test] -fn read_mcp_resource_cassette_streaming_success_events() { - let cassette = load_mcp_cassette("mcp-read-resource-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml"); - assert_eq!(cassette.turns.len(), 1); - let body = &cassette.turns[0].request.body; - assert_eq!(body.tools[0]["type"].as_str().unwrap(), "mcp"); - - let sse = cassette.turns[0] - .response - .sse - .as_ref() - .expect("streaming cassette should include SSE events"); - let data_lines = extract_data_lines(sse); - let events: Vec = data_lines - .iter() - .filter_map(|line| line.strip_prefix("data: ")) - .filter(|data| *data != "[DONE]") - .filter_map(|data| serde_json::from_str(data).ok()) - .collect(); - let event_types: Vec<&str> = events.iter().filter_map(|event| event["type"].as_str()).collect(); - assert!( - !event_types.contains(&"response.error") && !event_types.contains(&"response.failed"), - "streaming MCP cassette must record a successful tool loop" - ); - assert!(event_types.contains(&"response.output_item.added")); - assert!(event_types.contains(&"response.mcp_tool_call.in_progress")); - assert!(event_types.contains(&"response.mcp_tool_call.completed")); - assert!(event_types.contains(&"response.output_item.done")); - assert!( - events - .iter() - .filter_map(|event| event.get("response")) - .any(|response| response["status"].as_str() == Some("completed") && response["output"].is_array()), - "streaming MCP cassette should include a completed final response payload" - ); - - let output = process_streaming_turn(&cassette, 0, "Qwen/Qwen3-30B-A3B-FP8"); - assert_completed_read_mcp_resource(&output); -} +fn native_mcp_declaration_uses_server_identity_without_a_tool_name() { + let ResponsesTool::Mcp(param) = native_mcp_declaration() else { + panic!("expected MCP declaration"); + }; -/// Asserts the cassette's `read_mcp_resource` call failed with an error -/// message containing `expected_error_fragment`, and that the request still -/// completes (the failure is fed back to the model, not surfaced as a -/// whole-request error). -fn assert_failed_read_mcp_resource(output: &[OutputItem], expected_error_fragment: &str) { + assert_eq!(param.server_label, "counter"); + assert_eq!(param.server_url.as_deref(), Some("http://127.0.0.1:8000/mcp")); assert_eq!( - count_function_calls(output), - 0, - "raw read_mcp_resource function call should not leak" - ); - let mcp_call = output - .iter() - .find_map(|item| match item { - OutputItem::McpToolCall(call) => Some(call), - _ => None, - }) - .expect("cassette output should include a mcp_tool_call item"); - assert_eq!(mcp_call.status.as_str(), "failed"); - assert_eq!(mcp_call.server, "repo"); - assert_eq!(mcp_call.tool, "read_mcp_resource"); - assert!( - mcp_call.result.is_none(), - "a failed mcp_tool_call should not carry a result" - ); - let error = mcp_call - .error - .as_deref() - .expect("failed mcp_tool_call should carry an error message"); - assert!( - error.contains(expected_error_fragment), - "expected error to contain '{expected_error_fragment}', got: {error}" - ); - assert!( - output.iter().any(|item| matches!(item, OutputItem::Message(_))), - "cassette output should still include a final assistant message reporting the failure" + param.allowed_tools.as_deref(), + Some(["increment".to_owned()].as_slice()) ); + assert_eq!(param.require_approval.as_deref(), Some("never")); } -/// Loads a single-turn streaming MCP cassette, asserts its SSE stream is a -/// well-formed failed-tool-call loop (not a whole-request error), and -/// returns the finalized output for failure-specific assertions. -fn load_and_process_failed_streaming_cassette(filename: &str) -> Vec { - let cassette = load_mcp_cassette(filename); - assert_eq!(cassette.turns.len(), 1); - let body = &cassette.turns[0].request.body; - assert_eq!(body.tools[0]["type"].as_str().unwrap(), "mcp"); - - let sse = cassette.turns[0] - .response - .sse - .as_ref() - .expect("streaming cassette should include SSE events"); - let data_lines = extract_data_lines(sse); - let events: Vec = data_lines - .iter() - .filter_map(|line| line.strip_prefix("data: ")) - .filter(|data| *data != "[DONE]") - .filter_map(|data| serde_json::from_str(data).ok()) - .collect(); - let event_types: Vec<&str> = events.iter().filter_map(|event| event["type"].as_str()).collect(); - assert!( - !event_types.contains(&"response.error") && !event_types.contains(&"response.failed"), - "a failed tool call must not surface as a whole-request error" - ); - assert!(event_types.contains(&"response.mcp_tool_call.in_progress")); - assert!(event_types.contains(&"response.mcp_tool_call.completed")); - assert!( - events - .iter() - .filter_map(|event| event.get("response")) - .any(|response| response["status"].as_str() == Some("completed") && response["output"].is_array()), - "streaming MCP cassette should include a completed final response payload" - ); - - process_streaming_turn(&cassette, 0, "Qwen/Qwen3-30B-A3B-FP8") -} - -/// Unhappy path: `server_url` fails the gateway's SSRF host allowlist, so no -/// connection is ever attempted. -#[test] -fn read_mcp_resource_cassette_unreachable_server() { - let output = load_and_process_failed_streaming_cassette( - "mcp-read-resource-unreachable-server-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml", - ); - assert_failed_read_mcp_resource(&output, "unknown MCP server"); -} - -/// Unhappy path: `server_url` is loopback (passes the allowlist) but nothing -/// is listening, so the gateway's connection attempt itself fails. -#[test] -fn read_mcp_resource_cassette_connection_refused() { - let output = load_and_process_failed_streaming_cassette( - "mcp-read-resource-connection-refused-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml", - ); - assert_failed_read_mcp_resource(&output, "failed to connect"); -} - -/// Unhappy path: the MCP server connects fine but `resources/read` fails -/// because the requested URI does not exist. #[test] -fn read_mcp_resource_cassette_missing_resource() { - let output = load_and_process_failed_streaming_cassette( - "mcp-read-resource-missing-resource-Qwen-Qwen3-30B-A3B-FP8-streaming.yaml", - ); - assert_failed_read_mcp_resource(&output, "resources/read failed"); +fn native_mcp_declaration_ignores_a_client_supplied_tool_name() { + let tool = serde_json::from_value::(serde_json::json!({ + "type": "mcp", + "name": "increment", + "server_label": "counter", + "server_url": "http://127.0.0.1:8000/mcp" + })) + .expect("MCP declaration with an unknown field"); + + let serialized = serde_json::to_value(tool).expect("serialized MCP declaration"); + assert_eq!(serialized["server_label"], "counter"); + assert!(serialized.get("name").is_none()); } diff --git a/crates/agentic-server-core/tests/messages_loop_test.rs b/crates/agentic-server-core/tests/messages_loop_test.rs index 8cbf1fa..2432a38 100644 --- a/crates/agentic-server-core/tests/messages_loop_test.rs +++ b/crates/agentic-server-core/tests/messages_loop_test.rs @@ -152,6 +152,14 @@ async fn build_exec_ctx(vllm_url: &str, search_url: &str) -> ExecutionContext { )) } +async fn build_tool_registry(tools: &Vec, exec_ctx: &ExecutionContext) -> ToolRegistry { + let mut registry_tool_params = registry_tools(Some(tools), &GatewayToolMap::default()); + let mut gateway_executors = exec_ctx.gateway_executors.clone(); + ToolRegistry::build_with_handlers(&mut registry_tool_params, &mut gateway_executors) + .await + .unwrap() +} + fn web_search_request() -> Value { serde_json::json!({ "model": "qwen3", @@ -171,12 +179,7 @@ async fn messages_loop_hides_gateway_tool_and_surfaces_final_text() { let request = web_search_request(); let tools: Vec = serde_json::from_value(request["tools"].clone()).unwrap(); - let registry = ToolRegistry::build_with_handlers( - ®istry_tools(Some(&tools), &GatewayToolMap::default()), - &exec_ctx.gateway_executors, - ) - .await - .unwrap(); + let registry = build_tool_registry(&tools, &exec_ctx).await; let result = run_messages_loop(request, ®istry, &exec_ctx, None) .await @@ -244,12 +247,7 @@ async fn repro_f3_next_round_preserves_thinking_and_text_blocks() { let exec_ctx = build_exec_ctx(&vllm_url, &search_url).await; let request = web_search_request(); let tools: Vec = serde_json::from_value(request["tools"].clone()).unwrap(); - let registry = ToolRegistry::build_with_handlers( - ®istry_tools(Some(&tools), &GatewayToolMap::default()), - &exec_ctx.gateway_executors, - ) - .await - .unwrap(); + let registry = build_tool_registry(&tools, &exec_ctx).await; run_messages_loop(request, ®istry, &exec_ctx, None).await.unwrap(); // Inspect the assistant turn the loop appended for round 2. @@ -318,12 +316,7 @@ async fn run_against(bodies: Vec, request: Value) -> (Value, usize) { let (search_url, _rx, _s) = spawn_mock_search().await; let exec_ctx = build_exec_ctx(&vllm_url, &search_url).await; let tools: Vec = serde_json::from_value(request["tools"].clone()).unwrap_or_default(); - let registry = ToolRegistry::build_with_handlers( - ®istry_tools(Some(&tools), &GatewayToolMap::default()), - &exec_ctx.gateway_executors, - ) - .await - .unwrap(); + let registry = build_tool_registry(&tools, &exec_ctx).await; let result = run_messages_loop(request, ®istry, &exec_ctx, None).await.unwrap(); (result, upstream.calls.load(Ordering::SeqCst)) } @@ -381,12 +374,7 @@ async fn messages_loop_multi_round_sequential() { let exec_ctx = build_exec_ctx(&vllm_url, &search_url).await; let request = web_search_request(); let tools: Vec = serde_json::from_value(request["tools"].clone()).unwrap(); - let registry = ToolRegistry::build_with_handlers( - ®istry_tools(Some(&tools), &GatewayToolMap::default()), - &exec_ctx.gateway_executors, - ) - .await - .unwrap(); + let registry = build_tool_registry(&tools, &exec_ctx).await; let result = run_messages_loop(request, ®istry, &exec_ctx, None).await.unwrap(); @@ -409,12 +397,7 @@ async fn messages_loop_parallel_tool_use() { let exec_ctx = build_exec_ctx(&vllm_url, &search_url).await; let request = web_search_request(); let tools: Vec = serde_json::from_value(request["tools"].clone()).unwrap(); - let registry = ToolRegistry::build_with_handlers( - ®istry_tools(Some(&tools), &GatewayToolMap::default()), - &exec_ctx.gateway_executors, - ) - .await - .unwrap(); + let registry = build_tool_registry(&tools, &exec_ctx).await; let result = run_messages_loop(request, ®istry, &exec_ctx, None).await.unwrap(); @@ -457,12 +440,7 @@ async fn messages_loop_tool_failure_becomes_error_tool_result() { let exec_ctx = build_exec_ctx(&vllm_url, &search_url).await; let request = web_search_request(); let tools: Vec = serde_json::from_value(request["tools"].clone()).unwrap(); - let registry = ToolRegistry::build_with_handlers( - ®istry_tools(Some(&tools), &GatewayToolMap::default()), - &exec_ctx.gateway_executors, - ) - .await - .unwrap(); + let registry = build_tool_registry(&tools, &exec_ctx).await; let result = run_messages_loop(request, ®istry, &exec_ctx, None).await.unwrap(); @@ -506,12 +484,7 @@ async fn messages_loop_caps_at_max_rounds() { let exec_ctx = build_exec_ctx(&vllm_url, &search_url).await; let request = web_search_request(); let tools: Vec = serde_json::from_value(request["tools"].clone()).unwrap(); - let registry = ToolRegistry::build_with_handlers( - ®istry_tools(Some(&tools), &GatewayToolMap::default()), - &exec_ctx.gateway_executors, - ) - .await - .unwrap(); + let registry = build_tool_registry(&tools, &exec_ctx).await; let result = run_messages_loop(request, ®istry, &exec_ctx, None).await.unwrap(); diff --git a/crates/agentic-server-core/tests/messages_stream_test.rs b/crates/agentic-server-core/tests/messages_stream_test.rs index 3291d74..5370d95 100644 --- a/crates/agentic-server-core/tests/messages_stream_test.rs +++ b/crates/agentic-server-core/tests/messages_stream_test.rs @@ -142,13 +142,12 @@ async fn messages_stream_presents_one_message_and_hides_gateway_tool() { "input_schema": {"type": "object", "properties": {"query": {"type": "string"}}, "required": ["query"]}}] }); let tools: Vec = serde_json::from_value(request["tools"].clone()).unwrap(); + let mut registry_tool_params = registry_tools(Some(&tools), &GatewayToolMap::default()); + let mut gateway_executors = exec_ctx.gateway_executors.clone(); let registry = Arc::new( - ToolRegistry::build_with_handlers( - ®istry_tools(Some(&tools), &GatewayToolMap::default()), - &exec_ctx.gateway_executors, - ) - .await - .unwrap(), + ToolRegistry::build_with_handlers(&mut registry_tool_params, &mut gateway_executors) + .await + .unwrap(), ); let stream = run_messages_stream(request, registry, Arc::clone(&exec_ctx), None); @@ -216,13 +215,12 @@ async fn messages_stream_multiround_single_lifecycle() { "input_schema": {"type": "object", "properties": {"query": {"type": "string"}}, "required": ["query"]}}] }); let tools: Vec = serde_json::from_value(request["tools"].clone()).unwrap(); + let mut registry_tool_params = registry_tools(Some(&tools), &GatewayToolMap::default()); + let mut gateway_executors = exec_ctx.gateway_executors.clone(); let registry = Arc::new( - ToolRegistry::build_with_handlers( - ®istry_tools(Some(&tools), &GatewayToolMap::default()), - &exec_ctx.gateway_executors, - ) - .await - .unwrap(), + ToolRegistry::build_with_handlers(&mut registry_tool_params, &mut gateway_executors) + .await + .unwrap(), ); let stream = run_messages_stream(request, registry, Arc::clone(&exec_ctx), None); diff --git a/crates/agentic-server-core/tests/stateful_responses_integration.rs b/crates/agentic-server-core/tests/stateful_responses_integration.rs index 4e19ad2..560716c 100644 --- a/crates/agentic-server-core/tests/stateful_responses_integration.rs +++ b/crates/agentic-server-core/tests/stateful_responses_integration.rs @@ -7,7 +7,6 @@ mod support; use agentic_core::executor::execute; use agentic_core::executor::request::RequestContext; -use agentic_core::tool::model_visible_namespace_member_name; use agentic_core::types::request_response::RequestPayload; use agentic_core::types::tools::{FunctionToolParam, NonEmptyToolName}; use agentic_core::{FunctionToolResultMessage, InputItem, ResponsesInput, ResponsesTool, ToolChoice}; @@ -377,44 +376,6 @@ async fn test_codex_namespace_collision_with_top_level_function_is_rejected() { ); } -#[tokio::test] -async fn test_shortened_namespace_name_collision_with_later_mcp_tool_is_rejected() { - let fixture = TestFixture::new_with_responses(vec![text_response("should not be called")]).await; - let namespace = "mcp__codex_apps__github"; - let member = "_remove_reaction_from_pr_review_comment"; - let shortened_name = model_visible_namespace_member_name(namespace, member); - let tools: Vec = serde_json::from_value(serde_json::json!([ - { - "type": "namespace", - "name": namespace, - "tools": [{"type": "function", "name": member}] - }, - { - "type": "mcp", - "name": shortened_name, - "server_label": "fixture", - "server_url": "http://127.0.0.1:1/mcp" - } - ])) - .unwrap(); - - let mut request = make_request("remove a reaction", true, false, None, None); - request.tools = Some(tools); - - let Err(err) = execute(request, Arc::clone(&fixture.exec_ctx)).await else { - panic!("colliding shortened namespace member should be rejected"); - }; - - assert!( - err.to_string().contains("collides with a declared MCP tool"), - "unexpected error: {err}" - ); - assert!( - fixture.request_bodies().await.is_empty(), - "invalid request must fail before calling upstream" - ); -} - #[tokio::test] async fn test_previous_response_id_explicit_tool_choice_overrides_stored_choice() { let fixture = diff --git a/crates/agentic-server-core/tests/tool_normalization_test.rs b/crates/agentic-server-core/tests/tool_normalization_test.rs index 341aae8..d108692 100644 --- a/crates/agentic-server-core/tests/tool_normalization_test.rs +++ b/crates/agentic-server-core/tests/tool_normalization_test.rs @@ -17,7 +17,6 @@ use agentic_core::utils::common::serialize_to_string; const MULTI_TURN_DIR: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/tests/cassettes/tool_calls/multi_turn"); const CODEX_DIR: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/tests/cassettes/codex"); -const MCP_DIR: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/tests/cassettes/mcp"); const CODEX_CASSETTES: &[&str] = &[ "codex-direct-vllm-http-custom-tool-Qwen-Qwen3.6-35B-A3B-streaming.yaml", @@ -78,10 +77,6 @@ fn load_codex_cassette(filename: &str) -> TurnCassette { load_cassette_from(CODEX_DIR, filename) } -fn load_mcp_cassette(filename: &str) -> TurnCassette { - load_cassette_from(MCP_DIR, filename) -} - fn tools_from_turn(turn: &Turn) -> Option { let body = turn.request.get("body")?; let json: serde_json::Value = serde_json::to_value(body).ok()?; @@ -185,11 +180,12 @@ async fn assert_registry_lookup(cassette_file: &str) { let Some(tools_val) = tools_from_turn(turn) else { continue; }; - let tools: Vec = serde_json::from_value(tools_val).expect("tools parse"); - let registry = ToolRegistry::build_with_handlers(&tools, &GatewayExecutors::default()) + let mut tools: Vec = serde_json::from_value(tools_val).expect("tools parse"); + let declared_tools = tools.clone(); + let registry = ToolRegistry::build_with_handlers(&mut tools, &mut GatewayExecutors::default()) .await .unwrap_or_else(|err| panic!("{cassette_file} turn {i}: registry failed: {err}")); - for tool in &tools { + for tool in &declared_tools { if let ResponsesTool::Function(p) = tool { let entry = registry .lookup(p.name.as_str()) @@ -339,7 +335,8 @@ async fn codex_custom_cassettes_preserve_native_upstream_shape_and_client_owners "{filename} turn {i}: expected native custom grammar declaration" ); - let registry = ToolRegistry::build_with_handlers(tools, &GatewayExecutors::default()) + let mut registry_tools = tools.clone(); + let registry = ToolRegistry::build_with_handlers(&mut registry_tools, &mut GatewayExecutors::default()) .await .unwrap_or_else(|err| panic!("{filename} turn {i}: registry failed: {err}")); assert!( @@ -419,7 +416,7 @@ fn codex_namespace_cassettes_flatten_to_safe_upstream_function_name() { #[tokio::test] async fn tool_registry_restores_wire_event_namespace_losslessly() { - let tools: Vec = serde_json::from_value(serde_json::json!([ + let mut tools: Vec = serde_json::from_value(serde_json::json!([ { "type": "namespace", "name": "mcp__agentic_fixture", @@ -427,7 +424,7 @@ async fn tool_registry_restores_wire_event_namespace_losslessly() { } ])) .unwrap(); - let registry = ToolRegistry::build_with_handlers(&tools, &GatewayExecutors::default()) + let registry = ToolRegistry::build_with_handlers(&mut tools, &mut GatewayExecutors::default()) .await .expect("valid registry"); let mut wire = WireEvent::new("response.output_item.done"); @@ -507,37 +504,3 @@ fn web_search_preview_normalizes_to_gateway_function() { assert_eq!(tools[0].get("name").and_then(Value::as_str), Some("web_search")); assert_eq!(tools[0]["parameters"]["required"], serde_json::json!(["query"])); } - -#[test] -fn mcp_read_resource_normalizes_to_gateway_function() { - for filename in ["mcp-read-resource-Qwen-Qwen3-30B-A3B-FP8-nonstreaming.yaml"] { - let cassette = load_mcp_cassette(filename); - for (i, turn) in cassette.turns.iter().enumerate() { - let json = request_body_from_turn(turn); - let payload: RequestPayload = serde_json::from_value(json) - .unwrap_or_else(|e| panic!("{filename} turn {i}: RequestPayload parse failed: {e}")); - - let upstream = upstream_request_value(payload, false); - let tools = upstream.get("tools").and_then(Value::as_array).unwrap_or_else(|| { - panic!("{filename} turn {i}: MCP read_resource should normalize to a function tool") - }); - - assert_eq!(tools.len(), 1, "{filename} turn {i}: expected one normalized tool"); - assert_eq!( - tools[0].get("type").and_then(Value::as_str), - Some("function"), - "{filename} turn {i}: normalized type must be 'function'" - ); - assert_eq!( - tools[0].get("name").and_then(Value::as_str), - Some(agentic_core::tool::READ_MCP_RESOURCE_TOOL_NAME), - "{filename} turn {i}: normalized name must be READ_MCP_RESOURCE_TOOL_NAME" - ); - assert_eq!( - tools[0]["parameters"]["required"], - serde_json::json!(["server", "uri"]), - "{filename} turn {i}: normalized parameters must require server and uri" - ); - } - } -} diff --git a/crates/agentic-server/src/handler/http/messages.rs b/crates/agentic-server/src/handler/http/messages.rs index 147c5e8..9b92b9f 100644 --- a/crates/agentic-server/src/handler/http/messages.rs +++ b/crates/agentic-server/src/handler/http/messages.rs @@ -76,12 +76,9 @@ async fn execute_messages(state: &AppState, headers: &HeaderMap, req: &MessagesR // ownership (incl. configured aliases like Claude Code's `WebSearch`) is // resolved against the operator-configured map. let gateway_map = &state.exec_ctx.messages_gateway_tools; - let registry = match ToolRegistry::build_with_handlers( - ®istry_tools(req.tools.as_ref(), gateway_map), - &state.exec_ctx.gateway_executors, - ) - .await - { + let mut tools = registry_tools(req.tools.as_ref(), gateway_map); + let mut executors = state.exec_ctx.gateway_executors.clone(); + let registry = match ToolRegistry::build_with_handlers(&mut tools, &mut executors).await { Ok(r) => r, Err(e) => return messages_error_response(&ExecutorError::from(e)), }; diff --git a/docs/design/mcp-gateway-integration.md b/docs/design/mcp-gateway-integration.md index d719d34..5417d52 100644 --- a/docs/design/mcp-gateway-integration.md +++ b/docs/design/mcp-gateway-integration.md @@ -1,426 +1,194 @@ # MCP Gateway Integration Target: `crates/agentic-server-core/` -Reference: [mcp handlers](https://github.com/openai/codex/tree/main/codex-rs/core/src/tools/handlers), [rmcp-client](https://github.com/openai/codex/tree/main/codex-rs/rmcp-client), [turn.rs](https://github.com/openai/codex/blob/main/codex-rs/core/src/session/turn.rs), [rust-sdk README](https://github.com/modelcontextprotocol/rust-sdk#readme) ---- +References: -## Goal - -This design uses [`rmcp`](https://github.com/modelcontextprotocol/rust-sdk) as the protocol layer for connecting to remote MCP servers. The MCP spec in rmcp gives us two patterns for implementing built-in tools inside agentic-api. Each pattern becomes a `GatewayExecutor` registered in `ToolRegistry` under a fixed tool name: - -1. **MCP Resources** ([rust-sdk Resources](https://github.com/modelcontextprotocol/rust-sdk#resources)): for tools that read or fetch content by URI. `read_mcp_resource` is the first example of this pattern. -2. **MCP Tools** ([rust-sdk `#[tool]` macro](https://github.com/modelcontextprotocol/rust-sdk#tools)): for standalone MCP server tools that expose computation or actions. The `#[tool]` macro auto-generates the JSON schema, validation, and MCP wire format for a server that agentic-api connects to via `McpClientPool`. Examples: - - **stdio MCP server** (`connect_stdio`): a locally spawned process (command + args) the gateway connects to over stdin/stdout. Users wire up their own MCP server process and the gateway talks to it via rmcp's `TokioChildProcess` transport. - - **calculator** (reference example from [rust-sdk Tools](https://github.com/modelcontextprotocol/rust-sdk#tools)): simplest possible `#[tool]` server, useful as a template. - -### HTTP server allowlist security - -Request-provided MCP server URLs allow loopback hosts by default. Additional -hostnames can be allowed with the comma-separated `AGENTIC_MCP_ALLOWED_HOSTS` -environment variable. - -Treat every hostname added to `AGENTIC_MCP_ALLOWED_HOSTS` as fully trusted. The -allowlist validates the hostname text. When it opens a connection, the HTTP -client resolves the hostname once, pins all returned addresses for that -transport, disables automatic proxy discovery, and disables redirects. This -prevents later DNS changes, proxy-side resolution, or redirect targets from -bypassing the validation, but it does not make an untrusted DNS record safe: a -poisoned initial resolution is still trusted. Only add hostnames whose DNS -configuration is controlled by a trusted administrator. +- [OpenAI Responses MCP guide](https://developers.openai.com/api/docs/guides/tools-connectors-mcp) +- [MCP tools specification](https://modelcontextprotocol.io/specification/2025-06-18/server/tools) +- [Codex MCP client](https://github.com/openai/codex/tree/main/codex-rs/codex-mcp) +- [Codex MCP tool handler](https://github.com/openai/codex/blob/main/codex-rs/core/src/tools/handlers/mcp.rs) -### First built-in tool: `read_mcp_resource` - -The first built-in is `read_mcp_resource`, mirroring codex's [`ReadMcpResourceHandler`](https://github.com/openai/codex/blob/main/codex-rs/core/src/tools/handlers/mcp_resource/read_mcp_resource.rs). Given a `server` label and a `uri`, it calls `resources/read` on the named MCP server and returns the content to the model. It is registered once in `ToolRegistry`; the model selects the target server at call time via the `server` argument. This mirrors how codex registers `read_mcp_resource` as a fixed tool regardless of how many MCP servers are connected. - -### Second built-in tool roadmap: stdio MCP server support - -The next built-in adds stdio transport to `McpClient`, enabling gateway-managed MCP servers that run as local processes. This uses rmcp's `TokioChildProcess` stdio transport and follows the MCP Tools pattern. +## Goal -`McpClient` gains a second constructor: +Agentic API implements the OpenAI Responses `type: "mcp"` contract for tools exposed by a remote MCP server. The +gateway connects to each declared server, discovers tools with `tools/list`, presents those tools to the upstream +model as function tools, executes model-selected tools with `tools/call`, and restores the public Responses MCP +identity in output items and streaming events. -```rust -impl McpClient { - // existing: HTTP/SSE transport - pub async fn connect(server_url: &str, headers: Option>) -> Result +The request declaration has server identity and connection information, not a tool name: - // new: spawns command and connects over stdin/stdout - pub async fn connect_stdio(command: &str, args: &[&str]) -> Result +```json +{ + "type": "mcp", + "server_label": "counter", + "server_url": "http://localhost:8000/mcp", + "allowed_tools": ["increment", "get_value"], + "require_approval": "never" } ``` -`McpClientPool` gains a config-based constructor for gateway-managed servers: +The server owns the tool names returned by `tools/list`. A client cannot put `name` on the MCP declaration to select +an operation. -```rust -pub enum McpServerEntry { - Http { url: String, headers: Option> }, - Stdio { command: String, args: Vec }, -} +## Supported MCP surface -impl McpClientPool { - // existing: built from client request - pub async fn from_params(params: &[McpToolParam]) -> Self +The gateway supports the model-controlled MCP tool lifecycle: - // new: built from gateway config at startup - pub async fn from_config(servers: HashMap) -> Self -} +```text +Responses type:mcp declaration + -> connect and initialize MCP client + -> tools/list + -> filter allowed_tools + -> normalize discovered tools for the upstream model + -> model emits an internal function call + -> tools/call + -> restore public mcp_call identity and events ``` -This enables users to wire up fixture servers the same way as `.codex/config.toml`: +The OpenAI public contract uses: -```toml -[mcp_servers.my_fixture] -command = "python3" -args = ["/path/to/server.py"] -``` +- `mcp_list_tools` for discovery output +- `mcp_call` for a selected tool call +- `response.mcp_call.in_progress` +- `response.mcp_call_arguments.delta` +- `response.mcp_call_arguments.done` +- `response.mcp_call.completed` or `response.mcp_call.failed` -The rest of the stack (`McpHandler`, `build_mcp_registry`, dispatch loop) is unchanged. Stdio servers are just another entry in the pool. +The internal function-tool representation is an implementation detail and must not leak as a public function call. +The gateway exposes execution through the `mcp_call` lifecycle. Emitting the separate `mcp_list_tools` discovery +lifecycle is an additional public representation of the same discovery step and does not change the tool execution +design described here. ---- +## Components -## Implementing MCP and the First Built-in Tool +### `McpClient` -### Step 1: `McpClient` (`mcp/client.rs`) - -Thin async wrapper around `rmcp::service::RunningService`. Connects over HTTP/SSE (streamable HTTP transport). +`McpClient` is a thin asynchronous wrapper around an `rmcp` client service. Its gateway execution surface is limited +to MCP tools: ```rust -pub struct McpClient { - inner: Arc>, - tool_timeout: Duration, -} - impl McpClient { - pub async fn connect(server_url: &str, headers: Option>) -> Result - pub async fn list_tools(&self) -> Result, McpError> - pub async fn call_tool(&self, name: &str, arguments: Option) -> Result - pub async fn read_resource(&self, uri: &str) -> Result + pub async fn connect( + server_url: &str, + headers: Option>, + ) -> Result; + + pub async fn connect_stdio( + command: &str, + args: &[String], + env: Option<&HashMap>, + cwd: Option<&str>, + ) -> Result; + + pub async fn list_tools(&self) -> Result, McpError>; + + pub async fn call_tool( + &self, + name: &str, + arguments: Option, + ) -> Result; } ``` -The `read_resource` method maps directly to the `read_resource` handler shown in the [rust-sdk Resources section](https://github.com/modelcontextprotocol/rust-sdk#resources). In the SDK, a server implements `ServerHandler::read_resource()` to serve content by URI - `McpClient::read_resource()` is the client side of that same call. +### `McpClientPool` ---- +`McpClientPool` owns clients keyed by `server_label`. Request-scoped HTTP clients are constructed from +`McpToolParam`. Gateway configuration may also construct HTTP or stdio clients through `McpServerEntry`. -### Step 2: `McpClientPool` (`mcp/mod.rs`) +Request-provided URLs allow loopback hosts by default. Additional trusted hostnames may be configured through +`AGENTIC_MCP_ALLOWED_HOSTS`. URL validation, pinned DNS addresses, disabled automatic proxy discovery, and disabled +redirects prevent later routing changes from bypassing the configured trust boundary. -One `McpClient` per server, keyed by `server_label`. Has two constructors: one built from the client request (`from_params`), one built from gateway config at startup (`from_config`, for gateway-managed stdio/HTTP servers). The `ReadResource` handler holds an `Arc` and uses `get()` at call time to route to the server named in the model's arguments. +### `GatewayExecutors` -```rust -pub struct McpClientPool { - clients: HashMap>, -} +`GatewayExecutors` caches discovered MCP handlers by `server_label`. A server label may appear only once in a request. +For an uncached declaration it: -impl McpClientPool { - pub async fn from_params(params: &[McpToolParam]) -> Self - pub async fn from_config(servers: HashMap) -> Self - pub fn get(&self, server_label: &str) -> Option<&Arc> -} -``` +1. Builds an MCP connection from the declaration. +2. Calls `tools/list`. +3. Applies `allowed_tools`. +4. Creates one `McpDiscoveredHandler` per remaining tool. +5. Caches the handlers under the declaration's `server_label`. -**Codex parallel:** [`McpConnectionManager`](https://github.com/openai/codex/blob/main/codex-rs/codex-mcp/src/connection_manager.rs). +An empty final allowed set is a configuration error. ---- +### `McpHandler` -### Step 3: `McpHandler` and `McpHandlerKind` (`mcp/handlers/mod.rs`) +`McpHandler` has one responsibility: normalize and execute discovered MCP tools. -A single generic handler covers all MCP operations. `McpHandlerKind` tells `execute()` which wire operation to perform - no separate handler type per operation. +An executable handler contains the `McpClient` bound to the server that advertised the tool. A spec-only handler has +no client and exists only for `ResponsesTool::to_function_tools()` normalization. Each executable handler invokes a +discovered tool through `tools/call`, so it does not need an operation enum. ```rust -pub enum McpHandlerKind { - /// tools/call - one handler per discovered tool, bound to a specific server - ToolCall { tool_name: String }, - - /// resources/read - registered once as the read_mcp_resource built-in. - /// Holds the full pool so it can route to whichever server the model names - /// in the `server` argument at call time. - ReadResource { pool: Arc }, -} - pub struct McpHandler { - server_label: String, // used by ToolCall; ignored by ReadResource - client: Arc, // used by ToolCall; ReadResource looks up client from pool - kind: McpHandlerKind, -} - -impl GatewayExecutor for McpHandler { - fn execute(&self, _name, arguments, _config) -> Pin> { - Box::pin(async move { - match &self.kind { - McpHandlerKind::ToolCall { tool_name } => { - let result = self.client.call_tool(tool_name, serde_json::from_str(arguments).ok()).await?; - Ok(ToolOutput { call_id: String::new(), output: call_result_to_text(&result) }) - } - McpHandlerKind::ReadResource { pool } => { - let args: ReadResourceArgs = serde_json::from_str(arguments)?; - let client = pool.get(&args.server) - .ok_or_else(|| ToolError::Execution(format!("unknown server: {}", args.server)))?; - let result = client.read_resource(&args.uri).await?; - Ok(ToolOutput { call_id: String::new(), output: read_result_to_text(&result) }) - } - } - }) - } -} -``` - -`read_resource.rs` holds only the args struct and the tool spec - not a handler itself: - -```rust -#[derive(Deserialize)] -pub struct ReadResourceArgs { pub server: String, pub uri: String } - -pub fn read_mcp_resource_spec() -> FunctionTool { ... } -``` - -Tool spec injected into every LLM request when MCP servers are present: - -```json -{ - "name": "read_mcp_resource", - "description": "Read a resource by URI from a connected MCP server.", - "parameters": { - "properties": { - "server": {"type": "string", "description": "The server_label to read from."}, - "uri": {"type": "string", "description": "The resource URI to read."} - }, - "required": ["server", "uri"] - } -} -``` - -**Codex parallel:** [`McpHandler`](https://github.com/openai/codex/blob/main/codex-rs/core/src/tools/handlers/mcp.rs) for `ToolCall`, [`ReadMcpResourceHandler`](https://github.com/openai/codex/blob/main/codex-rs/core/src/tools/handlers/mcp_resource/read_mcp_resource.rs) for `ReadResource`. - ---- - -### Step 4: `ToolEntry` + `ToolRegistry::dispatch()` (`tool/registry.rs`) - -Add `handler` to `ToolEntry`. Client-owned tools have `handler: None` and pass through to the model. Gateway-owned tools have `handler: Some(...)` and are executed by the gateway. - -```rust -pub struct ToolEntry { - pub tool_type: ToolType, - pub config: Value, - pub server_label: Option, - pub handler: Option>, // new -} - -impl ToolRegistry { - pub async fn dispatch(&self, call: &FunctionToolCall) -> Option> { - let entry = self.entries.get(&call.name)?; - let handler = entry.handler.as_ref()?; - let mut out = handler.execute(&call.name, &call.arguments, &entry.config).await; - if let Ok(ref mut o) = out { o.call_id = call.call_id.clone(); } - Some(out) - } + client: Option>, } ``` ---- - -### Step 5: `build_mcp_registry()` (`mcp/mod.rs`) +During execution, the registry entry supplies `McpDiscoveredToolParam`, which contains: -Calls `tools/list` on each server, registers one `McpHandler` per discovered tool, and registers the `read_mcp_resource` built-in. The dispatch loop calls `registry.dispatch(call)` without knowing which kind fires. +- public `server_label` +- public MCP `tool_name` +- internal model-visible name +- the tool schema returned by `tools/list` -```rust -pub async fn build_mcp_registry(pool: Arc) -> (Vec, ToolRegistry) { - let mut specs = vec![read_mcp_resource_spec()]; - let mut entries = Vec::new(); - - // Built-in: registered once; routes to the right server at call time via args.server. - // server_label and client are unused for ReadResource - routing goes through the pool. - entries.push(("read_mcp_resource".into(), ToolEntry { - tool_type: ToolType::Mcp, - config: Value::Null, - server_label: None, - handler: Some(Arc::new(McpHandler { - server_label: String::new(), - client: Arc::new(McpClient::placeholder()), - kind: McpHandlerKind::ReadResource { pool: Arc::clone(&pool) }, - })), - })); - - // Per-tool: one entry per discovered tool per server, keyed "{server_label}__{tool_name}" - for (server_label, client) in pool.iter() { - for tool in client.list_tools().await.unwrap_or_default() { - let key = format!("{server_label}__{}", tool.name); - specs.push(mcp_tool_to_function_tool(&key, &tool)); - entries.push((key, ToolEntry { - handler: Some(Arc::new(McpHandler { - kind: McpHandlerKind::ToolCall { tool_name: tool.name.to_string() }, .. - })), - .. - })); - } - } - - (specs, ToolRegistry::with_entries(entries)) -} -``` +`McpHandler::execute()` reads that identity, validates the model arguments as a JSON object, calls `tools/call`, and +serializes the MCP result for the next inference round. ---- +### `ToolRegistry` -## Plugging Into the Execution Loop +`ToolRegistry::build_with_handlers()` owns the complete routing table, including discovered MCP tools. Discovery +happens before `RequestPayload::to_upstream_request()` normalizes the request: -### How Codex Orchestrates Turns - -Codex processes turns in an event-driven loop in [`try_run_sampling_request()`](https://github.com/openai/codex/blob/main/codex-rs/core/src/session/turn.rs#L1072). Tool calls are spawned as their arguments finish arriving and run concurrently with the rest of the SSE stream. [`drain_in_flight()`](https://github.com/openai/codex/blob/main/codex-rs/core/src/session/turn.rs#L1853) collects all results once `ResponseCompleted` arrives, then the outer `run_turn()` loop re-enters with results appended to the conversation. - -``` -try_run_sampling_request() - |- OutputItemDone(FunctionCall) -> dispatch_tool_call() - | push future -> in_flight: FuturesOrdered - |- ResponseCompleted -> drain_in_flight() - | sess.record_conversation_items(results) - +- outer run_turn() loop -> next LLM call with updated history +```text +ResponsesTool::Mcp + -> GatewayExecutors::mcp_handler() + -> declaration._agentic_discovered_tools is populated + -> each discovered handler is inserted into ToolRegistry + -> ResponsesTool::to_function_tools() + -> McpHandler::spec_from_param(...).normalize(...) ``` -### How agentic-api Does It +The `_agentic_discovered_tools` field is internal state and is not part of the public request contract. -The existing `ResponseAccumulator` uses a `spawn_blocking` worker for SSE parsing and an `IndexMap` to track in-flight items in insertion order. After `ResponseCompleted`, `finalize_all()` drains the `IndexMap` into `output` preserving insertion order. +Each upstream function name includes both server and tool identity, for example +`mcp__counter__increment`. Names are sanitized and bounded to the upstream function-name limit. The registry retains +the original identity so public output uses: -`from_stream_with_dispatch` adds an optional `ToolDispatchFn`. After the stream ends, it iterates the completed `FunctionCall` items from `output` in the async context (outside the blocking worker) and executes each one sequentially. Insertion order is preserved via `IndexMap`. - -``` -ResponseAccumulator::from_stream_with_dispatch() - |- spawn_blocking worker: SSE parsing, finalize_all() -> output: Vec - +- async context: for each FunctionCall in output (IndexMap insertion order): - dispatch_fn(call).await -> ToolCallResult (sequential) - return (acc, Vec) -``` - -**Codex parallel:** -- `from_stream_with_dispatch` = [`try_run_sampling_request`](https://github.com/openai/codex/blob/main/codex-rs/core/src/session/turn.rs#L1072) -- sequential drain = [`drain_in_flight()`](https://github.com/openai/codex/blob/main/codex-rs/core/src/session/turn.rs#L1853) (codex uses `FuturesOrdered` for concurrent dispatch) - -**Future upgrade path:** once the `spawn_blocking` worker is replaced with a fully async SSE parser, tool dispatch can be upgraded to `FuturesOrdered` to match codex - dispatching calls as their arguments arrive rather than after the full stream completes. - ---- - -### Step 6: Extend `ResponseAccumulator` (`executor/accumulator.rs`) - -`ToolDispatchFn` is the bridge between the accumulator and the registry. When a `FunctionCall` event arrives, the accumulator reads the tool name from the event to identify which tool needs to be called (dispatch). It does not call the tool itself; it fires the closure, which looks up the handler in `ToolRegistry` by name and executes it. The accumulator only sees a `ToolCallResult` come back. - -``` -FunctionCallArgumentsDone - -> read call.name <- identify which tool was requested - -> ToolDispatchFn(call) <- dispatch: find handler in registry - -> ToolRegistry::dispatch(call) <- lookup by name, None for client-owned tools - -> handler.execute(arguments) <- execute: McpClient::call_tool / read_resource - -> ToolCallResult <- accumulator receives result, knows nothing else -``` - -```rust -pub type ToolDispatchFn = Arc BoxFuture<'static, ToolCallResult> + Send + Sync>; -``` - -No new fields on `ResponseAccumulator` , the existing `IndexMap` already collects `FunctionCall` items in insertion order. The dispatch happens in the async context after the blocking worker finishes, not during streaming. - -New constructor that runs tool dispatch sequentially after the stream ends: - -```rust -pub async fn from_stream_with_dispatch( - stream: ..., - conversation_id: Option<&str>, - dispatch: Option, -) -> ExecutorResult<(Self, Vec)> -``` - ---- - -### Step 7: `execute_with_mcp()` (`executor/engine.rs`) - -New function alongside `execute()`. The existing `execute()` is not modified - this keeps MCP work and other tool work independent until both are stable, at which point they are unified into a single `execute_loop()`. - -```rust -pub async fn execute_with_mcp(request: RequestPayload, exec_ctx: Arc) -> ExecutorResult { - let pool = Arc::new(McpClientPool::from_params(&collect_mcp_params(&request)).await); - let (extra_specs, registry) = build_mcp_registry(Arc::clone(&pool)).await; - let registry = Arc::new(registry); - - let mut ctx = rehydrate_conversation(request, &exec_ctx).await?; - ctx.enriched_request.append_tools(extra_specs); - - let dispatch: ToolDispatchFn = Arc::new({ - let registry = Arc::clone(®istry); - move |call| Box::pin(async move { - let output = registry.dispatch(&call).await - .unwrap_or(Err(ToolError::Execution(format!("no handler: {}", call.name)))); - ToolCallResult { call, output } - }) - }); - - for _ in 0..MAX_TOOL_ROUNDS { - let stream = call_inference(&ctx, ...); - let (acc, tool_results) = ResponseAccumulator::from_stream_with_dispatch( - stream, ctx.conversation_id.as_deref(), Some(Arc::clone(&dispatch)), - ).await?; - - let mut payload = acc.finalize(...); - ctx.inject_ids(&mut payload); - - if tool_results.is_empty() { - persist_if_needed(payload.clone(), &ctx, &exec_ctx).await; - return Ok(payload); - } - ctx = ctx.append_tool_results(payload.output, tool_results); - } - Err(ExecutorError::ToolLoopExceeded(MAX_TOOL_ROUNDS)) +```json +{ + "type": "mcp_call", + "server_label": "counter", + "name": "increment" } ``` -Tool errors become error text in `FunctionCallOutput`, never fatal - mirrors [`failure_response()`](https://github.com/openai/codex/blob/main/codex-rs/core/src/tools/parallel.rs#L64) in codex. - ---- +## Turn execution -## Full Turn Flow +The gateway's existing tool loop handles MCP tools together with other gateway-executed built-in tools: +```text +build request-scoped registry + -> discover MCP tools + -> normalize request for upstream inference + -> receive internal function call + -> registry dispatches to McpHandler + -> McpClient tools/call + -> append function call output for the next upstream round + -> expose public mcp_call item/events to the Responses client ``` -execute_with_mcp() - |- McpClientPool::from_params() connect to MCP servers - |- build_mcp_registry() tools/list each server; register read_mcp_resource - |- rehydrate_conversation() load history - |- append_tools(extra_specs) inject read_mcp_resource spec into request - +- LOOP - |- call_inference() SSE stream from LLM - +- from_stream_with_dispatch() - |- spawn_blocking worker: SSE parsing, IndexMap tracks FunctionCall items - +- ResponseCompleted -> finalize_all() -> output: Vec - async context: for each FunctionCall in output (insertion order): - dispatch_fn(call).await - +- registry.dispatch(call) - +- McpHandler::execute() - |- ToolCall -> McpClient::call_tool() - +- ReadResource -> McpClient::read_resource() - -> tool_results: Vec - |- tool_results empty -> return payload - +- else -> append_tool_results() -> next LLM call -``` - ---- - -## Implementation Order and PR Split - -**PR 1: MCP client + registry infrastructure** (phases 1-5, no engine changes) - -| Phase | Work | Files | -|-------|------|-------| -| 1 | `McpClient` (connect, connect_stdio, list_tools, call_tool, read_resource) | `mcp/client.rs`, `Cargo.toml` | -| 2 | `McpClientPool::from_params()`, `from_config()`, `McpServerEntry` | `mcp/mod.rs` | -| 3 | `ReadResourceArgs` + `read_mcp_resource_spec()` | `mcp/handlers/read_resource.rs` | -| 4 | `handler` on `ToolEntry`; `ToolRegistry::dispatch()` | `tool/registry.rs` | -| 5 | `McpHandler`, `McpHandlerKind`, `build_mcp_registry()` | `mcp/handlers/mod.rs`, `mcp/mod.rs` | - -Neither `engine.rs` nor `accumulator.rs` is touched. Fully testable against a mock MCP server. -**PR 2: Execution loop with MCP** (phases 6-8, depends on PR 1) +Tool execution failures become failed tool call output and are returned to the model for the next round; they do not +automatically fail the whole Responses request. -| Phase | Work | Files | -|-------|------|-------| -| 6 | `ToolDispatchFn`, `in_flight_tasks`, `from_stream_with_dispatch()` | `executor/accumulator.rs` | -| 7 | `RequestContext::append_tool_results()` | `executor/request.rs` | -| 8 | `execute_with_mcp()` | `executor/engine.rs` | +## Delivery -PR 2 imports `McpClientPool`, `build_mcp_registry()`, and `ToolRegistry::dispatch()` from PR 1 and cannot merge first. +This design is being shipped across three PRs: -**Future:** once both PRs are stable, `execute()` and `execute_with_mcp()` are unified into `execute_loop()`. +1. Revisit MCP support by removing gateway-owned MCP resource handling and fixing tool discovery, normalization, and + registry routing for native MCP tools. MCP resources remain the responsibility of clients such as Codex and Claude + Code. +2. PR #139 completes the OpenAI-compatible public `mcp_call` output item and streaming event lifecycle. +3. A follow-up PR will expose MCP discovery through the public `mcp_list_tools` output item and streaming events.