diff --git a/specification/draft/apps.mdx b/specification/draft/apps.mdx index 6c810d63..502d4224 100644 --- a/specification/draft/apps.mdx +++ b/specification/draft/apps.mdx @@ -660,6 +660,18 @@ interface HostCapabilities { /** Host supports resources/list_changed notifications. */ listChanged?: boolean; }; + /** + * Host supports calling tools declared by the app (oncalltool/onlisttools). + * When present, the host MUST: + * 1. Call tools/list on the app after connect and surface results to the LLM. + * 2. Route LLM tool calls matching app-declared tool names back to the app via tools/call. + * 3. If listChanged is true: re-query tools/list when it receives a + * notifications/tools/list_changed notification from the app. + */ + tools?: { + /** Host will re-query tools/list when it receives notifications/tools/list_changed from the app. */ + listChanged?: boolean; + }; /** Host accepts log messages. */ logging?: {}; /** Sandbox configuration applied by the host. */ diff --git a/src/spec.types.ts b/src/spec.types.ts index 9f83fa97..1c275d9b 100644 --- a/src/spec.types.ts +++ b/src/spec.types.ts @@ -508,6 +508,11 @@ export interface McpUiHostCapabilities { /** @description Host supports resources/list_changed notifications. */ listChanged?: boolean; }; + /** @description Host supports calling tools declared by the app (oncalltool/onlisttools). When present, the host will call tools/list on the app after connect, surface the results to the LLM, and route matching tool calls back to the app via tools/call. */ + tools?: { + /** @description Host supports tools/list_changed notifications from the app and will re-query tools/list when received. */ + listChanged?: boolean; + }; /** @description Host accepts log messages. */ logging?: {}; /** @description Sandbox configuration applied by the host. */