Skip to main content

Agent-TS Tools Reference

The Agent uses OpenAI function calling with 20 tools organized into 5 categories.

Tool Categories

CategoryToolsPurpose
Registration2User registration and status
KYC2Document upload and verification
Wallet6Balance, transfers, statements
Cards6Card management operations
Agent4Agent/merchant operations

Registration Tools

check_user_registration

Check if a phone number is registered as subscriber or agent.
{
  name: "check_user_registration",
  parameters: {
    phoneE164: string  // E.164 format phone number
  }
}
Returns: Registration status, user type, KYC level

register_subscriber

Register a new subscriber account.
{
  name: "register_subscriber",
  parameters: {
    phoneE164: string,   // Phone number
    firstName: string,   // First name
    lastName: string,    // Last name
    pin: string          // 4-digit PIN
  }
}

KYC Tools

upload_kyc_image

Upload and validate a KYC document image.
{
  name: "upload_kyc_image",
  parameters: {
    phoneE164: string,  // User phone
    side: "front" | "back"  // ID side
  }
}
Image data is passed via message context, not as a parameter.

upgrade_kyc

Complete KYC upgrade after both ID sides are validated.
{
  name: "upgrade_kyc",
  parameters: {
    phoneE164: string,
    confirm: boolean  // User confirmation
  }
}

Wallet Tools

check_balance

Check wallet balance. Requires PIN.
{
  name: "check_balance",
  parameters: {
    phoneE164: string,  // User phone
    pin: string         // 4-digit PIN (REQUIRED)
  }
}
Returns: { balance: number, currency: string }

get_transactions

Get transaction history. Requires PIN.
{
  name: "get_transactions",
  parameters: {
    phoneE164: string,
    pin: string,
    limit?: number  // Default: 10
  }
}

initiate_transfer

P2P transfer to another user’s card. Requires PIN.
{
  name: "initiate_transfer",
  parameters: {
    senderPhoneE164: string,     // Sender phone
    recipientCardSerial: string, // Recipient card (e.g., "CARD0005")
    amount: number,              // Amount in SLE
    pin: string                  // Sender's PIN
  }
}

get_account_limits

Get transaction limits based on KYC level.
{
  name: "get_account_limits",
  parameters: {
    phoneE164: string
  }
}
Returns: Single transaction, daily, monthly limits

change_subscriber_pin

Change subscriber’s PIN. Requires old PIN.
{
  name: "change_subscriber_pin",
  parameters: {
    phoneE164: string,
    oldPin: string,  // Current PIN
    newPin: string   // New PIN
  }
}

request_account_statement

Generate and send PDF account statement.
{
  name: "request_account_statement",
  parameters: {
    phoneE164: string,
    startDate: string,  // YYYY-MM-DD
    endDate: string     // YYYY-MM-DD
  }
}

Card Tools

get_user_cards

List all cards linked to user.
{
  name: "get_user_cards",
  parameters: {
    phoneE164: string
  }
}

Link a new card to account.
{
  name: "link_card",
  parameters: {
    phoneE164: string,
    cardSerial: string,
    pin: string
  }
}

create_child_card

Create a child card with spending limits.
{
  name: "create_child_card",
  parameters: {
    phoneE164: string,
    parentCardSerial: string,
    childCardSerial: string,
    childName: string,
    dailyLimit: number,
    parentPin: string,
    childPin: string
  }
}

change_child_card_pin

Change PIN for a child card.
{
  name: "change_child_card_pin",
  parameters: {
    phoneE164: string,
    cardSerial: string,
    parentPin: string,
    newChildPin: string
  }
}

block_card

Block a card.
{
  name: "block_card",
  parameters: {
    phoneE164: string,
    cardSerial: string,
    pin: string,
    reason?: string
  }
}

unblock_card

Unblock a blocked card.
{
  name: "unblock_card",
  parameters: {
    phoneE164: string,
    cardSerial: string,
    pin: string
  }
}

Agent Tools

check_agent_balance

Check agent float balance. Requires PIN.
{
  name: "check_agent_balance",
  parameters: {
    phoneE164: string,
    pin: string
  }
}

agent_cash_in

Perform cash-in for a subscriber. Requires PIN.
{
  name: "agent_cash_in",
  parameters: {
    agentPhoneE164: string,
    subscriberPhoneE164: string,
    amount: number,
    pin: string
  }
}

transfer_to_sub_agent

Transfer float to sub-agent. Requires PIN.
{
  name: "transfer_to_sub_agent",
  parameters: {
    fromAgentPhone: string,
    toAgentPhone: string,
    amount: number,
    pin: string
  }
}

change_agent_pin

Change agent’s PIN. Requires old PIN.
{
  name: "change_agent_pin",
  parameters: {
    phoneE164: string,
    oldPin: string,
    newPin: string
  }
}

Security Notes

PIN Requirements: Most financial operations require the user’s 4-digit PIN. The agent is instructed to always ask for PIN before calling these functions.
Phone Validation: The phoneE164 parameter must match the texting user’s phone number. The agent will not accept requests to operate on different phone numbers.

Next Steps