Skip to main content
Glama
getERCBalance.ts5.46 kB
import { z } from "zod"; import axios, { AxiosResponse } from "axios"; import { baseUri, chainName } from "../../constants"; interface TokenBalanceResponse { cursor: string; ercTokenBalances: (ERC20Balance | ERC721Balance | ERC1155Balance)[]; resultCount: number; } //for erc20 tokens interface ERC20Balance { balance: string; contract: ERC20BalanceContract; raw_balance: string; } interface ERC20BalanceContract { address: string; decimals: number | null; erc_type: string; logoUri: string | null; name: string; symbol: string; } //for erc721 tokens interface ERC721Balance { address: string; ercType: string; metadata: { attributes: string; description: string; externalUrl: string; name: string; symbol: string; }; tokenId: string; tokenUri: string; } //for erc1155 tokens interface ERC1155Balance { address: string; balance: string; ercType: string; metadata: { attributes: string; decimals: number; }; tokenId: string; tokenUri: string; } export default function (server: any) { server.tool( "getERC20Balance", "Get ERC20 tokens balance of a wallet", { chainName: z.literal(chainName), walletAddress: z.string().describe("Wallet address to fetch balance for"), authToken: z .string() .describe("Authorization token for accessing the Somnia API"), }, { title: "Get ERC20 Token Balance", readOnlyHint: true, description: "Fetch the ERC20 token balance for a specific wallet address.", destructiveHint: false, }, async (args:any) => { const { chainName, walletAddress, authToken } = args; try { const response: AxiosResponse<TokenBalanceResponse> = await axios.get( `${baseUri}/${chainName}/v1/address/${walletAddress}/balance/erc20`, { headers: { Authorization: `Bearer ${authToken}`, "Content-Type": "application/json", Accept: "application/json", }, } ); return { content: [ { type: "text", text: `ERC20 Token Balance Data: ${JSON.stringify( response.data )}`, }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error fetching token balance: ${error}`, }, ], }; } } ); server.tool( "getERC721Balance", "Returns a list of ERC-721 token balances", { chainName: z.literal(chainName), walletAddress: z.string().describe("Wallet address to fetch balance for"), authToken: z .string() .describe("Authorization token for accessing the Somnia API"), }, { title: "Get ERC721 Token Balance", readOnlyHint: true, description: "Fetch the ERC721 token balance for a specific wallet address.", destructiveHint: false, }, async (args:any) => { const { chainName, walletAddress, authToken } = args; try { const response: AxiosResponse<TokenBalanceResponse> = await axios.get( `${baseUri}/${chainName}/v1/address/${walletAddress}/balance/erc721`, { headers: { Authorization: `Bearer ${authToken}`, "Content-Type": "application/json", Accept: "application/json", }, } ); return { content: [ { type: "text", text: `ERC721 Token Balance Data: ${JSON.stringify( response.data )}`, }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error fetching token balance: ${error}`, }, ], }; } } ); server.tool( "getERC1155Balance", "Returns a list of ERC-1155 token balances", { chainName: z.literal(chainName), walletAddress: z.string().describe("Wallet address to fetch balance for"), authToken: z .string() .describe("Authorization token for accessing the Somnia API"), }, { title: "Get ERC1155 Token Balance", readOnlyHint: true, description: "Fetch the ERC1155 token balance for a specific wallet address.", destructiveHint: false, }, async (args:any) => { const { chainName, walletAddress, authToken } = args; try { const response: AxiosResponse<TokenBalanceResponse> = await axios.get( `${baseUri}/${chainName}/v1/address/${walletAddress}/balance/erc1155`, { headers: { Authorization: `Bearer ${authToken}`, "Content-Type": "application/json", Accept: "application/json", }, } ); return { content: [ { type: "text", text: `ERC1155 Token Balance Data: ${JSON.stringify( response.data )}`, }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error fetching token balance: ${error}`, }, ], }; } } ); }

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/vastavikadi/somnia-mcp'

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