@@ -194,8 +194,8 @@ async def register_manual(self, caller: 'UtcpClient', manual_call_template: Call
194194 utcp_tool = Tool (
195195 name = mcp_tool .name ,
196196 description = mcp_tool .description ,
197- input_schema = mcp_tool .inputSchema ,
198- output_schema = mcp_tool .outputSchema ,
197+ inputs = mcp_tool .inputSchema ,
198+ outputs = mcp_tool .outputSchema ,
199199 tool_call_template = manual_call_template
200200 )
201201 all_tools .append (utcp_tool )
@@ -212,12 +212,12 @@ async def register_manual(self, caller: 'UtcpClient', manual_call_template: Call
212212 resource_tool = Tool (
213213 name = f"{ server_name } .resource_{ mcp_resource .name } " ,
214214 description = f"Read resource: { mcp_resource .description or mcp_resource .name } . URI: { mcp_resource .uri } " ,
215- input_schema = {
215+ inputs = {
216216 "type" : "object" ,
217217 "properties" : {},
218218 "required" : []
219219 },
220- output_schema = {
220+ outputs = {
221221 "type" : "object" ,
222222 "properties" : {
223223 "contents" : {
@@ -384,12 +384,15 @@ async def call_tool_streaming(self, caller: 'UtcpClient', tool_name: str, tool_a
384384 def _process_tool_result (self , result , tool_name : str ) -> Any :
385385 self ._log_info (f"Processing tool result for '{ tool_name } ', type: { type (result )} " )
386386
387- # Check for structured output first
388- if hasattr (result , 'structured_output' ):
389- self ._log_info (f"Found structured_output: { result .structured_output } " )
390- return result .structured_output
387+ # Check for structured output first - this is the expected behavior
388+ if hasattr (result , 'structuredContent' ):
389+ self ._log_info (f"Found structuredContent: { result .structuredContent } " )
390+ # If structuredContent has a 'result' key, unwrap it
391+ if isinstance (result .structuredContent , dict ) and 'result' in result .structuredContent :
392+ return result .structuredContent ['result' ]
393+ return result .structuredContent
391394
392- # Process content if available
395+ # Process content if available (fallback)
393396 if hasattr (result , 'content' ):
394397 content = result .content
395398 self ._log_info (f"Content type: { type (content )} " )
@@ -427,6 +430,10 @@ def _process_tool_result(self, result, tool_name: str) -> Any:
427430
428431 return content
429432
433+ # Handle dictionary with 'result' key
434+ if isinstance (result , dict ) and 'result' in result :
435+ return result ['result' ]
436+
430437 # Fallback to result attribute
431438 if hasattr (result , 'result' ):
432439 return result .result
0 commit comments