AI architecture · MCP

MCP Apps and tool annotations: how to govern what agents show and do

Two MCP features change what enterprise agents look like. MCP Apps let tools return interactive interfaces inside the conversation. Tool annotations describe how risky a tool is. Both are useful, and both need governance the protocol can't provide on its own.

ExplainerSumanta Mukhopadhyay8 min read5 sources
#ai#mcp#agents#security#governance
EXPLAINER · AI ARCHITECTURE · MCP21 Oct 2026 · 04:15 GST

Enterprise agents are moving beyond chat. A tool that queries a database no longer has to return hundreds of rows as text; it can return a table the user can sort and filter. A deployment tool can present a form instead of asking twenty questions. At the same time, organisations are connecting agents to more tools from more servers, and need a way to tell a harmless lookup from a destructive action.

MCP has answers to both: MCP Apps and tool annotations. Here is how they work and how I fit them into an enterprise architecture.

MCP Apps: interfaces inside the conversation

In January 2026 the MCP maintainers announced MCP Apps as the first official MCP extension. A tool declares a UI resource, served under a ui:// scheme, and the host fetches it and renders it in a sandboxed iframe. The UI and host communicate over JSON-RPC via postMessage, so the interface can call server tools and update the model's context as the user interacts1.

A colour picker MCP App rendered inside a chat conversation, with hex, RGB and HSL values and a Select Color button
An example MCP App: a tool returns an interactive colour picker that renders inside the conversation. Source: MCP blog, MCP Apps: Bringing UI Capabilities To MCP Clients · CC BY 4.0

The announcement lists support across several major clients, and builds on earlier work from MCP-UI and OpenAI's Apps SDK1. For enterprise teams, the appeal is one interactive tool that works in several AI clients without client-specific code.

The security model has several layers: sandboxed iframes, templates the host can review before rendering, loggable messages between UI and host, and optional user consent for tool calls the UI initiates1. The maintainers are clear that users should still vet servers before connecting them.

Tool annotations: a risk vocabulary, not a guarantee

Tool annotations let a server describe a tool's behaviour with four hints: whether it is read-only, destructive, idempotent, or reaches an open world of external entities23. The defaults are deliberately cautious: a tool with no annotations is assumed to be able to modify things, possibly destructively, and to reach outside its environment2.

The key word is hint. The specification says annotations aren't guaranteed to describe behaviour faithfully, and clients must treat them as untrusted unless they come from a trusted server23. A malicious server can label a destructive tool read-only.

Annotations canAnnotations can't
Drive confirmation prompts for destructive toolsProve a tool behaves as described
Feed a policy engine as one input among severalReplace enforcement in a gateway or host
Support graduated trust for internal servers you controlMake an untrusted third-party server safe
Help users understand tools before running themDetect risk that comes from combining tools

Risk lives in the session, not the tool

The MCP maintainers' post on annotations makes a point I agree with strongly: risk often comes from combinations. Drawing on Simon Willison's lethal trifecta of private data, untrusted content and external communication5, it notes that users routinely combine tools from several servers, so the risk profile belongs to the session rather than any single server2. Several open proposals aim to add metadata so clients can detect when a session has all three legs available2.

This is the same containment logic as in prompt injection defence for agents. MCP Apps add a wrinkle: a UI that can call tools and update model context is another path by which actions happen, and it needs the same policies as the model.

How I govern them in an enterprise

  1. Approve servers, not just tools. Maintain an allow-list of MCP servers. Annotations from internal, reviewed servers can drive policy; from others they are informational only.
  2. Require annotations on internal servers, reviewed in code review like any other interface contract, and test that tools behave as annotated.
  3. Enforce at a gateway. Route tool calls, including those initiated from MCP App UIs, through a policy layer that checks user rights, tool risk and session state, as in securing MCP servers.
  4. Track session state. Once a session has read private data and seen untrusted content, block or require approval for open-world and destructive tools.
  5. Review UI templates for MCP Apps before approving a server, and log every UI-to-host message.
  6. Design approvals people actually read. Show the exact action and data affected. A confirmation dialog users click through by reflex is not a control.

Treat annotations as labels and the gateway as the lock. Labels help people and policies make decisions; only enforcement outside the model and the server stops a mislabelled tool.

Where this is heading

The annotation vocabulary is deliberately small today, with several proposals open for trust, sensitivity and output-safety hints2. Build your policy engine so new hints can be added as inputs without redesign, and record your choices in an architecture decision record.

How I can help

I design MCP architectures for enterprises, from server approval and gateways to session policies and agent UIs. See my AI architecture work, or analyse your challenge and bring the result to a call.

References
  1. 1
    MCP Apps: bringing UI capabilities to MCP clientsModel Context Protocol blog · 26 Jan 2026
  2. 2
  3. 3
    Tools (specification 2025-11-25)Model Context Protocol
  4. 4
    MCP Apps extension documentationModel Context Protocol
  5. 5
    The lethal trifecta for AI agentsSimon Willison · 16 Jun 2025
FAQ

Common questions

What are MCP Apps?

The first official MCP extension, announced as live in January 2026. Tools can declare a UI resource that the host renders in a sandboxed iframe, so tools can return dashboards, forms and other interactive components inside the conversation.

What are MCP tool annotations?

Optional hints a server attaches to a tool, such as readOnlyHint, destructiveHint, idempotentHint and openWorldHint. The specification says they are hints and clients must treat them as untrusted unless they come from a trusted server.

Can I rely on tool annotations for security?

Not on their own. They are useful inputs to confirmation prompts and policy engines, especially for servers you control, but enforcement should happen in a gateway or host policy that combines them with other signals.

Keep reading

Related

Open to advisory, fractional CTO & select builds

Let's talk about what you're building.

The fastest route is a free 30-minute call. Prefer to write? Send a message and I'll reply personally within two business days.

Start a conversation

How would you like to reach me?

Book a 30-min callFastest. Pick any open slot on my calendar.→ Write in GmailOpens a pre-filled draft in your browser.→ Use my email appOutlook, Apple Mail or your default client.→

I reply personally within two business days. US & UAE time zones.