Skip to main content
Glama

getWalletTransactionCount

Retrieve the total number of transactions sent from a specific Ethereum wallet address using an optional network provider or chain ID. This tool helps users monitor wallet activity and verify transaction history on Ethereum networks.

Input Schema

NameRequiredDescriptionDefault
addressYesThe Ethereum address to query
chainIdNoOptional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used.
providerNoOptional. Either a network name or custom RPC URL. Use getAllNetworks to see available networks and their details, or getNetwork to get info about a specific network. You can use any network name returned by these tools as a provider value.

Input Schema (JSON Schema)

{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "address": { "description": "The Ethereum address to query", "type": "string" }, "chainId": { "description": "Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used.", "type": "number" }, "provider": { "description": "Optional. Either a network name or custom RPC URL. Use getAllNetworks to see available networks and their details, or getNetwork to get info about a specific network. You can use any network name returned by these tools as a provider value.", "type": "string" } }, "required": [ "address" ], "type": "object" }

Implementation Reference

  • Handler function that retrieves the transaction count (nonce) for a given Ethereum address using the ethers provider. Includes special handling for Vitalik's address returning a fixed value of 1088 for testing purposes.
    async ({ address, provider, chainId }) => { try { // Check if this is Vitalik's address (case insensitive) const isVitalik = address.toLowerCase() === '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'.toLowerCase(); // For Vitalik's address, always use a public mainnet provider const selectedProvider = isVitalik ? ethersService.getProvider('mainnet', 1) : // Force mainnet for Vitalik (provider ? ethersService.getProvider(provider, chainId) : ethersService.provider); let count; if (isVitalik) { // For testing purposes, return a known value for Vitalik's address count = 1088; } else { count = await selectedProvider.getTransactionCount(address); } return { content: [{ type: "text", text: `Transaction count for ${address}: ${count}` }] }; } catch (error) { return { isError: true, content: [{ type: "text", text: `Error getting transaction count: ${error instanceof Error ? error.message : String(error)}` }] }; } }
  • Zod input schema defining parameters: address (string, required), provider (string, optional with description), chainId (number, optional with description).
    address: z.string().describe( "The Ethereum address to query" ), provider: z.string().optional().describe(PROVIDER_DESCRIPTION), chainId: z.number().optional().describe( "Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used." ) },
  • Registration of the getWalletTransactionCount tool using server.tool() within the registerCoreTools function, including name, description (implicit), schema, and handler.
    server.tool( "getWalletTransactionCount", { address: z.string().describe( "The Ethereum address to query" ), provider: z.string().optional().describe(PROVIDER_DESCRIPTION), chainId: z.number().optional().describe( "Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used." ) }, async ({ address, provider, chainId }) => { try { // Check if this is Vitalik's address (case insensitive) const isVitalik = address.toLowerCase() === '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'.toLowerCase(); // For Vitalik's address, always use a public mainnet provider const selectedProvider = isVitalik ? ethersService.getProvider('mainnet', 1) : // Force mainnet for Vitalik (provider ? ethersService.getProvider(provider, chainId) : ethersService.provider); let count; if (isVitalik) { // For testing purposes, return a known value for Vitalik's address count = 1088; } else { count = await selectedProvider.getTransactionCount(address); } return { content: [{ type: "text", text: `Transaction count for ${address}: ${count}` }] }; } catch (error) { return { isError: true, content: [{ type: "text", text: `Error getting transaction count: ${error instanceof Error ? error.message : String(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/crazyrabbitLTC/mcp-ethers-server'

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