create_sip
Set up a systematic investment plan (SIP) for mutual funds by specifying fund ISIN, investment amount, frequency, and start date.
Instructions
Create a new SIP with fund ISIN, amount, frequency, and start date
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| isin | Yes | Mutual fund ISIN code, e.g. INF846K01EW2 | |
| amount | Yes | SIP amount in INR | |
| frequency | No | SIP frequency | MONTHLY |
| start_date | Yes | SIP start date (YYYY-MM-DD) |
Implementation Reference
- src/tools/sip.ts:48-87 (handler)The tool `create_sip` is registered here using `server.tool` and its implementation (handler) is defined in the same block.
// ── create_sip ──────────────────────────────────────────── server.tool( "create_sip", "Create a new SIP with fund ISIN, amount, frequency, and start date", { isin: z.string().describe("Mutual fund ISIN code, e.g. INF846K01EW2"), amount: z.number().positive().describe("SIP amount in INR"), frequency: z.enum(["MONTHLY", "WEEKLY", "QUARTERLY"]).default("MONTHLY").describe("SIP frequency"), start_date: z.string().describe("SIP start date (YYYY-MM-DD)"), }, async ({ isin, amount, frequency, start_date }) => { try { if (amount < 100) return mcpError("Minimum SIP amount is ₹100"); const result = await growwClient.createSIP({ isin, amount, frequency, startDate: start_date, }); const text = [ `✅ SIP CREATED`, `${"─".repeat(40)}`, `SIP ID: ${result.sipId}`, `Fund: ${isin}`, `Amount: ${formatCurrencyExact(amount)} / ${frequency.toLowerCase()}`, `Starts: ${start_date}`, `Status: ${result.status}`, ``, `${result.message}`, ``, `⚠️ This is ${process.env.MOCK_MODE === "true" ? "a MOCK SIP (no real investment)" : "a REAL SIP — money will be debited on schedule"}`, ].join("\n"); return mcpText(text); } catch (err) { return mcpError(normalizeError(err)); } } );