We propose that XMTP introduce support for soft buttons—clickable UI elements rendered in the conversation flow. This will make it significantly easier for users to interact with agents, especially when a text input is not always ideal.
Why This Matters
Currently, interactions with agents (like Byte) require users to type specific commands or responses. However, not every interaction needs to be explicitly typed. A better user experience would be to surface pre-defined options as buttons, similar to how the payment request flow currently allows users to click a “Pay” button.
This UI pattern can:
- Improve discoverability of what actions are possible.
- Reduce friction for non-technical users.
- Enable faster and more intuitive agent interactions.
Example Use Case
Imagine a user interacting with a Byte Agent.
Instead of requiring the user to type:
/show menu
The agent could return:
Choose an option:
[📦 Track Order] [💳 Make Payment] [📞 Talk to Support]
These are rendered as clickable buttons. Just like the existing payment UI, these buttons should send a message payload to the agent, as if the user typed the response.
Technical Suggestions
- Soft buttons can be sent via a new message content type (e.g.
xmtp-button-options
). - Clients would render the buttons with labels and values.
- When clicked, they could either:
- Emit a synthetic message from the user with the value of the button, or
- Trigger a callback defined in the agent’s metadata.
Alignment with XMTP’s Vision
This proposal aligns with XMTP’s commitment to rich, privacy-respecting, decentralized messaging—especially as it leans into Agent-based communication.
As Agents become more central to how users interact with on-chain apps and services, soft buttons offer a cleaner, safer, and more accessible interface.
Call for Feedback
We’re excited to hear the community’s thoughts!
- What use cases do you see for buttons in XMTP?