Yes, in hosts that support MCP Apps. The nine read tools — search_memory, list_episodes, search_skills, list_skills, get_skill, search_adrs, list_adrs, get_adr, get_entity — each declare a UI resource in their tool definition, pointing at one ui://mem-port/results.html page. The host fetches that page, renders it in a sandboxed iframe, and pushes the tool result into it, so the card you see and the JSON the model reads come from the same description and can't disagree. Lists come back as result cards; get_ tools come back as a detail view.
Results paginate five at a time with a running tally, and the panel reads the host's own style variables and fonts, so its colors and typeface come from the client rather than an approximation of it. That is the difference between a panel that reads as part of the conversation and one that reads as an embedded widget.
Claude Desktop, VS Code Copilot, Cursor and Goose are MCP Apps hosts. Claude Code is not, so results stay as text there. The text block is unchanged and always first, so a host that doesn't render MCP Apps behaves exactly as it did.
It's on by default: turn it off for one client with an mcp-apps: 0 header next to library-id, or for every client at once by starting the daemon with MCP_APPS=0 mem-port serve. An explicit header wins over the environment in both directions, so a single client can opt back in on a daemon that has it off.