diff --git a/sdk/src/TestAgent.ts b/sdk/src/TestAgent.ts index c8bb46321..7d092e86a 100644 --- a/sdk/src/TestAgent.ts +++ b/sdk/src/TestAgent.ts @@ -89,6 +89,7 @@ function convertToToolSet(tools: Tool[]): ToolSet { const converted = dynamicTool({ description: tool.description, inputSchema: jsonSchema(ensureJsonSchemaObject(tool.inputSchema)), + ...(tool.outputSchema ? { outputSchema: jsonSchema(tool.outputSchema as any) } : {}), execute: async (args, options) => { options?.abortSignal?.throwIfAborted?.(); const result = await tool.execute(args as Record); diff --git a/sdk/src/mcp-client-manager/tool-converters.ts b/sdk/src/mcp-client-manager/tool-converters.ts index 2a4dfff6f..cde10d422 100644 --- a/sdk/src/mcp-client-manager/tool-converters.ts +++ b/sdk/src/mcp-client-manager/tool-converters.ts @@ -215,7 +215,7 @@ export async function convertMCPToolsToVercelTools( const tools: ToolSet = {}; for (const toolDescription of listToolsResult.tools) { - const { name, description, inputSchema } = toolDescription; + const { name, description, inputSchema, outputSchema } = toolDescription; const toolMeta = toolDescription._meta as | Record | undefined; @@ -257,6 +257,7 @@ export async function convertMCPToolsToVercelTools( description, inputSchema: jsonSchema(normalizedInputSchema), execute, + ...(outputSchema ? { outputSchema: jsonSchema(outputSchema as any) } : {}), ...(toModelOutput ? { toModelOutput } : {}), ...(needsApproval != null ? { needsApproval } : {}), });