send_message
Send encrypted messages to wallet addresses or ENS names through the XMTP decentralized messaging network.
Instructions
Send a message to an address via XMTP
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| recipient | Yes | Wallet address or ENS name to send message to | |
| message | Yes | Message content to send |
Implementation Reference
- src/index.ts:296-337 (handler)The primary handler function for the 'send_message' tool. It checks if the XMTP client is connected, validates the recipient can receive messages, creates a direct message conversation, sends the message, syncs conversations, and returns a success response.private async sendMessage(args: any) { if (!this.state.client) { throw new Error("XMTP client not connected. Use connect_xmtp tool first."); } const { recipient, message } = args; try { // Create recipient identifier for XMTP operations const recipientIdentifier = { identifier: recipient, identifierKind: 0, // IdentifierKind.Ethereum }; // Check if we can message this address (try both original and lowercase) const canMessage = await this.state.client.canMessage([recipientIdentifier]); const canMessageResult = canMessage.get(recipient) || canMessage.get(recipient.toLowerCase()); if (!canMessageResult) { throw new Error(`Address ${recipient} is not on the XMTP network`); } // Create DM conversation with identifier (back to original method) const conversation = await this.state.client.conversations.newDmWithIdentifier(recipientIdentifier); // Send message await conversation.send(message); // Sync to ensure message is propagated await this.state.client.conversations.syncAll(); return { content: [ { type: "text", text: `Message sent to ${recipient}: "${message}"`, }, ], }; } catch (error) { throw new Error(`Failed to send message: ${error}`); } }
- src/index.ts:132-149 (schema)The input schema and metadata for the 'send_message' tool, defining the required 'recipient' and 'message' parameters as strings.{ name: "send_message", description: "Send a message to an address via XMTP", inputSchema: { type: "object", properties: { recipient: { type: "string", description: "Wallet address or ENS name to send message to", }, message: { type: "string", description: "Message content to send", }, }, required: ["recipient", "message"], }, },
- src/index.ts:217-218 (registration)The switch case registration in the CallToolRequestSchema handler that routes 'send_message' tool calls to the sendMessage method.case "send_message": return await this.sendMessage(args);