fetchAddressTransactionHistory
Retrieve transaction history for wallet addresses across multiple blockchain networks to analyze activity and track payments.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | A list of wallet address and network pairs | |
| before | No | The cursor that points to the previous set of results. Use this to paginate through the results. | |
| after | No | The cursor that points to the next set of results. Use this to paginate through the results. | |
| limit | No | The number of results to return. Default is 25. Max is 100 |
Implementation Reference
- index.ts:183-210 (handler)The core handler function for the 'fetchAddressTransactionHistory' tool. It calls the alchemyApi helper, formats the transaction data (dates and ETH values), and returns a formatted JSON response or error message.}, async (params) => { try { let result = await alchemyApi.getTransactionHistoryByMultichainAddress(params); // List the transaction hash when returning the result to the user const formattedTxns = result.transactions.map((transaction: any) => ({ ...transaction, date: convertTimestampToDate(transaction.blockTimestamp), ethValue: convertWeiToEth(transaction.value) })); result.transactions = formattedTxns; return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; } catch (error) { if (error instanceof Error) { console.error('Error in getTransactionHistoryByMultichainAddress:', error); return { content: [{ type: "text", text: `Error: ${error.message}` }], isError: true }; } return { content: [{ type: "text", text: 'Unknown error occurred' }], isError: true }; } });
- index.ts:176-182 (schema)Zod schema defining the input parameters for the tool: multi-chain addresses and pagination options (before, after, limit).addresses: z.array(z.object({ address: z.string().describe('The wallet address to query. e.g. "0x1234567890123456789012345678901234567890"'), networks: z.array(z.string()).describe('The blockchain networks to query. e.g. ["eth-mainnet", "base-mainnet"]') })).describe('A list of wallet address and network pairs'), before: z.string().optional().describe('The cursor that points to the previous set of results. Use this to paginate through the results.'), after: z.string().optional().describe('The cursor that points to the next set of results. Use this to paginate through the results.'), limit: z.number().default(25).optional().describe('The number of results to return. Default is 25. Max is 100')
- index.ts:175-175 (registration)Registers the 'fetchAddressTransactionHistory' tool on the MCP server with the specified schema and handler.server.tool('fetchAddressTransactionHistory', {
- api/alchemyApi.ts:84-102 (helper)Helper function in alchemyApi that wraps the API call to Alchemy's multi-chain transaction history endpoint using the configured axios client.async getTransactionHistoryByMultichainAddress(params: MultiChainTransactionHistoryByAddress) { try { const { addresses, ...otherParams } = params; const client = createMultiChainTransactionHistoryClient(); const response = await client.post('/by-address', { addresses: params.addresses.map((pair: AddressPair) => ({ address: pair.address, networks: pair.networks })), ...otherParams }); return response.data; } catch (error) { console.error('Error fetching transaction history:', error); throw error; } },
- api/alchemyClients.ts:27-34 (helper)Factory function creating the axios HTTP client configured for Alchemy's transaction history API.export const createMultiChainTransactionHistoryClient = () => axios.create({ baseURL: `https://api.g.alchemy.com/data/v1/${API_KEY}/transactions/history`, headers: { 'accept': 'application/json', 'content-type': 'application/json', 'x-alchemy-client-breadcrumb': BREADCRUMB_HEADER }, });