@@ -11,7 +11,9 @@ import {
1111 McpUiToolMeta ,
1212} from "../app.js" ;
1313import type {
14+ BaseToolCallback ,
1415 McpServer ,
16+ RegisteredTool ,
1517 ResourceMetadata ,
1618 ToolCallback ,
1719 ReadResourceCallback ,
@@ -33,6 +35,7 @@ export interface ToolConfig {
3335 title ?: string ;
3436 description ?: string ;
3537 inputSchema ?: ZodRawShapeCompat | AnySchema ;
38+ outputSchema ?: ZodRawShapeCompat | AnySchema ;
3639 annotations ?: ToolAnnotations ;
3740 _meta ?: Record < string , unknown > ;
3841}
@@ -100,15 +103,17 @@ export interface McpUiAppResourceConfig extends ResourceMetadata {
100103 * ```
101104 */
102105export function registerAppTool <
103- TInputSchema extends ZodRawShapeCompat | AnySchema | undefined = undefined ,
106+ OutputArgs extends ZodRawShapeCompat | AnySchema ,
107+ InputArgs extends undefined | ZodRawShapeCompat | AnySchema = undefined ,
104108> (
105109 server : Pick < McpServer , "registerTool" > ,
106110 name : string ,
107- config : Omit < McpUiAppToolConfig , "inputSchema" > & {
108- inputSchema ?: TInputSchema ;
111+ config : McpUiAppToolConfig & {
112+ inputSchema ?: InputArgs ;
113+ outputSchema ?: OutputArgs ;
109114 } ,
110- handler : ToolCallback < TInputSchema > ,
111- ) : void {
115+ cb : ToolCallback < InputArgs > ,
116+ ) : RegisteredTool {
112117 // Normalize metadata for backward compatibility:
113118 // - If _meta.ui.resourceUri is set, also set the legacy flat key
114119 // - If the legacy flat key is set, also set _meta.ui.resourceUri
@@ -125,7 +130,7 @@ export function registerAppTool<
125130 normalizedMeta = { ...meta , ui : { ...uiMeta , resourceUri : legacyUri } } ;
126131 }
127132
128- server . registerTool ( name , { ...config , _meta : normalizedMeta } , handler ) ;
133+ return server . registerTool ( name , { ...config , _meta : normalizedMeta } , cb ) ;
129134}
130135
131136/**
0 commit comments