Your AI agent has 20 specialized tools for Radix blockchain operations, organized into 6 categories.

Account & Wallet Operations

get_account_info

Get account details including address, public key, metadata, and basic XRD balance.

Schema: { account_address?: string }

await agent.run("Show my account details");
await agent.run("Get account info for account_tdx_...");

get_balances

List all token balances and NFT collections for an account.

Schema: { account_address?: string }

await agent.run("What's my XRD balance?");
await agent.run("Show all balances for account_tdx_...");

fund_stokenet_wallet

Fund wallet with testnet XRD from faucet (Stokenet only).

Schema: { account_address?: string }

await agent.run("Fund my wallet with testnet XRD");

Token Operations

create_fungible_resource

Create new fungible tokens.

Schema: { input: string } Input: 'name,symbol,initialSupply[,divisibility]' or JSON

await agent.run("Create token GameCoin with symbol GAME and supply 1000000");

create_non_fungible_resource

Create new NFT collections.

Schema: { input: string } Input: 'name,description[,maxSupply,iconUrl]' or JSON

await agent.run("Create NFT collection CryptoArt with description 'Digital art collection'");

mint_fungible_resource

Mint additional supply of existing fungible tokens.

Schema: { resource_address: string, amount: string }

await agent.run("Mint 1000 more tokens of resource_tdx_...");

mint_non_fungible_resource

Mint new NFTs in existing collections.

Schema: { resource_address: string, nft_data: object }

await agent.run("Mint NFT with metadata in collection resource_tdx_...");

transfer_tokens

Transfer fungible tokens or NFTs between accounts.

Schema: { input: string } Input Formats:

  • Fungible: 'toAddress,amount[,resourceAddress]' or JSON
  • NFT: 'toAddress,resourceAddress,nftId' or JSON
await agent.run("Send 100 XRD to account_tdx_...");
await agent.run("Transfer NFT #001 from collection resource_... to account_tdx_...");

Component Interaction

call_component_method

Call methods on Radix components (smart contracts).

Schema: { component_address: string, method_name: string, args?: any[] }

await agent.run("Call get_price method on component_tdx_...");

get_component_state

Get state information from any Radix component.

Schema: { component_address: string }

await agent.run("Get state of component_tdx_...");

Validator Operations

stake_xrd

Stake XRD with validators to earn rewards.

Schema: { validatorAddress: string, amount: string }

await agent.run("Stake 100 XRD with validator_tdx_...");

unstake_xrd

Unstake XRD from validators.

Schema: { validatorAddress: string, amount: string }

await agent.run("Unstake 50 XRD from validator_tdx_...");

claim_xrd

Claim staking rewards from validators.

Schema: { validatorAddress: string }

await agent.run("Claim rewards from validator_tdx_...");

DeFi Operations

create_two_resource_pool

Create a new two-resource liquidity pool using Ociswap Pool V2.

Schema: { input: string } Input: 'resource1,resource2,amount1,amount2[,feeTier,assetRatio1,assetRatio2,hookAddress]' or JSON

// Standard pool with 0.3% fee
await agent.run("Create pool with 1000 XRD and 2000 TOKEN with 0.3% fee");

// Imbalanced pool (80/20)
await agent.run("Create 80/20 weighted pool with 8000 XRD and 2000 TOKEN");

// Hooked pool with custom logic
await agent.run("Create hooked pool with hook component_tdx_... using 1000 XRD and 2000 TOKEN");

create_hooked_pool

Create an advanced pool with custom hook logic.

Schema: { input: string } Input: 'resource1,resource2,amount1,amount2,hookAddress[,feeTier]' or JSON

await agent.run("Create hooked pool with hook component_tdx_... using 5000 XRD and 10000 TOKEN");

add_liquidity

Add liquidity to existing Ociswap pools.

Schema: { input: string } Input: 'poolAddress,amount1,amount2[,minAmount1,minAmount2]' or JSON

// Add liquidity with automatic ratio calculation
await agent.run("Add 1000 XRD and 2000 TOKEN to pool component_tdx_...");

// Add liquidity with slippage protection
await agent.run("Add liquidity to pool component_tdx_... with 1000 XRD and 2000 TOKEN, min 990 XRD and 1980 TOKEN");

remove_liquidity

Remove liquidity from pools by burning LP tokens.

Schema: { input: string } Input: 'poolAddress,lpAmount[,minAmount1,minAmount2]' or JSON

// Remove liquidity
await agent.run("Remove 100 LP tokens from pool component_tdx_...");

// Remove with minimum output protection
await agent.run("Remove 50 LP tokens from pool component_tdx_... expecting min 490 XRD and 980 TOKEN");

swap_tokens

Execute token swaps through Ociswap pools.

Schema: { input: string } Input: 'poolAddress,fromResource,toResource,amountIn[,minAmountOut]' or JSON

// Basic swap
await agent.run("Swap 100 XRD for TOKEN in pool component_tdx_...");

// Swap with slippage protection
await agent.run("Swap 100 XRD for TOKEN in pool component_tdx_... expecting min 195 TOKEN");

flash_loan

Execute flash loan operations (borrow and repay in single transaction).

Schema: { input: string } Input: 'poolAddress,resourceAddress,amount,callbackComponent[,callbackData]' or JSON

// Execute flash loan
await agent.run("Flash loan 10000 XRD from pool component_tdx_... using callback component_tdx_...");

// Flash loan with callback data
await agent.run("Flash loan 5000 TOKEN from pool component_tdx_... with callback component_tdx_... and data 0x1234");

Utility Tools

get_epoch

Return current Radix network epoch information.

Schema: No parameters

await agent.run("What's the current epoch?");

Quick Reference

CategoryTool CountTools
Account & Wallet3get_account_info, get_balances, fund_stokenet_wallet
Token Operations5create_fungible_resource, create_non_fungible_resource, mint_fungible_resource, mint_non_fungible_resource, transfer_tokens
Component Interaction2call_component_method, get_component_state
Validator Operations3stake_xrd, unstake_xrd, claim_xrd
DeFi Operations6create_two_resource_pool, create_hooked_pool, add_liquidity, remove_liquidity, swap_tokens, flash_loan
Utility1get_epoch

Direct Usage

import { createDefaultRadixTools } from "radix-agent-kit";

// Create all tools
const tools = createDefaultRadixTools(gateway, builder, wallet, networkId);

// Find specific tool by name
const balanceTool = tools.find(t => t.name === "get_balances");
const result = await balanceTool.func({ account_address: "account_tdx_..." });

Input Requirements

Address Formats:

  • Accounts: account_tdx_... (testnet) / account_rdx_... (mainnet)
  • Resources: resource_tdx_... (testnet) / resource_rdx_... (mainnet)
  • Components: component_tdx_... (testnet) / component_rdx_... (mainnet)
  • Validators: validator_tdx_... (testnet) / validator_rdx_... (mainnet)

Amount Parameters: String numbers, positive values only

Input Formats: Tools accept comma-separated strings or JSON objects

Error Handling

❌ Invalid account address format
❌ Insufficient XRD balance  
❌ Component not found
🌐 Network timeout - retry

Factory Pattern

All tools use factory functions:

export function createToolName(
  gatewayClient: RadixGatewayClient,
  transactionBuilder: RadixTransactionBuilder,
  wallet: RadixWallet,
  networkId: number
): DynamicStructuredTool