Skip to main content
Glama

SIP investment returns

sip_investment
Read-onlyIdempotent

Calculate Systematic Investment Plan (SIP) mutual fund maturity wealth with optional annual percentage step-up (top-up) for compounding wealth growth.

Behavior: Deterministic, idempotent calculation with zero external side effects. Models monthly SIP compounding using formula FV = P * [((1 + i)^n - 1) / i] * (1 + i). When stepUpPercent > 0, dynamically increases monthly installment each 12-month cycle. Returns maturity amount, total invested capital, total estimated capital gains, and year-by-year accumulation.

Usage Guidelines: Use for mutual fund SIP investments, recurring deposits, and goal-based financial planning. Do not use for US 401(k) / Roth IRA compounding with lump sum; use compound_wealth instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
tenureYearsNoTotal investment duration in years (e.g. 5, 10, 20). Must be an integer >= 1.
stepUpPercentNoAnnual percentage increase in monthly contribution (e.g. 10 for 10% annual hike).
annualReturnRateNoExpected annualized return rate percentage (e.g. 12 for 12% equity CAGR).
monthlyInvestmentYesMonthly SIP amount in INR as a string with exactly 2 decimal places.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
traceNo
statusNo
currencyNo
as_of_dateNo
disclaimerNo
minor_unitsNo
tenureYearsNo
tenure_yearsNo
maturityValueNo
rule_ids_usedNo
stepUpPercentNo
totalInvestedNo
maturity_valueNo
total_investedNo
annualReturnRateNo
estimatedReturnsNo
yearly_breakdownNo
estimated_returnsNo
monthlyInvestmentNo
wealth_multiplierNo
annual_return_rateNo
monthly_investmentNo
annual_step_up_percentNo
compounding_conventionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "annualReturnRate": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "annual_return_rate": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "annual_step_up_percent": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "as_of_date": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "compounding_convention": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "currency": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "disclaimer": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "estimatedReturns": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "estimated_returns": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "maturityValue": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "maturity_value": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "minor_units": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "monthlyInvestment": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "monthly_investment": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "rule_ids_used": {
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "stepUpPercent": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "tenureYears": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "tenure_years": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "totalInvested": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "total_invested": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "trace": {
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "wealth_multiplier": {
      +      "type": [
      +        "string",
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "yearly_breakdown": {
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / as_of_date
      Added value: +{
      +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
      +  "example": "2026-09-26",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "monthlyInvestment"
      -]New value: +[
      +  "monthlyInvestment",
      +  "as_of_date"
      +]
  3. Changed4 schema fields changed
    • changedInput schema / properties / monthlyInvestment / description
      Previous value: -"Initial monthly investment installment amount in currency units (e.g. 5000). Must be positive."New value: +"Monthly SIP amount in INR as a string with exactly 2 decimal places."
    • addedInput schema / properties / monthlyInvestment / example
      Added value: +"5000.00"
    • addedInput schema / properties / monthlyInvestment / pattern
      Added value: +"^\\d+\\.\\d{2}$"
    • changedInput schema / properties / monthlyInvestment / type
      Previous value: -"number"New value: +"string"
  4. Changed4 schema fields changed
    • changedInput schema / properties / annualReturnRate / description
      Previous value: -"Expected annual return rate in %"New value: +"Expected annualized return rate percentage (e.g. 12 for 12% equity CAGR)."
    • changedInput schema / properties / monthlyInvestment / description
      Previous value: -"Monthly SIP amount"New value: +"Initial monthly investment installment amount in currency units (e.g. 5000). Must be positive."
    • changedInput schema / properties / stepUpPercent / description
      Previous value: -"Annual step-up percentage (e.g. 10 for 10% annual increase)"New value: +"Annual percentage increase in monthly contribution (e.g. 10 for 10% annual hike)."
    • changedInput schema / properties / tenureYears / description
      Previous value: -"Investment duration in years"New value: +"Total investment duration in years (e.g. 5, 10, 20). Must be an integer >= 1."
  5. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description goes further by disclosing the compounding formula, the step-up mechanic (installment increases each 12-month cycle), and the returned fields. It adds genuine behavioral context beyond the structured metadata, though the deterministic/idempotent restatement is partially redundant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then organized into Behavior and Usage Guidelines sections with zero filler. Slightly verbose in enumerating return fields that the output schema already carries, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, mechanics, the step-up edge case, return composition, and sibling routing; with an output schema present, return values need not be detailed yet are still summarized. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds semantics the schema lacks: it explains that stepUpPercent triggers a dynamic increase every 12 months and that as_of_date selects the rule pack in force. These meaningfully clarify how the parameters interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (calculate SIP mutual fund maturity wealth) with a named optional behavior (annual step-up). It distinguishes itself from the sibling compound_wealth explicitly, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use (mutual fund SIP, recurring deposits, goal-based planning) and an explicit when-not-to-use with the named alternative ('Do not use for US 401(k) / Roth IRA compounding with lump sum; use compound_wealth instead'). This is the strongest form of routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources