transferai
v1.0.0
Published
Enable your AI agents to send money (USDC) to pre-approved recipients
Maintainers
Readme
TransferAI SDK
A TypeScript/JavaScript SDK for integrating USDC transfers into your LLM agents.
Installation
npm install @transferai/sdkQuick Start
import { createTransferAI } from "@transferai/sdk";
// Initialize with your API key
const transferAI = createTransferAI(process.env.TRANSFERAI_API_KEY);
// Get approved recipients
const recipients = await transferAI.getRecipients();
// Send money to a recipient
const result = await transferAI.sendMoneyByName("Alice", "25.00");
console.log("Transaction:", result);API Reference
createTransferAI(apiKey, baseURL?)
Creates a new TransferAI instance.
apiKey(string): Your TransferAI API keybaseURL(string, optional): API base URL (defaults to https://api.transferai.io)
getRecipients(): Promise<Recipient[]>
Retrieves the list of approved recipients.
Returns: Array of recipient objects with id, name, address, and createdAt.
sendMoney(params): Promise<Transaction>
Sends USDC to an approved recipient.
Parameters:
recipientId(string): The recipient's IDamount(string): Amount to send (e.g., "10.50")
Returns: Transaction object with details and status.
sendMoneyByName(recipientName, amount): Promise<Transaction>
Sends USDC to a recipient by name (convenience method).
Parameters:
recipientName(string): The recipient's nameamount(string): Amount to send
Returns: Transaction object with details and status.
getRecipientByName(name): Promise<Recipient | null>
Finds a recipient by name (case-insensitive).
LLM Agent Integration
The SDK includes a tool-manifest.json for easy integration with LLM frameworks:
OpenAI Function Calling
const tools = [
{
type: "function",
function: {
name: "send_money",
description: "Send USDC to an approved recipient",
parameters: {
type: "object",
properties: {
recipient_name: { type: "string" },
amount: { type: "string" },
},
required: ["recipient_name", "amount"],
},
},
},
];
// Handle function calls
if (functionCall.name === "send_money") {
const { recipient_name, amount } = JSON.parse(functionCall.arguments);
const result = await transferAI.sendMoneyByName(recipient_name, amount);
return JSON.stringify(result);
}LangChain Integration
import { DynamicTool } from "@langchain/core/tools";
const sendMoneyTool = new DynamicTool({
name: "send_money",
description: "Send USDC to an approved recipient",
func: async (input) => {
const { recipient_name, amount } = JSON.parse(input);
const result = await transferAI.sendMoneyByName(recipient_name, amount);
return JSON.stringify(result);
},
});Environment Variables
Set these environment variables in your project:
TRANSFERAI_API_KEY=your-api-key-hereError Handling
All methods return promises that may reject with errors:
try {
const result = await transferAI.sendMoneyByName("Alice", "25.00");
console.log("Success:", result);
} catch (error) {
if (error.response?.status === 404) {
console.error("Recipient not found");
} else {
console.error("Transfer failed:", error.message);
}
}Network Support
- Development: Sepolia testnet
- Production: Ethereum mainnet, Base
Security
- All recipients must be pre-approved through the TransferAI dashboard
- API keys provide scoped access to transfer functions only
- Private keys never leave the TransferAI secure infrastructure
Support
For questions and support, visit the TransferAI documentation or contact support.
