From edc8e17c5c30439f70575a2aca479996762f5b84 Mon Sep 17 00:00:00 2001 From: nicholasclark-openai Date: Thu, 19 Mar 2026 10:31:51 -0700 Subject: [PATCH] Merge RMCP tool call _meta entries Co-authored-by: Codex --- codex-rs/rmcp-client/src/rmcp_client.rs | 30 ++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/codex-rs/rmcp-client/src/rmcp_client.rs b/codex-rs/rmcp-client/src/rmcp_client.rs index b898403b25..1896c5c9e3 100644 --- a/codex-rs/rmcp-client/src/rmcp_client.rs +++ b/codex-rs/rmcp-client/src/rmcp_client.rs @@ -20,6 +20,7 @@ use reqwest::header::AUTHORIZATION; use reqwest::header::CONTENT_TYPE; use reqwest::header::HeaderMap; use reqwest::header::WWW_AUTHENTICATE; +use rmcp::model::CallToolRequest; use rmcp::model::CallToolRequestParams; use rmcp::model::CallToolResult; use rmcp::model::ClientNotification; @@ -713,7 +714,7 @@ impl RmcpClient { } None => None, }; - let meta = match meta { + let request_meta = match meta { Some(Value::Object(map)) => Some(rmcp::model::Meta(map)), Some(other) => { return Err(anyhow!( @@ -723,7 +724,7 @@ impl RmcpClient { None => None, }; let rmcp_params = CallToolRequestParams { - meta, + meta: None, name: name.into(), arguments, task: None, @@ -731,7 +732,30 @@ impl RmcpClient { let result = self .run_service_operation("tools/call", timeout, move |service| { let rmcp_params = rmcp_params.clone(); - async move { service.call_tool(rmcp_params).await }.boxed() + let request_meta = request_meta.clone(); + async move { + let result = service + .peer() + .send_request_with_option( + ClientRequest::CallToolRequest(CallToolRequest { + method: Default::default(), + params: rmcp_params, + extensions: Default::default(), + }), + rmcp::service::PeerRequestOptions { + timeout: None, + meta: request_meta, + }, + ) + .await? + .await_response() + .await?; + match result { + ServerResult::CallToolResult(result) => Ok(result), + _ => Err(rmcp::service::ServiceError::UnexpectedResponse), + } + } + .boxed() }) .await?; self.persist_oauth_tokens().await;