diff --git a/client/src/components/ToolsTab.tsx b/client/src/components/ToolsTab.tsx index 25d4f15..255ab67 100644 --- a/client/src/components/ToolsTab.tsx +++ b/client/src/components/ToolsTab.tsx @@ -5,9 +5,9 @@ import { Label } from "@/components/ui/label"; import { TabsContent } from "@/components/ui/tabs"; import { Textarea } from "@/components/ui/textarea"; import { - CallToolResult, ListToolsResult, Tool, + CallToolResultSchema, } from "@modelcontextprotocol/sdk/types.js"; import { AlertCircle, Send } from "lucide-react"; import { useState } from "react"; @@ -40,7 +40,27 @@ const ToolsTab = ({ if (!toolResult) return null; if ("content" in toolResult) { - const structuredResult = toolResult as CallToolResult; + const parsedResult = CallToolResultSchema.safeParse(toolResult); + if (!parsedResult.success) { + return ( + <> +

Invalid Tool Result:

+
+              {JSON.stringify(toolResult, null, 2)}
+            
+

Errors:

+ {parsedResult.error.errors.map((error, idx) => ( +
+                {JSON.stringify(error, null, 2)}
+              
+ ))} + + ); + } + const structuredResult = parsedResult.data; const isError = structuredResult.isError ?? false; return (