Skip to content

Introduction to XMTP Kit

OnchainKit has a collection of utilities that allows you to build Frames with the XMTP protocol.


To build a Frame with XMTP, you must first add XMTP metadata. This is done using the getFrameMetadata function.

const frameMetadata = getFrameMetadata({
   * Frame metadata like Image, Buttons, Input, etc.
  isOpenFrame: true,
  accepts: { xmtp: 'vNext' },
export const metadata: Metadata = {
   * ...other metadata
  other: {
  • isOpenFrame: A boolean that indicates whether the Frame is open or not.
  • accepts: An object that indicates the versions of the Frame that the Frame supports.

Handling XMTP Frames

When a user interacts with a Frame inside an XMTP client application, you will need to handle the payload slightly differently from an interaction coming from Farcaster. The primary identifier for a user on Farcaster is the fid, while in XMTP it is the verifiedWalletAddress.

In order to get the verifiedWalletAddress you must install @xmtp/frames-validator in your Frame, alongside Onchainkit.

npm install @coinbase/onchainkit @xmtp/frames-validator

To assist you in handling interactions from XMTP, and extracting the verifiedWalletAddress from a POST payload, here is the XMTP Kit which includes: