You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Change default visibility to ["model", "apps"]
- Add deprecation notice for flat ui/resourceUri format
- Add McpUiToolMeta and McpUiToolVisibility to spec.types.ts
- Improve tools/list and tools/call behavior wording
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
Copy file name to clipboardExpand all lines: specification/draft/apps.mdx
+10-6Lines changed: 10 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -248,9 +248,9 @@ interface McpUiToolMeta {
248
248
/** URI of UI resource for rendering tool results */
249
249
resourceUri?:string;
250
250
/**
251
-
* Who can access this tool. Default: ["model"]
251
+
* Who can access this tool. Default: ["model", "apps"]
252
252
* - "model": Tool visible to and callable by the agent
253
-
* - "apps": Tool callable by ui apps from this server
253
+
* - "apps": Tool callable by apps from this server only
254
254
*/
255
255
visibility?:Array<"model"|"apps">;
256
256
}
@@ -261,10 +261,14 @@ interface Tool {
261
261
inputSchema:object;
262
262
_meta?: {
263
263
ui?:McpUiToolMeta;
264
+
/**@deprecated Use `ui.resourceUri` instead. Will be removed before GA. */
265
+
"ui/resourceUri"?:string;
264
266
};
265
267
}
266
268
```
267
269
270
+
> **Deprecation notice:** The flat `_meta["ui/resourceUri"]` format is deprecated. Use `_meta.ui.resourceUri` instead. The deprecated format will be removed before GA.
271
+
268
272
Example (tool visible to both model and apps):
269
273
270
274
```json
@@ -313,11 +317,11 @@ Example (app-only tool, hidden from model):
313
317
314
318
#### Visibility:
315
319
316
-
-`visibility` defaults to `["model"]` if omitted (standard MCP behavior)
320
+
-`visibility` defaults to `["model", "apps"]` if omitted
317
321
-`"model"`: Tool is visible to and callable by the agent
318
322
-`"apps"`: Tool is callable by apps from the same server connection only
319
-
- Host MUST NOT include tools with `visibility: ["apps"]`in the agent's tool list
320
-
- Host MUST reject `tools/call` requests from apps for tools that don't include `"apps"` in visibility
323
+
-**tools/list behavior:**Host MUST NOT include tools in the agent's tool list when their visibility does not include `"model"` (e.g., `visibility: ["apps"]`)
324
+
-**tools/call behavior:**Host MUST reject `tools/call` requests from apps for tools that don't include `"apps"` in visibility
321
325
- Cross-server tool calls are always blocked for app-only tools
322
326
323
327
#### Benefits:
@@ -1092,7 +1096,7 @@ This proposal synthesizes feedback from the UI CWG and MCP-UI community, host im
1092
1096
1093
1097
- Nested `_meta.ui` structure groups all UI-related metadata cleanly
1094
1098
- Array format (`["model", "apps"]`) allows flexible combinations
1095
-
- Default `["model"]`preserves standard MCP behavior for existing tools
1099
+
- Default `["model", "apps"]`allows both agent and apps to access tools
1096
1100
-`"apps"` scope is per-server, preventing cross-server tool calls
1097
1101
- Cleaner than OpenAI's two-field approach (`widgetAccessible` + `visibility`)
0 commit comments