Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,552Letters: 14Defects: 1,323counted 3 min ago
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:86eb519b4243694930c08efe609f4fc649d4963ee2fcb9e3ce1d6b3d656cf191 | sha256sum