search_tokens_llm
Use AI to search Ethereum blockchain tokens by describing what you need in natural language. The tool automatically selects optimal search parameters for finding relevant tokens based on your query.
Instructions
LLM-powered token search using AI to select optimal parameters
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language query for token search |
Implementation Reference
- index.js:446-458 (registration)Registration of the 'search_tokens_llm' tool in the listTools response, including its description and input schema requiring a 'query' string.{ name: 'search_tokens_llm', description: 'LLM-powered token search using AI to select optimal parameters', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Natural language query for token search', }, }, required: ['query'], },
- index.js:744-745 (handler)The handler implementation for the 'search_tokens_llm' tool, which delegates to the makeRequest helper to call the ChainFETCH API endpoint '/api/v1/ethereum/tokens/llm_search'.case 'search_tokens_llm': return await this.makeRequest('/api/v1/ethereum/tokens/llm_search', 'GET', args, null, token);
- index.js:634-682 (helper)Helper function used by all tool handlers to make authenticated HTTP requests to the ChainFETCH API, handling token auth, query params, and error handling.async makeRequest(endpoint, method = 'GET', params = {}, body = null, token = null) { const chainfetchToken = token || process.env.CHAINFETCH_API_TOKEN; if (!chainfetchToken) { throw new McpError( ErrorCode.InvalidRequest, 'CHAINFETCH_API_TOKEN is required' ); } const url = new URL(`${API_BASE_URL}${endpoint}`); // Add query parameters for GET requests if (method === 'GET' && Object.keys(params).length > 0) { Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null) { if (Array.isArray(value)) { value.forEach(v => url.searchParams.append(`${key}[]`, v)); } else { url.searchParams.append(key, value.toString()); } } }); } const fetchOptions = { method, headers: { 'Authorization': `Bearer ${chainfetchToken}`, 'Content-Type': 'application/json', }, }; if (body && method !== 'GET') { fetchOptions.body = JSON.stringify(body); } const response = await fetch(url.toString(), fetchOptions); if (!response.ok) { const errorText = await response.text(); throw new McpError( ErrorCode.InternalError, `API request failed: ${response.status} ${response.statusText} - ${errorText}` ); } return await response.json(); }