Skip to main content

Quick Actions

While Base App supports all standard XMTP content types for rich messaging capabilities, this document focuses specifically on Base-developed content types that enhance agent interactions within Base App. These Base-specific content types (Quick Actions and Intent) provide unique functionality that may not be supported by other XMTP clients. For standard XMTP content types like reactions, attachments, and transactions, see the XMTP documentation.

Base App Content Types

There are content types developed by the Base App team for agents in Base App. Other XMTP clients may not support these content types. Quick Actions (coinbase.com/actions:1.0) Purpose: Present interactive buttons in a message Structure:
type ActionsContent = {
  id: string;
  description: string;
  actions: Action[];
  expiresAt?: string;
};

type Action = {
  id: string;
  label: string;
  imageUrl?: string;
  style?: 'primary' | 'secondary' | 'danger';
  expiresAt?: string;
};
Validation Rules:
  • id, description are required
  • actions must be 1–10 items with unique IDs
  • Style must be one of: primary, secondary, danger
Fallback:
[Description]

[1] [Action Label 1]
[2] [Action Label 2]
...
Reply with the number to select
Example: Payment Options
{
  "id": "payment_alice_123",
  "description": "Choose amount to send to Alice",
  "actions": [
    { "id": "send_10", "label": "Send $10", "style": "primary" },
    { "id": "send_20", "label": "Send $20", "style": "primary" },
    { "id": "custom_amount", "label": "Custom Amount", "style": "secondary" }
  ],
  "expiresAt": "2024-12-31T23:59:59Z"
}
Manifest Embed Example

Example of Quick Actions message

Intent (coinbase.com/intent:1.0) Purpose: User expresses choice from Quick Actions Structure:
type IntentContent = {
  id: string;
  actionId: string;
  metadata?: Record<string, string | number | boolean | null>;
};
Validation Rules:
  • id, actionId required
  • Must match corresponding Actions
  • metadata is optional, <10KB
Fallback:
User selected action: [actionId]
Example: Intent Message
{
  id: 'payment_alice_123',
  actionId: 'send_10',
  metadata: {
    timestamp: Date.now(),
    actionLabel: 'Send $10'
  }
}
Analytics dashboard with charts

Example of Intent Message