Agent-TS Tools Reference
Tools are OpenAI-callable functions that allow the agent to perform wallet operations. Each tool has a definition (schema) and a handler (implementation).
check_balance
Get the user’s current wallet balance.
{
name: "check_balance",
description: "Get the user's current wallet balance",
parameters: {
type: "object",
properties: {
currency: {
type: "string",
enum: ["SLE", "USD"],
description: "Currency to check (default: SLE)"
}
}
}
}
Example Usage:
- “What is my balance?”
- “Check my USD balance”
- “How much money do I have?“
get_transactions
View recent transaction history.
{
name: "get_transactions",
description: "Get the user's recent transaction history",
parameters: {
type: "object",
properties: {
limit: {
type: "integer",
description: "Number of transactions (default: 10, max: 50)"
},
currency: {
type: "string",
enum: ["SLE", "USD"]
}
}
}
}
Example Usage:
- “Show my recent transactions”
- “What are my last 5 transactions?”
- “Transaction history”
initiate_transfer
Send money to another user or card.
{
name: "initiate_transfer",
description: "Send money to another user or card serial",
parameters: {
type: "object",
properties: {
recipient: {
type: "string",
description: "Phone number or card serial"
},
amount: {
type: "number",
description: "Amount to send"
},
currency: {
type: "string",
enum: ["SLE", "USD"],
default: "SLE"
},
memo: {
type: "string",
description: "Optional transfer note"
}
},
required: ["recipient", "amount"]
}
}
Example Usage:
- “Send 5000 to +23279123456”
- “Transfer 1000 SLE to CARD0001”
- “Pay 500 to 079123456”
get_account_limits
Check transaction and spending limits.
{
name: "get_account_limits",
description: "Get the user's account limits and usage",
parameters: {
type: "object",
properties: {
currency: {
type: "string",
enum: ["SLE", "USD"]
}
}
}
}
Example Usage:
- “What are my limits?”
- “Check my daily limit”
- “How much can I send?”
get_user_cards
List all cards linked to the user’s account.
{
name: "get_user_cards",
description: "Get list of user's linked NFC cards",
parameters: {
type: "object",
properties: {}
}
}
Example Usage:
- “Show my cards”
- “What cards do I have?”
- “List my linked cards”
link_card
Activate and link a new NFC card.
{
name: "link_card",
description: "Link a new NFC card to the user's account",
parameters: {
type: "object",
properties: {
card_serial: {
type: "string",
description: "Card serial number (e.g., CARD0001)"
},
pin: {
type: "string",
description: "4-digit PIN for the card"
}
},
required: ["card_serial", "pin"]
}
}
Example Usage:
- “Link card CARD0001 with PIN 1234”
- “Activate my new card”
- “Add card CARD0002”
block_card
Block/freeze a card.
{
name: "block_card",
description: "Block a card to prevent transactions",
parameters: {
type: "object",
properties: {
card_serial: {
type: "string",
description: "Card serial number to block"
},
reason: {
type: "string",
description: "Reason for blocking"
}
},
required: ["card_serial"]
}
}
Example Usage:
- “Block my card CARD0001”
- “Freeze card CARD0002”
unblock_card
Unblock/reactivate a blocked card.
{
name: "unblock_card",
description: "Unblock a previously blocked card",
parameters: {
type: "object",
properties: {
card_serial: {
type: "string",
description: "Card serial number to unblock"
}
},
required: ["card_serial"]
}
}
Example Usage:
- “Unblock card CARD0001”
- “Reactivate my card”
upload_kyc_image
Upload a single KYC document image.
{
name: "upload_kyc_image",
description: "Upload and validate a KYC document image",
parameters: {
type: "object",
properties: {
side: {
type: "string",
enum: ["front", "back"],
description: "Which side of the ID"
}
},
required: ["side"]
}
}
This tool uses the image from the message context, not a parameter.
Example Usage:
- [User sends image] “This is the front of my ID”
- [User sends image] “Here’s my ID back”
upgrade_kyc
Complete KYC upgrade with both ID sides verified.
{
name: "upgrade_kyc",
description: "Complete KYC upgrade after both sides are uploaded",
parameters: {
type: "object",
properties: {
confirm: {
type: "boolean",
description: "User confirmation to proceed"
}
},
required: ["confirm"]
}
}
Example Usage:
- “Complete my KYC verification”
- “Upgrade my account”
register_subscriber
Register a new subscriber account.
{
name: "register_subscriber",
description: "Register a new OLIVE wallet subscriber",
parameters: {
type: "object",
properties: {
first_name: {
type: "string",
description: "First name"
},
last_name: {
type: "string",
description: "Last name"
},
pin: {
type: "string",
description: "4-digit PIN"
}
},
required: ["first_name", "last_name", "pin"]
}
}
Example Usage:
- “Register me as John Doe with PIN 1234”
- “Create my account”
Tool Context
Every tool handler receives a context object:
interface ToolContext {
userId: string; // Subscriber ID (from phone lookup)
phoneE164: string; // Phone in E.164 format
sessionId: string; // Conversation session ID
mediaData?: string; // Base64 image data (if present)
mediaMimetype?: string; // Image MIME type
}
All tool handlers return a consistent result format:
interface ToolResult {
success: boolean;
data?: any; // Structured data for OpenAI
message?: string; // Human-readable summary
error?: string; // Error message (if failed)
userMessage?: string; // Message to show to user
}
See the Architecture page for step-by-step instructions on adding new tools.
Next Steps