Server definition
- Hash
- sha256:86eb519b4243694930c08efe609f4fc649d4963ee2fcb9e3ce1d6b3d656cf191
- What it is
- What a remote MCP server returned when asked what it offers: 4 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"assessment_year": {
"description": "Assessment year for tax rules, e.g. '2025-26' (default: current).",
"type": "string"
},
"asset_class": {
"description": "Asset type; affects default tax treatment (default 'fd').",
"enum": [
"fd",
"bond",
"savings",
"gold",
"ppf",
"equity",
"equity_foreign",
"mf",
"real_estate",
"vda"
],
"type": "string"
},
"category": {
"description": "Bucket: s = savings, e = expenses, i = investments (default 'i').",
"enum": [
"s",
"e",
"i"
],
"type": "string"
},
"compounding": {
"description": "Compounding mode for growth (default none).",
"enum": [
"none",
"simple",
"monthly",
"quarterly",
"yearly"
],
"type": "string"
},
"duration": {
"description": "Projection length in months (default 120).",
"minimum": 1,
"type": "integer"
},
"growth_rate": {
"description": "Annual capital growth rate in percent.",
"minimum": 0,
"type": "number"
},
"income_frequency": {
"description": "Income payout frequency: m monthly, q quarterly, h half-yearly, y yearly.",
"enum": [
"m",
"q",
"h",
"y"
],
"type": "string"
},
"income_mode": {
"description": "Where income goes: credit (cash) or reinvest.",
"enum": [
"credit",
"reinvest"
],
"type": "string"
},
"maturity_month": {
"description": "Month the asset matures; value is released then.",
"minimum": 1,
"type": "integer"
},
"principal": {
"description": "Starting value/principal in rupees.",
"minimum": 0,
"type": "number"
},
"purchase_month": {
"description": "Month the asset is acquired (default 1).",
"minimum": 1,
"type": "integer"
},
"rent": {
"additionalProperties": false,
"description": "Real-estate rent settings.",
"properties": {
"expense_ratio": {
"description": "Share of rent consumed by expenses, percent.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"monthly_rent": {
"description": "Monthly rent in rupees.",
"exclusiveMinimum": 0,
"type": "number"
},
"step_pct": {
"description": "Annual rent escalation percent.",
"minimum": 0,
"type": "number"
}
},
"required": [
"monthly_rent"
],
"type": "object"
},
"sale_month": {
"description": "Month the asset is sold.",
"minimum": 1,
"type": "integer"
},
"sip": {
"additionalProperties": false,
"description": "Optional recurring SIP into the asset.",
"properties": {
"amount": {
"description": "Instalment amount in rupees.",
"exclusiveMinimum": 0,
"type": "number"
},
"end_month": {
"description": "Last instalment month.",
"minimum": 1,
"type": "integer"
},
"frequency": {
"description": "Instalment frequency.",
"enum": [
"m",
"q",
"y"
],
"type": "string"
},
"start_month": {
"description": "First instalment month.",
"minimum": 1,
"type": "integer"
},
"step_pct": {
"description": "Percent each instalment steps up by.",
"minimum": 0,
"type": "number"
}
},
"required": [
"amount",
"frequency",
"start_month"
],
"type": "object"
},
"title": {
"description": "Display name for the asset (defaults to 'Asset').",
"type": "string"
},
"yield_rate": {
"description": "Annual income/yield rate in percent (interest, dividend, rent).",
"minimum": 0,
"type": "number"
}
},
"required": [
"principal",
"growth_rate"
],
"type": "object"
},
"name": "asset_projection",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"amount": {
"description": "Loan principal in rupees (e.g. 1500000 for ₹15,00,000).",
"type": "number"
},
"interest_rate": {
"description": "Annual interest rate in percent (e.g. 8.6).",
"type": "number"
},
"prepayments": {
"description": "Optional extra principal payments beyond the EMI: the EMI stays constant and the loan shortens.",
"items": {
"additionalProperties": false,
"properties": {
"amount": {
"description": "Prepayment amount in rupees.",
"exclusiveMinimum": 0,
"type": "number"
},
"desc": {
"description": "Optional label for the prepayment.",
"type": "string"
},
"frequency": {
"anyOf": [
{
"enum": [
"m",
"q",
"y"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Recurrence: m = monthly, q = quarterly, y = yearly; null = one-time lump."
},
"start_month": {
"description": "Loan-relative month of this payment (1 = the loan's first EMI month).",
"minimum": 1,
"type": "integer"
},
"step_frequency": {
"anyOf": [
{
"enum": [
"m",
"q",
"y"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "How often step_pct applies (defaults to frequency)."
},
"step_pct": {
"description": "Percent the prepayment amount grows by each recurrence (step-up).",
"minimum": 0,
"type": "number"
}
},
"required": [
"start_month",
"amount"
],
"type": "object"
},
"type": "array"
},
"tenure": {
"description": "Loan tenure in months (e.g. 240 for 20 years).",
"type": "number"
}
},
"required": [
"amount",
"interest_rate",
"tenure"
],
"type": "object"
},
"name": "loan_amortization",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"amount": {
"description": "Outstanding loan principal at refinance_month, in rupees.",
"exclusiveMinimum": 0,
"type": "number"
},
"foreclosure_charge": {
"description": "Foreclosure/prepayment penalty in rupees (default 0).",
"minimum": 0,
"type": "number"
},
"interest_rate": {
"description": "Current annual interest rate in percent.",
"minimum": 0,
"type": "number"
},
"new_rate": {
"description": "Annual interest rate of the new loan in percent.",
"minimum": 0,
"type": "number"
},
"new_tenure": {
"description": "Tenure of the new loan in months.",
"minimum": 1,
"type": "integer"
},
"refinance_month": {
"description": "Loan-relative month the refinance happens (outstanding balance is settled).",
"minimum": 1,
"type": "integer"
},
"tenure": {
"description": "Total tenure of the existing loan in months.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"amount",
"interest_rate",
"tenure",
"refinance_month",
"new_rate",
"new_tenure"
],
"type": "object"
},
"name": "loan_refinance",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"duration": {
"description": "Projection length in months (public tier caps this).",
"type": "number"
},
"milestones": {
"description": "With summary, return yearly points and totals instead of every month.",
"type": "boolean"
},
"patches": {
"description": "Ordered scenario patches (add_income, add_expense, add_cashflow_change, add_loan, update_loan, add_fdp, set_account_balance).",
"items": {
"additionalProperties": {},
"type": "object"
},
"type": "array"
},
"plan_id": {
"description": "Load a saved plan by id (authenticated tier only).",
"type": "string"
},
"plan_json": {
"additionalProperties": {},
"description": "Inline plan object for anonymous use; bounded to 256 KB.",
"type": "object"
},
"summary": {
"description": "Return the compact summary (monthly totals + balances) instead of the full snapshot.",
"type": "boolean"
}
},
"type": "object"
},
"name": "simulate_plan",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:86eb519b4243694930c08efe609f4fc649d4963ee2fcb9e3ce1d6b3d656cf191 | sha256sum