{
  "video": {
    "id": "sAOBXCDiDOs",
    "title": "MCP Apps: Primitives, discovery, and the Future of Software - Pietro Zullo, Manufact, Inc",
    "duration": 1734,
    "upload_date": null,
    "channel": "AI Engineer",
    "source": "AI Engineer",
    "event_format": "Online"
  },
  "analysis": {
    "video_id": "sAOBXCDiDOs",
    "title": "MCP Apps: Primitives, discovery, and the Future of Software - Pietro Zullo, Manufact, Inc",
    "one_liner": "MCP servers no longer just return JSON — the MCP Apps extension (official since January 2026) lets a tool call return an interactive UI widget in a sandboxed iframe, and ChatGPT, Claude and Cursor now all run self-serve stores that give those servers one-click install and, on Claude, dynamic discovery from the MCP registry.",
    "summary": "The talk walks through the primitives of MCP Apps — how a tool call can return a sandboxed iframe widget that talks bidirectionally with the host — and then argues that the bigger, less-discussed news is distribution: the ChatGPT, Claude and Cursor stores have moved off design-partner gating to self-serve submission. It demos setState, follow-up messages, streaming partial tool arguments into a live-rendering widget, widget-initiated tool calls, and the dual-output privacy pattern where the UI sees full data and the model sees only what you choose. The closing argument, borrowing Paul Graham's line that 'AI apps are the new browsers', is that if chat clients are the new browsers, MCP apps are the new websites — so ship one rather than a dashboard.",
    "key_points": [
      "Timeline: MCP launched 2024; MCP-UI started end of May 2025 by the speaker's co-founder; ChatGPT shipped the Apps SDK; ChatGPT and Claude quietly opened MCP stores at the end of 2025; in January 2026 MCP-UI became MCP Apps, the official Model Context Protocol extension for returning UI from a server.",
      "Mechanics: UI resources are declared at initialization; when the model calls a tool and fills its arguments, those arguments populate the UI resource, which the client renders as a sandboxed iframe underneath the tool call, with a message channel back to the host.",
      "Primitives demoed: `setState` so the model knows what the UI is currently showing (e.g. which of three articles is selected); send-follow-up-message from a widget button — Claude drops it into the chat input for the user to confirm, OpenAI sends it straight to the model and starts streaming; calling other tools from inside the widget; open-external-link; OS theme sync; and requestDisplayMode for inline, picture-in-picture or fullscreen (fullscreen with the input box overlaid is pitched as ideal for video editing).",
      "Streaming partial tool inputs into the widget updates the UI incrementally as tokens arrive — shown live with the Excalidraw MCP server streaming mermaid syntax into a canvas in Claude ('one of the coolest animations around'), and with a Remotion MCP app rendering a React video inside the widget in real time.",
      "Privacy pattern: an MCP tool returns a list of outputs, so you send structured output to the widget and a separate text output to the model — show the full private record in the card, and tell the model only 'the user is seeing his private information in the widget above'. This makes MCP viable in fields where handing data to the model provider isn't allowed.",
      "Capability detection: client metadata tells your server whether the host supports MCP Apps, so you can return a widget where it renders and a different, fuller text output where it won't — mcp-use exposes primitives for this. Clients that don't support apps simply drop the widget.",
      "Distribution: ChatGPT, Claude and Cursor all now accept self-serve submissions (Claude's form landed 'a couple weeks' ago for team and enterprise accounts), acceptance rates are rising, and plain MCP servers with no UI are eligible too. Submission links your remote server, scans tools for correct annotations and arguments, checks declared authentication works, and requires test cases and test prompts before a partly manual, partly automated accept/reject.",
      "Dynamic discovery is the payoff: Claude is the only client doing it today — when it gets a task with no matching tool, it searches the MCP registry for the right connector — with ChatGPT expected to follow. The speaker frames that as over a billion active users expressing high-intent needs that route to whichever connector the model picks.",
      "The speaker's own SDK, mcp-use, has 8M+ downloads and 10K GitHub stars; widgets are React components dropped in a `resources` folder that auto-register as UI resources and compile to HTML/CSS; `npx create-mcp-app` scaffolds a template."
    ],
    "takeaways": [
      "Submit your MCP server to the ChatGPT, Claude and Cursor stores now — the design-partner gate is gone, submission is self-serve, and a store listing means a one-click install URL instead of shipping customers 'that ugly JSON file' of MCP configuration.",
      "Stop returning walls of JSON from tools: return a widget, and use setState plus follow-up messages so the model stays aware of what the user is looking at and can be driven from it.",
      "Use the two-output split deliberately — rich structured data into the widget, a deliberately redacted text summary to the model — when the data shouldn't reach the model provider.",
      "Detect whether the connected client supports MCP Apps and return a different, self-sufficient output when it doesn't, or information you meant to put in the widget just disappears.",
      "Prepare for dynamic discovery, not just search: on Claude your connector can be chosen by the model for an unnamed task, so tool annotations, arguments and auth declarations are now the surface that wins you traffic."
    ],
    "topics": [
      "mcp",
      "mcp-apps",
      "agent-ui",
      "distribution",
      "discovery",
      "privacy",
      "sdks",
      "app-stores"
    ],
    "tools": [
      "Model Context Protocol (MCP)",
      "MCP Apps",
      "MCP-UI",
      "mcp-use SDK",
      "Manufact",
      "Manufact Cloud",
      "MCP Inspector",
      "ChatGPT Apps SDK",
      "ChatGPT",
      "Codex",
      "Claude",
      "Claude Desktop",
      "Claude Cowork",
      "Claude Code",
      "Cursor",
      "VS Code",
      "Excalidraw MCP",
      "Remotion",
      "React",
      "Granola MCP",
      "Linear MCP",
      "Pulsar MCP",
      "OpenAI",
      "Perplexity",
      "GitHub",
      "npx create-mcp-app",
      "Y Combinator"
    ],
    "quotes": [
      {
        "text": "MCP servers are not only returning JSON. And that allows much richer experiences. And the second thing, maybe even bigger, is that the stores opened.",
        "at": "04:56",
        "url": "https://www.youtube.com/watch?v=sAOBXCDiDOs&t=296s"
      },
      {
        "text": "But just say, the user is seeing his private information in the widget above.",
        "at": "14:57",
        "url": "https://www.youtube.com/watch?v=sAOBXCDiDOs&t=897s"
      },
      {
        "text": "you don't have to share that ugly JSON file anymore with your MCP configuration.",
        "at": "24:54",
        "url": "https://www.youtube.com/watch?v=sAOBXCDiDOs&t=1494s"
      },
      {
        "text": "if AI apps are the new browsers, the ChatGPTs are the new websites. And uh as a website, they can return a UI with MCP apps.",
        "at": "28:15",
        "url": "https://www.youtube.com/watch?v=sAOBXCDiDOs&t=1695s"
      }
    ],
    "words": 5544
  },
  "summary_url": "/#sAOBXCDiDOs",
  "transcript": {
    "html": "/transcripts/sAOBXCDiDOs.html",
    "txt": "/transcripts/sAOBXCDiDOs.txt",
    "vtt": "/transcripts/sAOBXCDiDOs.vtt"
  }
}