get_token_balance
Retrieve loyalty token balance and tier information for a customer wallet to manage on-chain loyalty programs.
Instructions
Get loyalty token balance and tier info for a customer
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| token_address | Yes | Token contract address | |
| customer_address | Yes | Customer wallet |
Implementation Reference
- The tool "get_token_balance" is registered and handled directly within the `loyalty-mcp` function index file. It fetches the customer's token balance and associated tier information from the `customer_tier_status` and `customer_tiers` tables.
mcpServer.tool("get_token_balance", { description: "Get loyalty token balance and tier info for a customer", inputSchema: { type: "object" as const, properties: { token_address: { type: "string", description: "Token contract address" }, customer_address: { type: "string", description: "Customer wallet" } }, required: ["token_address", "customer_address"] }, handler: async ({ token_address, customer_address }: any) => { const err = authGuard(["read"]); if (err) return T(err); const d = db(); const { data: ts } = await d.from("customer_tier_status").select("current_balance,tokens_earned_total,current_tier_id,last_calculated_at").eq("token_address", token_address.toLowerCase()).eq("customer_address", customer_address.toLowerCase()).single(); let tier = null; if (ts?.current_tier_id) { const { data } = await d.from("customer_tiers").select("tier_name,tier_level,badge_color,cashback_multiplier").eq("id", ts.current_tier_id).single(); tier = data; } return T(JSON.stringify({ balance: { current: ts?.current_balance || 0, total_earned: ts?.tokens_earned_total || 0, tier } })); }, });