Some steps need a screen, not a sentence.
A chat window is a rectangle for words. Plenty of real work is not words — it is a file, a date, a total somebody signs off. An MCP App is a tool that brings its own interface and opens it right there in the thread.
- A file has to go upNobody pastes a PDF into a chat message. An upload needs a control.
- A date has to be picked“Next Tuesday” is three different days depending on who is reading.
- A total has to be checkedBefore money moves, somebody wants to see the number and press the button themselves.
- One of 300 rows has to be chosenA list that long is unreadable as text and trivial as a picker.
This is the whole idea.
You ask. The assistant calls one tool. The tool's own screen opens inside the conversation, you check it and press the button, and four systems do their part in order.
You have an app for that. Here it is — check the details and run it.
- 01 Drive created the client folder
- 02 Notion added their page to the CRM
- 03 Gmail sent the welcome email
- 04 Asana started the onboarding checklist
Northwind is set up. Folder, CRM page, welcome email and checklist — all four, in that order.
The tool works in any MCP client. The screen appears wherever the host supports MCP Apps — everywhere else the same tool runs and asks for what it needs in words.
Not our invention — but it used to take a front-end project.
MCP Apps is a published extension to the Model Context Protocol. A tool can declare an HTML resource, and a host that supports it renders that HTML in a sandboxed frame inside the conversation, talking back to the server over the same connection. The standard is open. What was missing was a way to get one without building it.
- Inline generates the screen from the tool you already made
- Fields come from the tool's own arguments
- It runs against your connected accounts, not a copy of your data
- Hosts that do not support apps still get a working plain tool
tool new_client_onboarding
ui ui://inline/new-client-onboarding
renders inside the conversation
sandbox iframe, no page access
talks JSON-RPC, same connection
fallback plain tool call, no screen Support is still arriving.
MCP Apps is new, and not every host renders one yet. A tool built here works either way: where apps are supported you get the screen, and where they are not the assistant calls the same tool and asks for the missing pieces in words. You do not build it twice, and you do not have to wait.