search_funds
Find mutual funds by name, category, or asset management company to support investment decisions on Groww.
Instructions
Search mutual funds by name, category, or AMC
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query — fund name, category, or AMC | |
| category | No | Filter by category, e.g. Large Cap, Flexi Cap | |
| amc | No | Filter by AMC, e.g. Axis, Mirae, SBI |
Implementation Reference
- src/tools/funds.ts:16-45 (registration)Tool registration and handler logic for "search_funds". It uses `growwClient.searchFunds` to fetch data and formats the output for the MCP client.
server.tool( "search_funds", "Search mutual funds by name, category, or AMC", { query: z.string().describe("Search query — fund name, category, or AMC"), category: z.string().optional().describe("Filter by category, e.g. Large Cap, Flexi Cap"), amc: z.string().optional().describe("Filter by AMC, e.g. Axis, Mirae, SBI"), }, async ({ query, category, amc }) => { try { const results = await growwClient.searchFunds(query, category, amc); if (results.length === 0) return mcpText(`🔍 No mutual funds found for "${query}"`); const lines = results.map((f, i) => { const stars = "⭐".repeat(Math.min(f.rating, 5)); return [ `${i + 1}. ${f.name}`, ` AMC: ${f.amc} | Category: ${f.category}`, ` NAV: ${formatCurrencyExact(f.nav)} | 1Y Returns: ${formatPercent(f.returns1y)}`, ` Rating: ${stars} | ISIN: ${f.isin}`, ].join("\n"); }); const text = [`🔍 FUND SEARCH: "${query}" — ${results.length} results`, `${"─".repeat(55)}`, ...lines].join("\n\n"); return mcpText(text); } catch (err) { return mcpError(normalizeError(err)); } } );