get_token_balance
Retrieve loyalty token balance and tier information for a customer wallet using token contract addresses on Base L2.
Instructions
Get loyalty token balance and tier info for a customer
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| token_address | Yes | Token contract address | |
| customer_address | Yes | Customer wallet |
Implementation Reference
- The handler function for 'get_token_balance' tool which retrieves the customer's token balance, total earned tokens, and current tier status from the database.
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 } })); }, - supabase/functions/loyalty-mcp/index.ts:176-188 (registration)Registration of the 'get_token_balance' tool including its description, input schema, and handler.
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 } })); }, });