Skip to main content
Glama

Fi-Plan

Server Details

Financial simulator for Indian salaries: loans, taxes, SIPs and 50-year FIRE plans.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
ompurwar/fi-plan-mcp
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation4/5

Each tool targets a distinct calculation: asset projection, loan amortization, refinance simulation, and plan patching. The only potential confusion is between loan_amortization and loan_refinance, but descriptions clarify that one models the full schedule while the other is a what-if for rate/tenure changes.

Naming Consistency4/5

Names are mostly consistent with a noun_noun or verb_noun pattern (asset_projection, loan_amortization, loan_refinance, simulate_plan). The mix of noun and verb starts is a minor deviation, but all are snake_case and readable.

Tool Count3/5

Four tools is somewhat thin for a financial planning server that likely needs create/update/delete operations for plans, assets, and loans. However, each tool covers a meaningful calculation domain, so it is not severely under-scoped.

Completeness2/5

The surface is purely analytical: it lacks any CRUD operations to create or modify plans, assets, or loans. simulate_plan patches a copy but never persists changes, and there is no tool to retrieve a plan or manage stored entities, creating significant gaps for an agent that needs to manage financial plans.

Available Tools

4 tools
asset_projectionProject a single asset month-by-monthA
Read-onlyIdempotent
Inspect

Pure calculator for one asset (no plan needed): monthly value, invested, growth, income and TDS over duration months. Pass asset parameters (principal, growth_rate, yield_rate, income_frequency, income_mode, maturity_month, sale_month, sip) — class presets are NOT applied automatically, so pass explicit rates. TDS on FD interest follows the stored rules for the assessment_year. Returns rows plus closing value and totals.

ParametersJSON Schema
NameRequiredDescriptionDefault
sipNoOptional recurring SIP into the asset.
rentNoReal-estate rent settings.
titleNoDisplay name for the asset (defaults to 'Asset').
categoryNoBucket: s = savings, e = expenses, i = investments (default 'i').
durationNoProjection length in months (default 120).
principalYesStarting value/principal in rupees.
sale_monthNoMonth the asset is sold.
yield_rateNoAnnual income/yield rate in percent (interest, dividend, rent).
asset_classNoAsset type; affects default tax treatment (default 'fd').
compoundingNoCompounding mode for growth (default none).
growth_rateYesAnnual capital growth rate in percent.
income_modeNoWhere income goes: credit (cash) or reinvest.
maturity_monthNoMonth the asset matures; value is released then.
purchase_monthNoMonth the asset is acquired (default 1).
assessment_yearNoAssessment year for tax rules, e.g. '2025-26' (default: current).
income_frequencyNoIncome payout frequency: m monthly, q quarterly, h half-yearly, y yearly.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish the safe read-only/idempotent profile, so the bar is lower, and the description still adds real behavioral context: presets are not auto-applied, TDS on FD interest follows stored rules keyed to assessment_year, and the return shape is rows plus closing value and totals. It does not mention performance or limits, but for a pure calculator that is minor.

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

Conciseness5/5

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

Three sentences, front-loaded with what the tool computes and the no-plan scoping, then the caveat, then the return shape. The parenthetical parameter list is dense but each item earns its place by flagging which inputs drive the projection.

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

Completeness4/5

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

For a 16-parameter tool with nested SIP/rent objects and no output schema, the description covers the calculation model, the preset caveat, the tax rule dependency, and the return shape. Remaining gaps (defaults, interaction between maturity/sale months) are largely covered by the 100%-covered schema.

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 coverage is 100% so the baseline is 3, but the description adds genuine semantics by naming the key inputs and warning that asset_class presets do not supply rates automatically — a behavior no per-field schema description conveys. It does not clarify interactions such as maturity_month vs sale_month or income_mode vs income_frequency.

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 ('Pure calculator for one asset'), enumerates the computed outputs (monthly value, invested, growth, income, TDS), and explicitly carves out scope with 'no plan needed', which separates it from simulate_plan. An agent can distinguish it from the loan_* siblings without opening any schema.

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

Usage Guidelines4/5

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

The phrase 'no plan needed' implicitly routes plan-based work to simulate_plan, and 'class presets are NOT applied automatically, so pass explicit rates' is an actionable prerequisite that prevents a common misuse. It stops short of naming the sibling alternatives explicitly or stating when not to use this tool.

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

loan_amortizationCompute a loan amortization scheduleA
Read-onlyIdempotent
Inspect

Pure calculation of EMI and a month-by-month amortization schedule for a loan of amount at annual interest_rate over tenure months. Returns opening/closing balance, interest, principal and running totals per month. Pass optional prepayments to model extra principal payments beyond the EMI (each {start_month, amount, frequency: 'm'|'q'|'y'|null, step_pct?} — null frequency = one-time lump, step_pct = % the amount grows by each recurrence): the EMI stays constant, the loan shortens, and the result becomes { schedule, payoff_month, total_interest_paid, total_prepaid, interest_saved } instead of a plain array. NOTE: here start_month is loan-relative (1 = the loan's first EMI month); on a persisted loan the same fields are plan-absolute months.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesLoan principal in rupees (e.g. 1500000 for ₹15,00,000).
tenureYesLoan tenure in months (e.g. 240 for 20 years).
prepaymentsNoOptional extra principal payments beyond the EMI: the EMI stays constant and the loan shortens.
interest_rateYesAnnual interest rate in percent (e.g. 8.6).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety and idempotency are covered. The description goes further, adding valuable behavioral disclosure: the EMI stays constant, the loan shortens, and the return shape switches to { schedule, payoff_month, total_interest_paid, total_prepaid, interest_saved } when prepayments are supplied. It also warns that start_month is loan-relative here versus plan-absolute on persisted loans, which prevents a real off-by-basis error.

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

Conciseness3/5

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

The purpose and return behavior are front-loaded, which is good, but the prepayment parenthetical crams ambiguity resolution for frequency, start_month, and step_pct into one long sentence. The comment about loan-relative vs plan-absolute months is useful but reads as a footnote bolted onto the end, making the paragraph denser than it needs to be.

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

Completeness4/5

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

There is no output schema, so the description must explain return values, and it does: a plain array normally, or a richer object with payoff_month, total_interest_paid, total_prepaid, and interest_saved when prepayments are given. It also discloses the loan-relative month basis. What is missing is any statement about required inputs or error behavior, but for a pure deterministic calculator with no annotations gap, this is nearly complete.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents every field, including start_month, frequency, and step_pct. The description re-explains the prepayment shape and clarifies that null frequency means a one-time lump and step_pct is a growth percentage per recurrence, which adds meaning beyond the schema but does not add much that the schema lacks. Baseline 3 applies when the schema carries the load.

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 ('Pure calculation of EMI and a month-by-month amortization schedule for a loan') and distinguishes itself from the siblings, which are projections, refinancing, and plan simulation rather than a deterministic EMI calculation. An agent can classify this as a pure calculation vs a stateful planning operation without opening the schema.

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

Usage Guidelines3/5

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

Implies usage via 'Pure calculation' and the contrast with persisted loans, but it never states when to choose this tool over siblings such as loan_refinance or simulate_plan, nor when prepayment modeling should be used instead of the plain schedule. Adequate context with a clear gap in call routing.

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

loan_refinanceAnalyze refinancing a loan at a new rateA
Read-onlyIdempotent
Inspect

Pure what-if: closes the loan at refinance_month (outstanding balance settled) and restarts it at new_rate over new_tenure months. Returns outstanding balance, old vs new EMI, remaining interest vs new total interest, interest_saved, net_savings (after optional foreclosure_charge) and breakeven_months (null when the new EMI is not lower). Read-only — to persist, update the old loan's end_month and add the new loan.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesOutstanding loan principal at refinance_month, in rupees.
tenureYesTotal tenure of the existing loan in months.
new_rateYesAnnual interest rate of the new loan in percent.
new_tenureYesTenure of the new loan in months.
interest_rateYesCurrent annual interest rate in percent.
refinance_monthYesLoan-relative month the refinance happens (outstanding balance is settled).
foreclosure_chargeNoForeclosure/prepayment penalty in rupees (default 0).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint, idempotentHint), and the description reinforces it ('Read-only') while adding genuine behavioral context: the existing loan is closed/settled at refinance_month, foreclosure_charge is optional, and breakeven_months is null when the new EMI is not lower. These are non-obvious semantics not derivable from annotations, though it does not discuss precision or rounding.

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?

Two dense sentences with the simulation model front-loaded and the output list and read-only caveat following; every clause carries information. Slightly packed, but nothing is redundant.

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?

With no output schema, the description compensates by enumerating the returned fields (outstanding balance, old vs new EMI, interest_saved, net_savings, breakeven_months) including the null edge case, plus the persistence path and read-only nature. An agent has everything needed to call and interpret it.

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, and the description adds interpretive meaning on top: refinance_month settles the outstanding balance, and foreclosure_charge is optional in the net_savings computation. It does not clarify how amount relates to the amortization schedule at refinance_month, so it stays just above baseline.

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?

The description opens with a precise verb+resource framing ('Pure what-if: closes the loan at refinance_month ... and restarts it at new_rate') and distinguishes itself from siblings like loan_amortization and simulate_plan by being an analytical refinance simulation with no persistence. An agent can tell exactly what this computes without opening the schema.

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

Usage Guidelines4/5

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

It explicitly states the read-only condition and the alternative path when mutation is wanted ('to persist, update the old loan's end_month and add the new loan'), which is clear when-to-use guidance. It does not name a sibling tool as the alternative, so it falls short of a 5.

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

simulate_planRun a what-if scenario on a planA
Read-onlyIdempotent
Inspect

Applies an ordered list of scenario patches to a DEEP COPY of the plan (never persisted) and returns the resulting snapshot plus applied_patches. Pass plan_id to load the plan server-side (preferred — never paste plan_json); plan_json is accepted for portability. Pass summary=true for the compact view; add milestones=true for long durations to get yearly points + totals instead of every month. Patches support add_income, add_expense, add_cashflow_change, add_loan, update_loan (loan_id plus any of title, principal_amount, interest_rate, start_month, end_month, deposit_to_bank, type, ref_id, prepayments), add_fdp (fdp: { start_month, end_month, s, e, i } with s + e + i = 100 — or the legacy { amount, interest_rate, tenure } fixed-deposit shape) and set_account_balance — nested ({"op":"add_cashflow_change","change":{...}}) and flat ({cashflow_id,value,start_month,...}) forms are both accepted; the op is inferred from the fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchesNoOrdered scenario patches (add_income, add_expense, add_cashflow_change, add_loan, update_loan, add_fdp, set_account_balance).
plan_idNoLoad a saved plan by id (authenticated tier only).
summaryNoReturn the compact summary (monthly totals + balances) instead of the full snapshot.
durationNoProjection length in months (public tier caps this).
plan_jsonNoInline plan object for anonymous use; bounded to 256 KB.
milestonesNoWith summary, return yearly points and totals instead of every month.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare a safe, idempotent, non-destructive read, and the description adds meaningful context beyond them: the plan is a DEEP COPY that is never persisted, plan_id is an authenticated-tier feature, duration is capped on the public tier, and the response shape varies with summary/milestones. These are real behavioral traits, not restatements of the hints.

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?

It is front-loaded with purpose first, then loading strategy, then output-shaping flags, then the patch catalogue. Dense but nearly every clause carries operational information; the patch enumeration is long though justified given the generic patch schema, and could be slightly tightened.

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

Completeness4/5

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

With no output schema and a generic nested patch object, the description does the necessary work of describing the return value (snapshot vs summary vs yearly milestones) and the patch grammar. Gaps remain around partial-failure/validation behavior and patch ordering side effects, but nothing critical to invoking it correctly is missing.

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

Parameters5/5

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

Schema coverage is 100%, yet the description still adds substantial meaning the schema cannot: it enumerates the supported patch operations, documents update_loan's accepted fields, specifies the add_fdp constraint s + e + i = 100 plus the legacy fixed-deposit shape, and explains that nested and flat patch forms are both accepted with the op inferred from fields.

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?

The description states a precise verb+resource+mechanism: it applies an ordered list of scenario patches to a deep copy of a plan and returns the resulting snapshot plus applied_patches. This scope is unambiguous and clearly separable from siblings like loan_amortization or loan_refinance, which compute rather than simulate patched scenarios.

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

Usage Guidelines3/5

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

It gives conditional parameter guidance (plan_id preferred over plan_json; summary=true for compact output; milestones=true for long durations) but never states when to choose this tool over the sibling projection/amortization tools. Usage is implied by the purpose rather than explicitly contrasted with alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Changedasset_projection24 fields changed
      • addedInput schema / properties / assessment_year / description
        Added value: +"Assessment year for tax rules, e.g. '2025-26' (default: current)."
      • addedInput schema / properties / asset_class / description
        Added value: +"Asset type; affects default tax treatment (default 'fd')."
      • addedInput schema / properties / category / description
        Added value: +"Bucket: s = savings, e = expenses, i = investments (default 'i')."
      • addedInput schema / properties / compounding / description
        Added value: +"Compounding mode for growth (default none)."
      • addedInput schema / properties / duration / description
        Added value: +"Projection length in months (default 120)."
      • addedInput schema / properties / growth_rate / description
        Added value: +"Annual capital growth rate in percent."
      • addedInput schema / properties / income_frequency / description
        Added value: +"Income payout frequency: m monthly, q quarterly, h half-yearly, y yearly."
      • addedInput schema / properties / income_mode / description
        Added value: +"Where income goes: credit (cash) or reinvest."
      • addedInput schema / properties / maturity_month / description
        Added value: +"Month the asset matures; value is released then."
      • addedInput schema / properties / principal / description
        Added value: +"Starting value/principal in rupees."
      • addedInput schema / properties / purchase_month / description
        Added value: +"Month the asset is acquired (default 1)."
      • addedInput schema / properties / rent / description
        Added value: +"Real-estate rent settings."
      • addedInput schema / properties / rent / properties / expense_ratio / description
        Added value: +"Share of rent consumed by expenses, percent."
      • addedInput schema / properties / rent / properties / monthly_rent / description
        Added value: +"Monthly rent in rupees."
      • addedInput schema / properties / rent / properties / step_pct / description
        Added value: +"Annual rent escalation percent."
      • addedInput schema / properties / sale_month / description
        Added value: +"Month the asset is sold."
      • addedInput schema / properties / sip / description
        Added value: +"Optional recurring SIP into the asset."
      • addedInput schema / properties / sip / properties / amount / description
        Added value: +"Instalment amount in rupees."
      • addedInput schema / properties / sip / properties / end_month / description
        Added value: +"Last instalment month."
      • addedInput schema / properties / sip / properties / frequency / description
        Added value: +"Instalment frequency."
      • addedInput schema / properties / sip / properties / start_month / description
        Added value: +"First instalment month."
      • addedInput schema / properties / sip / properties / step_pct / description
        Added value: +"Percent each instalment steps up by."
      • addedInput schema / properties / title / description
        Added value: +"Display name for the asset (defaults to 'Asset')."
      • addedInput schema / properties / yield_rate / description
        Added value: +"Annual income/yield rate in percent (interest, dividend, rent)."
    • Changedloan_amortization10 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"Loan principal in rupees (e.g. 1500000 for ₹15,00,000)."
      • addedInput schema / properties / interest_rate / description
        Added value: +"Annual interest rate in percent (e.g. 8.6)."
      • addedInput schema / properties / prepayments / description
        Added value: +"Optional extra principal payments beyond the EMI: the EMI stays constant and the loan shortens."
      • addedInput schema / properties / prepayments / items / properties / amount / description
        Added value: +"Prepayment amount in rupees."
      • addedInput schema / properties / prepayments / items / properties / desc / description
        Added value: +"Optional label for the prepayment."
      • addedInput schema / properties / prepayments / items / properties / frequency / description
        Added value: +"Recurrence: m = monthly, q = quarterly, y = yearly; null = one-time lump."
      • addedInput schema / properties / prepayments / items / properties / start_month / description
        Added value: +"Loan-relative month of this payment (1 = the loan's first EMI month)."
      • addedInput schema / properties / prepayments / items / properties / step_frequency / description
        Added value: +"How often step_pct applies (defaults to frequency)."
      • addedInput schema / properties / prepayments / items / properties / step_pct / description
        Added value: +"Percent the prepayment amount grows by each recurrence (step-up)."
      • addedInput schema / properties / tenure / description
        Added value: +"Loan tenure in months (e.g. 240 for 20 years)."
    • Changedloan_refinance7 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"Outstanding loan principal at refinance_month, in rupees."
      • addedInput schema / properties / foreclosure_charge / description
        Added value: +"Foreclosure/prepayment penalty in rupees (default 0)."
      • addedInput schema / properties / interest_rate / description
        Added value: +"Current annual interest rate in percent."
      • addedInput schema / properties / new_rate / description
        Added value: +"Annual interest rate of the new loan in percent."
      • addedInput schema / properties / new_tenure / description
        Added value: +"Tenure of the new loan in months."
      • addedInput schema / properties / refinance_month / description
        Added value: +"Loan-relative month the refinance happens (outstanding balance is settled)."
      • addedInput schema / properties / tenure / description
        Added value: +"Total tenure of the existing loan in months."
    • Changedsimulate_plan6 fields changed
      • addedInput schema / properties / duration / description
        Added value: +"Projection length in months (public tier caps this)."
      • addedInput schema / properties / milestones / description
        Added value: +"With summary, return yearly points and totals instead of every month."
      • addedInput schema / properties / patches / description
        Added value: +"Ordered scenario patches (add_income, add_expense, add_cashflow_change, add_loan, update_loan, add_fdp, set_account_balance)."
      • addedInput schema / properties / plan_id / description
        Added value: +"Load a saved plan by id (authenticated tier only)."
      • addedInput schema / properties / plan_json / description
        Added value: +"Inline plan object for anonymous use; bounded to 256 KB."
      • addedInput schema / properties / summary / description
        Added value: +"Return the compact summary (monthly totals + balances) instead of the full snapshot."
  2. 4 tool updates
    • First observedasset_projection
    • First observedloan_amortization
    • First observedloan_refinance
    • First observedsimulate_plan

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Local-first MCP server for Indian income tax computation, enabling users to compute taxes, compare regimes, plan advance tax, and parse Form 26AS without sending data to the cloud.
    12
    9
    8
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Tax-aware retirement planning for Canada and the US. CPP/OAS and Social Security timing, RRSP/TFSA/401k/IRA projections, Monte Carlo simulation, withdrawal order optimization, and historical backtesting against 150 years of market data.
    2
    -
  • A
    license
    B
    quality
    A
    maintenance
    39 tax tools for US individual taxpayers — federal/state tax calculations, credits, deductions, retirement strategies, audit risk, and tax planning. All calculations run locally, no data leaves the machine. Supports TY2024 and TY2025 (One Big Beautiful Bill Act).
    44
    537
    12
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A simulation engine for retirement planning, accessible via an MCP server that allows AI agents to create financial plans, manage income, expenses, loans, taxes, and portfolios, and run Monte Carlo simulations.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.