_meta.ui:
Use both on MCP App tools. A UI-launching tool can be read-only. An app-only helper can still write data. Visibility does not describe safety.
Annotation Fields
Annotations are hints, not authorization. Your server still needs authentication, permission checks,
input validation, and confirmation flows for sensitive actions.
Read-Only UI Tool
A search or dashboard tool usually renders a View and reads server data. Mark it read-only so hosts can treat it as lower risk.App-Only Write Helper
App-only tools are hidden from the model, but they are still real server tools. If a button in the View writes data, annotate that tool honestly.Destructive Tool
If a model-visible tool can cancel, delete, send, purchase, or overwrite something, setdestructiveHint: true. Hosts may use this to add confirmation or show stronger review UI.
Checklist
- Add annotations to every model-visible tool, especially UI-launching tools.
- Add annotations to app-only tools when they write data or call external systems.
- Do not use
readOnlyHint: trueon a tool that writes state, even if the write is small. - Set
destructiveHint: truefor delete, cancel, overwrite, send, purchase, or irreversible actions. - Set
idempotentHint: trueonly when server-side retries are safe. - Set
openWorldHint: truewhen the tool reaches outside your controlled backend.
Related
Tool and Resource Contract
Check the full server-side contract for MCP App tools and resources.
Tool _meta
Link tools to Views and control model vs app visibility.