pub(crate) async fn with_metrics<F, Fut>( tool: McpTool, f: F, ) -> Result<CallToolResult, ErrorData>where F: FnOnce() -> Fut, Fut: Future<Output = Result<CallToolResult, ErrorData>>,