@@ -276,7 +276,8 @@ async def call_tool(
276276 """Call a tool by name with arguments."""
277277 context = self .get_context ()
278278 result = await self ._tool_manager .call_tool (name , arguments , context = context )
279- converted_result = _convert_to_content (result )
279+ schema = self ._tool_manager .get_schema (name )
280+ converted_result = _convert_to_content (result , schema )
280281 return converted_result
281282
282283 async def list_resources (self ) -> list [MCPResource ]:
@@ -879,24 +880,28 @@ async def get_prompt(
879880
880881def _convert_to_content (
881882 result : Any ,
883+ schema : dict [str , Any ] | None
882884) -> Sequence [TextContent | ImageContent | EmbeddedResource ]:
883- """Convert a result to a sequence of content objects."""
884- if result is None :
885- return []
885+ if schema is None :
886+ """Convert a result to a sequence of content objects."""
887+ if result is None :
888+ return []
886889
887- if isinstance (result , TextContent | ImageContent | EmbeddedResource ):
888- return [result ]
890+ if isinstance (result , TextContent | ImageContent | EmbeddedResource ):
891+ return [result ]
889892
890- if isinstance (result , Image ):
891- return [result .to_image_content ()]
893+ if isinstance (result , Image ):
894+ return [result .to_image_content ()]
892895
893- if isinstance (result , list | tuple ):
894- return list (chain .from_iterable (_convert_to_content (item ) for item in result )) # type: ignore[reportUnknownVariableType]
896+ if isinstance (result , list | tuple ):
897+ return list (chain .from_iterable (_convert_to_content (item , schema ) for item in result )) # type: ignore[reportUnknownVariableType]
895898
896- if not isinstance (result , str ):
897- result = pydantic_core .to_json (result , fallback = str , indent = 2 ).decode ()
899+ if not isinstance (result , str ):
900+ result = pydantic_core .to_json (result , fallback = str , indent = 2 ).decode ()
898901
899- return [TextContent (type = "text" , text = result )]
902+ return [TextContent (type = "text" , text = result )]
903+ else :
904+ return result
900905
901906
902907class Context (BaseModel , Generic [ServerSessionT , LifespanContextT ]):
0 commit comments