Skip to main content
Glama

search

Find Web3-related information quickly using this tool. Conduct searches across web, news, images, or videos with a simple query to enhance your crypto and blockchain research.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query
searchTypeNoType of searchweb

Implementation Reference

  • The handler function for the 'search' tool. It logs the search, performs the search using performSearch utility, stores the results in ResearchStorage, and returns a formatted message with the top 5 search results or an error.
    async ({ query, searchType }: { query: string; searchType: string }) => { storage.addLogEntry(`Performing ${searchType} search for: "${query}"`); try { const results = await performSearch(query, searchType as any); storage.addToSection("searchResults", { [searchType]: { [query]: results, }, }); return { content: [ { type: "text", text: `Search results for "${query}" (${searchType}):\n\n${JSON.stringify( results.results ? results.results.slice(0, 5) : [], null, 2 )}`, }, ], }; } catch (error) { storage.addLogEntry(`Error searching for "${query}": ${error}`); return { isError: true, content: [ { type: "text", text: `Error performing search: ${error}`, }, ], }; } }
  • Input schema for the 'search' tool using Zod: query (string), searchType (enum: web|news|images|videos, default 'web').
    { query: z.string().describe("Search query"), searchType: z .enum(["web", "news", "images", "videos"]) .default("web") .describe("Type of search"), },
  • Registration of the 'search' tool on the MCP server within registerResearchTools function, including schema and handler.
    server.tool( "search", { query: z.string().describe("Search query"), searchType: z .enum(["web", "news", "images", "videos"]) .default("web") .describe("Type of search"), }, async ({ query, searchType }: { query: string; searchType: string }) => { storage.addLogEntry(`Performing ${searchType} search for: "${query}"`); try { const results = await performSearch(query, searchType as any); storage.addToSection("searchResults", { [searchType]: { [query]: results, }, }); return { content: [ { type: "text", text: `Search results for "${query}" (${searchType}):\n\n${JSON.stringify( results.results ? results.results.slice(0, 5) : [], null, 2 )}`, }, ], }; } catch (error) { storage.addLogEntry(`Error searching for "${query}": ${error}`); return { isError: true, content: [ { type: "text", text: `Error performing search: ${error}`, }, ], }; } } );
  • Core helper function performSearch that implements the actual searching using duck-duck-scrape (DDG) library for different search types (web, news, images, videos), with rate limiting (sleep) and retry logic on anomalies.
    export async function performSearch( query: string, type: "web" | "news" | "images" | "videos" = "web", retries = 2 ): Promise<any> { try { await sleep(3000); let results; switch (type) { case "news": if (typeof DDG.news !== "function") { results = await DDG.search(`${query} news`, { safeSearch: DDG.SafeSearchType.MODERATE, }); } else { results = await DDG.news(query); } break; case "images": if (typeof DDG.images !== "function") { results = await DDG.search(`${query} images`, { safeSearch: DDG.SafeSearchType.MODERATE, }); } else { results = await DDG.images(query); } break; case "videos": if (typeof DDG.videos !== "function") { results = await DDG.search(`${query} videos`, { safeSearch: DDG.SafeSearchType.MODERATE, }); } else { results = await DDG.videos(query); } break; default: results = await DDG.search(query, { safeSearch: DDG.SafeSearchType.MODERATE, }); } return results; } catch (error) { if (retries > 0 && String(error).includes("anomaly")) { await sleep(10000); return performSearch(query, type, retries - 1); } throw error; } }
  • Top-level registration function that calls registerResearchTools to register all research tools including 'search'.
    export function registerAllTools( server: McpServer, storage: ResearchStorage ): void { registerResearchTools(server, storage); }

Other Tools

Related Tools

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/aaronjmars/web3-research-mcp'

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