Agent-generated UI should be governed by an explicit control-axis decision: Controlled (prebuilt components), Declarative (catalog assembly via A2UI/JSON-Render/OpenAI), or Open-Ended (MCP apps in sandboxed iframes). Choosing the protocol is an architectural decision because it determines determinism, design system compliance, flexibility, and security risk in advance.
This gives engineers a crisp boundary for where render-time autonomy lives: inside a component registry, a declarative layout schema, or a sandboxed app frame. The wrong choice causes either brittle UI or unpredictable output.
Any system that lets an LLM influence user-facing output needs a control-axis protocol decision, from chat widgets to full dashboards, rather than tuning prompts in the hope of controlling layout.
Controlled protocols offer high determinism and pixel-perfect control but lack flexibility.
Declarative protocols define a catalog of building blocks that the agent assembles, balancing design system compliance with flexibility.
Open-ended protocols give full UI freedom via sandboxed HTML frames but reduce determinism and increase security risks.