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
@@ -251,9 +251,9 @@ interface McpUiToolMeta {
251
251
/** URI of UI resource for rendering tool results */
252
252
resourceUri?:string;
253
253
/**
254
-
* Who can access this tool. Default: ["model"]
254
+
* Who can access this tool. Default: ["model", "apps"]
255
255
* - "model": Tool visible to and callable by the agent
256
-
* - "apps": Tool callable by ui apps from this server
256
+
* - "apps": Tool callable by apps from this server only
257
257
*/
258
258
visibility?:Array<"model"|"apps">;
259
259
}
@@ -264,10 +264,14 @@ interface Tool {
264
264
inputSchema:object;
265
265
_meta?: {
266
266
ui?:McpUiToolMeta;
267
+
/**@deprecated Use `ui.resourceUri` instead. Will be removed before GA. */
268
+
"ui/resourceUri"?:string;
267
269
};
268
270
}
269
271
```
270
272
273
+
> **Deprecation notice:** The flat `_meta["ui/resourceUri"]` format is deprecated. Use `_meta.ui.resourceUri` instead. The deprecated format will be removed before GA.
274
+
271
275
Example (tool visible to both model and apps):
272
276
273
277
```json
@@ -316,11 +320,11 @@ Example (app-only tool, hidden from model):
316
320
317
321
#### Visibility:
318
322
319
-
-`visibility` defaults to `["model"]` if omitted (standard MCP behavior)
323
+
-`visibility` defaults to `["model", "apps"]` if omitted
320
324
-`"model"`: Tool is visible to and callable by the agent
321
325
-`"apps"`: Tool is callable by apps from the same server connection only
322
-
- Host MUST NOT include tools with `visibility: ["apps"]`in the agent's tool list
323
-
- Host MUST reject `tools/call` requests from apps for tools that don't include `"apps"` in visibility
326
+
-**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"]`)
327
+
-**tools/call behavior:**Host MUST reject `tools/call` requests from apps for tools that don't include `"apps"` in visibility
324
328
- Cross-server tool calls are always blocked for app-only tools
325
329
326
330
#### Benefits:
@@ -1096,7 +1100,7 @@ This proposal synthesizes feedback from the UI CWG and MCP-UI community, host im
1096
1100
1097
1101
- Nested `_meta.ui` structure groups all UI-related metadata cleanly
1098
1102
- Array format (`["model", "apps"]`) allows flexible combinations
1099
-
- Default `["model"]`preserves standard MCP behavior for existing tools
1103
+
- Default `["model", "apps"]`allows both agent and apps to access tools
1100
1104
-`"apps"` scope is per-server, preventing cross-server tool calls
1101
1105
- Cleaner than OpenAI's two-field approach (`widgetAccessible` + `visibility`)
0 commit comments