list_incoming_transactions
Retrieve received transaction history with pagination and filtering options for monitoring wallet activity across supported chains.
Instructions
List incoming (received) transaction history with cursor-based pagination. Returns confirmed incoming transfers by default.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of transactions to return (1-100, default 20) | |
| cursor | No | Pagination cursor from previous response | |
| chain | No | Filter by chain (solana or ethereum) | |
| network | No | Filter by network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). | |
| status | No | Filter by status: DETECTED or CONFIRMED (default: CONFIRMED) | |
| token | No | Filter by token address (null for native transfers) | |
| from_address | No | Filter by sender address | |
| since | No | Filter: only transactions detected after this epoch (seconds) | |
| until | No | Filter: only transactions detected before this epoch (seconds) | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
Implementation Reference
- The handler function for list_incoming_transactions which processes the tool arguments and makes the API call to the backend.
async (args) => { const params = new URLSearchParams(); if (args.limit !== undefined) params.set('limit', String(args.limit)); if (args.cursor !== undefined) params.set('cursor', args.cursor); if (args.chain !== undefined) params.set('chain', args.chain); if (args.network !== undefined) params.set('network', args.network); if (args.status !== undefined) params.set('status', args.status); if (args.token !== undefined) params.set('token', args.token); if (args.from_address !== undefined) params.set('from_address', args.from_address); if (args.since !== undefined) params.set('since', String(args.since)); if (args.until !== undefined) params.set('until', String(args.until)); if (args.wallet_id) params.set('wallet_id', args.wallet_id); const qs = params.toString(); const result = await apiClient.get(`/v1/wallet/incoming${qs ? `?${qs}` : ''}`); return toToolResult(result); }, ); - packages/mcp/src/tools/list-incoming-transactions.ts:10-50 (registration)The registration function that registers the 'list_incoming_transactions' tool with the MCP server and defines its input schema.
export function registerListIncomingTransactions( server: McpServer, apiClient: ApiClient, walletContext?: WalletContext, ): void { server.tool( 'list_incoming_transactions', withWalletPrefix( 'List incoming (received) transaction history with cursor-based pagination. Returns confirmed incoming transfers by default.', walletContext?.walletName, ), { limit: z.number().optional().describe('Maximum number of transactions to return (1-100, default 20)'), cursor: z.string().optional().describe('Pagination cursor from previous response'), chain: z.string().optional().describe('Filter by chain (solana or ethereum)'), network: z.string().optional().describe('Filter by network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137").'), status: z.string().optional().describe('Filter by status: DETECTED or CONFIRMED (default: CONFIRMED)'), token: z.string().optional().describe('Filter by token address (null for native transfers)'), from_address: z.string().optional().describe('Filter by sender address'), since: z.number().optional().describe('Filter: only transactions detected after this epoch (seconds)'), until: z.number().optional().describe('Filter: only transactions detected before this epoch (seconds)'), wallet_id: z.string().optional().describe('Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.'), }, async (args) => { const params = new URLSearchParams(); if (args.limit !== undefined) params.set('limit', String(args.limit)); if (args.cursor !== undefined) params.set('cursor', args.cursor); if (args.chain !== undefined) params.set('chain', args.chain); if (args.network !== undefined) params.set('network', args.network); if (args.status !== undefined) params.set('status', args.status); if (args.token !== undefined) params.set('token', args.token); if (args.from_address !== undefined) params.set('from_address', args.from_address); if (args.since !== undefined) params.set('since', String(args.since)); if (args.until !== undefined) params.set('until', String(args.until)); if (args.wallet_id) params.set('wallet_id', args.wallet_id); const qs = params.toString(); const result = await apiClient.get(`/v1/wallet/incoming${qs ? `?${qs}` : ''}`); return toToolResult(result); }, ); }