A note for new readers: In my free time I work on open standards for AI as an Agentic AI Foundation (AAIF) Ambassador, maintainer, and robot mom, and that’s partly what I’ll write about here. You can find older posts and my bio on my personal website.
Generative AI platforms have steadily been announcing more customization and features that lean on providing human-friendly visuals and interfaces:
ChatGPT’s Intelligent UI, expanding capabilities for Plugins, and early support for Apps
Claude’s support for Apps as interactive tools, automatic rendering of interactive visuals, and its new Motion feature
Open source and pluggable versions of similar features supported by frameworks like CopilotKit
…along with many other examples I’m missing here from other platforms and frameworks.
It’s an encouraging trend to see among all the jargon and branding of things like Generative UI, Agentic Commerce, and the protocol alphabet soup that surrounds building AI applications. To me that trend is: remembering that humans are still THE end users, while designing for both human users AND machines. In some ways the industry has been over-correcting for the latter. I can understand why, since machines were already deciding most of what we see on the internet before LLMs started doing our browsing for us.
Beyond that, explicitly choosing what to show a user in a UI vs what to show a model is better for privacy, security, and token efficiency than sending everything through the model and letting it figure out what to surface. Data that doesn’t need to be referenced in context shouldn’t get dumped into context (i.e. the text that gets sent to the LLM API on every turn). And on the model output side of things, constantly reading walls of text is not most people’s idea of a good time.
It’s tempting to dismiss this stuff as gimmicky. But besides making things nice for human users to look at and interact with, and allowing for better context window hygiene, there are other benefits that come along with these approaches:
People, brands, and businesses get a new way to stand out that doesn’t just involve paying platforms for advertising and boosting their content or products in search results. The machine might still be the one to choose what to invoke or render, but what gets displayed is up to the person who designs and builds the custom interface. For example: An independent fashion designer with their own app can show a new collection the way they’d show it in their own shop: their photography, their typography, their lookbook layout, inside the conversation. Without one, the collection is a model-written paragraph that looks the same as everyone else’s.
User data can also stay inside the bounds of whoever hosts the application until they really need or want to use it for personalizing an experience.
This is also an unsolved problem at the protocol level, which is part of why I care about it. An MCP tool result can carry the same data as text for the model and as structured data for code or a UI, and the specification doesn’t say which audience each one is for. Content blocks can carry an optional audience annotation, but few clients act on it, and structuredContent has no equivalent. MCP Apps treat structured content as UI data and keep it out of model context when the result also includes text content. Other app platforms treat it as data the model sees too. A server author can’t tell from the field alone whether the model will read what they return. Making the result audience explicit is on the current MCP roadmap, and it’s the kind of boring-but-important protocol plumbing that decides whether “show the user, not the model” is predictable behavior or open for interpretation.
These are some of the most urgent problems to address in user facing experiences. Now that personal agents are busting out of their tech nerd audience bubble, they’re highlighting a growing mistrust that platforms actually care about their privacy, or about maintaining the value exchange promised by personalization. This is all coupled with the observation that while frontier models have been getting better at performing tasks, they’ve often been getting worse at communicating with humans, to the point that both OpenAI and Anthropic shipped releases in September specifically to make their models shorter and clearer. When model prose is the only interface, every one of those habits lands on the user. A rendered UI gives people something to look at that the model didn’t have to narrate.
So should any sane person try to keep up with this moving bullet train? Personally, I don’t want anyone to get too settled, and I don’t think they will anytime soon. With all the options and evolving best practices flying around, it’s tempting to just wait it out and see what ‘wins.’ But settling is where things get less creative and participatory, and start to stagnate and degrade from a user’s point of view. Right now is a good time to pay attention to the problems that are still open and be a squeaky wheel about them, even if that just means showing up at a public meeting to ask a question. (There are links for how to do that at the end of this post.)
The good news is that the up front cost of building on these technologies is also lower than it ever has been. Experimentation bandwidth and creativity are the main things stopping anyone from making something innovative that people will use, regardless of the tech being used to build it. I like to make the assumption that having users and solving their problems is still the goal of any successful tech solution. And even the most advanced personal agents still need a human to pass along their needs and desires (and money). So regardless of whether you are UCPing and/or MCPing and/or wrapping things in plugins, I’m really curious to see where and if this all starts to turn back into ‘good user interface design.’
If you’re interested in working on these types of problems at the protocol level, the Core Primitives Working Group has been coalescing around the Improved Primitives area of the MCP roadmap and meets weekly. The contributor communication page covers how to join the Discord and where the discussions live.



