Support Buttons in XMTP chat

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.


:white_check_mark: 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.


:test_tube: 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.


:wrench: 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.

:handshake: 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.


:loudspeaker: Call for Feedback

We’re excited to hear the community’s thoughts!

  • What use cases do you see for buttons in XMTP?

Supportive of this. We want this functionality on Coinbase Wallet as well. There are lots of use cases for these buttons – they help new users learn what bots can do and easily get started using them. They also simplify the UX, where users can click a button instead of typing out answers.

We expect that buttons like this will help users have a better experience with bots, send more messages, and ultimately retain as messaging users. We expect nearly all bots could utilize these buttons, so its not an isolated use case.

2 Likes

These buttons would be really enhance the transaction experience within group chats.

Currently a user can request, from an agent, a transaction “Hey Bankr buy me $5 of $BNKR”. A transaction message will be crafted for the current user making the request. This isn’t ideal, because we want to be able to craft the transaction data for the person executing the transaction, but transaction messages in their current form are static.

With buttons we could dynamically craft transaction data for the user clicking the button. Now someone in a group can say “Buy me $5 of $BNKR” and we can return a button that says “Buy $5 of $BNKR”. When clicked it would craft transaction data for the current user and send back a transaction message (or maybe a new transaction response type?)

3 Likes

Thank you so much for this suggestion! We totally agree this will make for a universally better experience for one of XMTP’s greatest differentiators.

This XIP is inspired by @MrGrover’s soft buttons proposal. It gives agents the ability to declare and handle actions that clients can render as buttons. When a user clicks a button, a silent intent message is emitted that agents can use to handle responses and clients can use to provide UI feedback.

Please jump in with your thoughts on how this could be better!

3 Likes