# Interface Lab > Practical notes on generative UI, agentic frontends, A2UI/AG-UI, and the frontend architecture of AI products. Written by Roman Leonenko. Content may be read, indexed, and quoted by AI systems provided the author and the canonical article URL are cited. ## Articles - [MCP Apps explained for frontend engineers](https://lab.roman-leonenko.de/posts/mcp-apps-explained-for-frontend-engineers/): How the MCP Apps extension lets tools return interactive UI resources — and how it compares to A2UI and AG-UI for product teams building on LLM responses. - [A2UI explained for frontend engineers](https://lab.roman-leonenko.de/posts/a2ui-explained-for-frontend-engineers/): How Google's declarative agent UI spec lets LLMs propose native component trees across trust boundaries — without executing generated code. - [AG-UI explained for frontend engineers](https://lab.roman-leonenko.de/posts/ag-ui-explained-for-frontend-engineers/): What the Agent–User Interaction Protocol standardizes, how it differs from A2UI and MCP, and when your agentic frontend needs it. - [Streaming protocols: from tokens to UI messages](https://lab.roman-leonenko.de/posts/streaming-protocols-from-tokens-to-ui-messages/): How text streams, SSE data streams, and UIMessage parts carry LLM output to the frontend — and what frontend engineers need from each. - [Output contracts: structured outputs and tool calling](https://lab.roman-leonenko.de/posts/output-contracts-structured-outputs-and-tool-calling/): How JSON Schema, tool use, and typed objects form the first protocol layer between LLM responses and frontend interfaces. - [The protocol landscape for LLM interfaces](https://lab.roman-leonenko.de/posts/the-protocol-landscape-for-llm-interfaces/): A factual map of the open specs and transport layers that turn model output into product UI — from structured outputs and streaming to AG-UI, A2UI, and MCP Apps. - [From prompt box to workflow](https://lab.roman-leonenko.de/posts/from-prompt-box-to-workflow/): How AI products can evolve from single prompts into durable workflows with memory, checkpoints, and state. - [Trust boundaries in AI interfaces](https://lab.roman-leonenko.de/posts/trust-boundaries-in-ai-ui/): A practical way to separate suggestions, generated artifacts, and user-approved actions in AI products. - [Structured outputs need structured interfaces](https://lab.roman-leonenko.de/posts/structured-outputs-need-structured-interfaces/): How schemas, components, and model responses work together to make AI interfaces predictable. - [Chat is a surface, not the product](https://lab.roman-leonenko.de/posts/chat-is-a-surface-not-the-product/): Why AI products should treat chat as an entry point into structured UI, workflows, and decisions. - [Start here: what Interface Lab is about](https://lab.roman-leonenko.de/posts/start-here-interface-lab/): A practical guide to chat UX, generative UI, and AI frontend architecture — what Interface Lab covers, why it matters, and where to start. ## Series - [LLM Interface Protocols](https://lab.roman-leonenko.de/series/llm-interface-protocols/) (6 parts): A factual map of the protocols, specs, and transport layers teams use to turn LLM responses into structured, trusted product interfaces — from output contracts and streaming to AG-UI, A2UI, and MCP Apps. - [AI Interface Foundations](https://lab.roman-leonenko.de/series/ai-interface-foundations/) (4 parts): Four posts that build on each other: chat as a surface, structured outputs and components, trust boundaries, and durable workflows. From working model to working product — much of that work lives in the interface. ## Machine-readable resources - [Content index (JSON)](https://lab.roman-leonenko.de/llm-manifest.json): every article with metadata - [Articles (JSON)](https://lab.roman-leonenko.de/api/articles.json): flat list of all articles - [RSS feed](https://lab.roman-leonenko.de/rss.xml): update stream - [LLM metadata](https://lab.roman-leonenko.de/.well-known/llm.json): endpoints, citation formats, usage terms