@@ -5,9 +5,9 @@ import { Label } from "@/components/ui/label";
5
5
import { TabsContent } from "@/components/ui/tabs" ;
6
6
import { Textarea } from "@/components/ui/textarea" ;
7
7
import {
8
- CallToolResult ,
9
8
ListToolsResult ,
10
9
Tool ,
10
+ CallToolResultSchema ,
11
11
} from "@modelcontextprotocol/sdk/types.js" ;
12
12
import { AlertCircle , Send } from "lucide-react" ;
13
13
import { useState } from "react" ;
@@ -40,7 +40,27 @@ const ToolsTab = ({
40
40
if ( ! toolResult ) return null ;
41
41
42
42
if ( "content" in toolResult ) {
43
- const structuredResult = toolResult as CallToolResult ;
43
+ const parsedResult = CallToolResultSchema . safeParse ( toolResult ) ;
44
+ if ( ! parsedResult . success ) {
45
+ return (
46
+ < >
47
+ < h4 className = "font-semibold mb-2" > Invalid Tool Result:</ h4 >
48
+ < pre className = "bg-gray-50 dark:bg-gray-800 dark:text-gray-100 p-4 rounded text-sm overflow-auto max-h-64" >
49
+ { JSON . stringify ( toolResult , null , 2 ) }
50
+ </ pre >
51
+ < h4 className = "font-semibold mb-2" > Errors:</ h4 >
52
+ { parsedResult . error . errors . map ( ( error , idx ) => (
53
+ < pre
54
+ key = { idx }
55
+ className = "bg-gray-50 dark:bg-gray-800 dark:text-gray-100 p-4 rounded text-sm overflow-auto max-h-64"
56
+ >
57
+ { JSON . stringify ( error , null , 2 ) }
58
+ </ pre >
59
+ ) ) }
60
+ </ >
61
+ ) ;
62
+ }
63
+ const structuredResult = parsedResult . data ;
44
64
const isError = structuredResult . isError ?? false ;
45
65
46
66
return (
0 commit comments