Skip to main content
Glama

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
NameRequiredDescriptionDefault
token_addressYesToken contract address
customer_addressYesCustomer 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 } }));
    },
  • 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 } }));
      },
    });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aspekt19/unboxed-loyalty-spark'

If you have feedback or need assistance with the MCP directory API, please join our Discord server