helius_search_assets
Search and filter Solana blockchain assets using criteria like owner address, creator address, JSON URI, supply mint, and more via MCP Helius. Retrieve precise asset data efficiently.
Instructions
Search for assets using various filters
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| before | No | ||
| burnt | No | ||
| compressed | No | ||
| creatorAddress | No | ||
| cursor | No | ||
| delegate | No | ||
| frozen | No | ||
| grouping | No | ||
| jsonUri | No | ||
| limit | No | ||
| ownerAddress | No | ||
| page | No | ||
| supply | No | ||
| supplyMint | No |
Input Schema (JSON Schema)
{
"anyOf": [
{
"required": [
"ownerAddress"
]
},
{
"required": [
"creatorAddress"
]
},
{
"required": [
"jsonUri"
]
},
{
"required": [
"supplyMint"
]
},
{
"required": [
"delegate"
]
},
{
"required": [
"burnt"
]
},
{
"required": [
"frozen"
]
},
{
"required": [
"compressed"
]
}
],
"properties": {
"after": {
"type": "string"
},
"before": {
"type": "string"
},
"burnt": {
"type": "boolean"
},
"compressed": {
"type": "boolean"
},
"creatorAddress": {
"type": "string"
},
"cursor": {
"type": "string"
},
"delegate": {
"type": "string"
},
"frozen": {
"type": "boolean"
},
"grouping": {
"items": {
"type": "string"
},
"type": "array"
},
"jsonUri": {
"type": "string"
},
"limit": {
"type": "number"
},
"ownerAddress": {
"type": "string"
},
"page": {
"type": "number"
},
"supply": {
"type": "number"
},
"supplyMint": {
"type": "string"
}
},
"type": "object"
}
Implementation Reference
- src/handlers/helius.ts:417-427 (handler)The main handler function executing the helius_search_assets tool logic by calling the Helius RPC searchAssets method.export const searchAssetsHandler = async (input: SearchAssetsInput): Promise<ToolResultSchema> => { try { const assets = await (helius as any as Helius).rpc.searchAssets(input); if (!assets || assets.items.length === 0) { return createErrorResponse(`No assets found for search: ${JSON.stringify(input, null, 2)}`); } return createSuccessResponse(`Search results: ${JSON.stringify(assets, null, 2)}`); } catch (error) { return createErrorResponse(`Error searching assets: ${error instanceof Error ? error.message : String(error)}`); } }
- src/tools.ts:372-409 (schema)Input schema (JSON Schema) for validating inputs to the helius_search_assets tool, exported in the tools array.{ name: 'helius_search_assets', description: 'Search for assets using various filters', inputSchema: { type: 'object', properties: { page: { type: 'number' }, limit: { type: 'number' }, cursor: { type: 'string' }, before: { type: 'string' }, after: { type: 'string' }, creatorAddress: { type: 'string' }, ownerAddress: { type: 'string' }, jsonUri: { type: 'string' }, grouping: { type: 'array', items: { type: 'string' } }, burnt: { type: 'boolean' }, frozen: { type: 'boolean' }, supplyMint: { type: 'string' }, supply: { type: 'number' }, delegate: { type: 'string' }, compressed: { type: 'boolean' } }, // At least one filter parameter should be provided anyOf: [ { required: ['ownerAddress'] }, { required: ['creatorAddress'] }, { required: ['jsonUri'] }, { required: ['supplyMint'] }, { required: ['delegate'] }, { required: ['burnt'] }, { required: ['frozen'] }, { required: ['compressed'] } ] } },
- src/tools.ts:549-592 (registration)Registration of the tool name 'helius_search_assets' mapped to the searchAssetsHandler function in the handlers dictionary.export const handlers: handlerDictionary = { "helius_get_balance": getBalanceHandler, "helius_get_block_height": getBlockHeightHandler, "helius_get_token_accounts_by_owner": getTokenAccountsByOwnerHandler, "helius_get_token_supply": getTokenSupplyHandler, "helius_get_token_largest_accounts": getTokenLargestAccountsHandler, "helius_get_latest_blockhash": getLatestBlockhashHandler, "helius_get_token_account_balance": getTokenAccountBalanceHandler, "helius_get_slot": getSlotHandler, "helius_get_transaction": getTransactionHandler, // New handlers "helius_get_account_info": getAccountInfoHandler, "helius_get_program_accounts": getProgramAccountsHandler, "helius_get_signatures_for_address": getSignaturesForAddressHandler, "helius_get_minimum_balance_for_rent_exemption": getMinimumBalanceForRentExemptionHandler, "helius_get_multiple_accounts": getMultipleAccountsHandler, "helius_get_inflation_reward": getInflationRewardHandler, "helius_get_epoch_info": getEpochInfoHandler, "helius_get_epoch_schedule": getEpochScheduleHandler, "helius_get_leader_schedule": getLeaderScheduleHandler, "helius_get_recent_performance_samples": getRecentPerformanceSamplesHandler, "helius_get_version": getVersionHandler, // DAS Methods "helius_get_asset": helius.getAssetHandler, "helius_get_rwa_asset": helius.getRwaAssetHandler, "helius_get_asset_batch": helius.getAssetBatchHandler, "helius_get_asset_proof": helius.getAssetProofHandler, "helius_get_assets_by_group": helius.getAssetsByGroupHandler, "helius_get_assets_by_owner": helius.getAssetsByOwnerHandler, "helius_get_assets_by_creator": helius.getAssetsByCreatorHandler, "helius_get_assets_by_authority": helius.getAssetsByAuthorityHandler, "helius_search_assets": helius.searchAssetsHandler, "helius_get_signatures_for_asset": helius.getSignaturesForAssetHandler, "helius_get_nft_editions": helius.getNftEditionsHandler, "helius_get_token_accounts": helius.getTokenAccountsHandler, // Transaction and Fee Methods "helius_get_priority_fee_estimate": helius.getPriorityFeeEstimateHandler, "helius_poll_transaction_confirmation": helius.pollTransactionConfirmationHandler, "helius_send_jito_bundle": helius.sendJitoBundleHandler, "helius_get_bundle_statuses": helius.getBundleStatusesHandler, "helius_get_fee_for_message": getFeeForMessageHandler, "helius_execute_jupiter_swap": executeJupiterSwapHandler // "print_environment": printEnvironmentHandler, }
- src/handlers/helius.types.ts:208-224 (schema)TypeScript type definition for SearchAssetsInput used to type the handler input parameter.export type SearchAssetsInput = { page?: number; limit?: number; cursor?: string; before?: string; after?: string; creatorAddress?: string; ownerAddress?: string; jsonUri?: string; grouping?: string[]; burnt?: boolean; frozen?: boolean; supplyMint?: string; supply?: number; delegate?: string; compressed?: boolean; }