Skip to main content
MCP Apps SDK Tool annotations are standard MCP metadata on a tool definition. They tell hosts what kind of action the tool performs, which helps hosts choose review UI, risk labels, and tool-calling behavior. Annotations are separate from _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, set destructiveHint: 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: true on a tool that writes state, even if the write is small.
  • Set destructiveHint: true for delete, cancel, overwrite, send, purchase, or irreversible actions.
  • Set idempotentHint: true only when server-side retries are safe.
  • Set openWorldHint: true when the tool reaches outside your controlled backend.

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.