fix: make toolInfo.id optional per spec

The spec (apps.mdx) defines toolInfo.id as optional (id?: RequestId),
but the TypeScript types and generated schemas had it as required.

This allows hosts to pass just the tool definition without needing
a request ID, which is useful when the tool name is the primary
information needed by the widget.
This commit is contained in:
Anton Pidkuiko MacBook 2026-01-08 11:48:34 +00:00
commit 4012136885
No known key found for this signature in database
3 changed files with 7 additions and 5 deletions

View file

@ -248,7 +248,7 @@
"additionalProperties": false
}
},
"required": ["id", "tool"],
"required": ["tool"],
"additionalProperties": false
},
"theme": {
@ -919,7 +919,7 @@
"additionalProperties": false
}
},
"required": ["id", "tool"],
"required": ["tool"],
"additionalProperties": false
},
"theme": {
@ -2127,7 +2127,7 @@
"additionalProperties": false
}
},
"required": ["id", "tool"],
"required": ["tool"],
"additionalProperties": false
},
"theme": {

View file

@ -539,7 +539,9 @@ export const McpUiHostContextSchema = z
toolInfo: z
.object({
/** @description JSON-RPC id of the tools/call request. */
id: RequestIdSchema.describe("JSON-RPC id of the tools/call request."),
id: RequestIdSchema.optional().describe(
"JSON-RPC id of the tools/call request.",
),
/** @description Tool definition including name, inputSchema, etc. */
tool: ToolSchema.describe(
"Tool definition including name, inputSchema, etc.",

View file

@ -313,7 +313,7 @@ export interface McpUiHostContext {
/** @description Metadata of the tool call that instantiated this App. */
toolInfo?: {
/** @description JSON-RPC id of the tools/call request. */
id: RequestId;
id?: RequestId;
/** @description Tool definition including name, inputSchema, etc. */
tool: Tool;
};