Skip to main content
Glama
Jambozx

OnlineCyberTools MCP (280+ filterable tools)

by Jambozx

math_loan_calculator

Read-onlyIdempotent

Calculate fixed-rate loan amortization: monthly payment, total interest, total paid, payoff months, and schedule. Supports extra principal payments and zero-rate loans.

Instructions

Loan Amortization Calculator. Calculate a fixed-rate loan amortization: monthly payment, total interest, total paid, payoff month count, and (optionally) the full month-by-month schedule. Set operation to compute for the summary plus per-year breakdown, or schedule to also get every monthly row. Handles extra monthly principal payments (shortens the term) and zero-rate loans (payment equals principal divided by months). Use math_compound_interest_calculator instead to grow a savings balance forward with contributions; use this tool when you owe a principal and want the payment and interest cost. Runs locally on the numbers you provide: read-only, non-destructive, contacts no external service, and is rate-limited (60 requests/minute for anonymous callers). Returns monthlyPayment, totalInterest, totalPaid, payoffMonths, and the schedule or yearly summary.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
operationNoOutput mode: compute returns the summary plus a per-year breakdown; schedule also returns every monthly row. Defaults to compute.
principalYesLoan amount borrowed, in currency units. Must be greater than 0 and at most 1000000000000.
annualRatePercentYesAnnual nominal interest rate as a percent (for example 6.5 means 6.5 percent per year). Range 0 to 100; 0 gives a zero-rate loan.
termYearsYesLoan term in years; multiplied by 12 to derive the month count. Must be greater than 0 and at most 100.
extraMonthlyPaymentNoOptional extra principal paid each month to shorten the term. At least 0 and not greater than principal. Defaults to 0.
startDateIsoNoOptional first-payment date as an ISO date string (for example 2026-06-01) used to label schedule rows. Defaults to today (UTC).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
successNoWhether the calculation succeeded.
operationNoThe operation performed (compute or schedule).
resultNoThe computed loan figures.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed21 schema fields changedv0.5.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / annualRatePercent / description
      Added value: +"Annual nominal interest rate as a percent (for example 6.5 means 6.5 percent per year). Range 0 to 100; 0 gives a zero-rate loan."
    • addedInput schema / properties / annualRatePercent / maximum
      Added value: +100
    • addedInput schema / properties / annualRatePercent / minimum
      Added value: +0
    • addedInput schema / properties / extraMonthlyPayment / default
      Added value: +0
    • addedInput schema / properties / extraMonthlyPayment / description
      Added value: +"Optional extra principal paid each month to shorten the term. At least 0 and not greater than principal. Defaults to 0."
    • addedInput schema / properties / extraMonthlyPayment / minimum
      Added value: +0
    • changedInput schema / properties / extraMonthlyPayment / type
      Previous value: -"integer"New value: +"number"
    • addedInput schema / properties / operation / description
      Added value: +"Output mode: compute returns the summary plus a per-year breakdown; schedule also returns every monthly row. Defaults to compute."
    • addedInput schema / properties / operation / enum
      Added value: +[
      +  "compute",
      +  "schedule"
      +]
    • addedInput schema / properties / principal / description
      Added value: +"Loan amount borrowed, in currency units. Must be greater than 0 and at most 1000000000000."
    • addedInput schema / properties / principal / maximum
      Added value: +1000000000000
    • addedInput schema / properties / principal / minimum
      Added value: +0
    • changedInput schema / properties / principal / type
      Previous value: -"integer"New value: +"number"
    • addedInput schema / properties / startDateIso
      Added value: +{
      +  "description": "Optional first-payment date as an ISO date string (for example 2026-06-01) used to label schedule rows. Defaults to today (UTC).",
      +  "type": "string"
      +}
    • addedInput schema / properties / termYears / description
      Added value: +"Loan term in years; multiplied by 12 to derive the month count. Must be greater than 0 and at most 100."
    • addedInput schema / properties / termYears / maximum
      Added value: +100
    • addedInput schema / properties / termYears / minimum
      Added value: +0
    • changedInput schema / properties / termYears / type
      Previous value: -"integer"New value: +"number"
    • changedInput schema / required
      Previous value: -[
      -  "operation",
      -  "principal",
      -  "annualRatePercent",
      -  "termYears",
      -  "extraMonthlyPayment"
      -]New value: +[
      +  "principal",
      +  "annualRatePercent",
      +  "termYears"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "operation": {
      +      "description": "The operation performed (compute or schedule).",
      +      "type": "string"
      +    },
      +    "result": {
      +      "description": "The computed loan figures.",
      +      "properties": {
      +        "monthlyPayment": {
      +          "description": "Base level monthly payment rounded to 2 decimals (principal divided by months when the rate is 0).",
      +          "type": "number"
      +        },
      +        "payoffDateIso": {
      +          "description": "ISO date of the final payment, derived from startDateIso plus payoffMonths.",
      +          "type": "string"
      +        },
      +        "payoffMonths": {
      +          "description": "Number of months until the balance reaches zero (fewer than the contractual term when extra payments apply).",
      +          "type": "integer"
      +        },
      +        "schedule": {
      +          "description": "Full month-by-month amortization rows. Present when operation is schedule.",
      +          "items": {
      +            "properties": {
      +              "balance": {
      +                "description": "Remaining balance after this payment, rounded to 2 decimals.",
      +                "type": "number"
      +              },
      +              "dateIso": {
      +                "description": "ISO date of this payment.",
      +                "type": "string"
      +              },
      +              "extraPaid": {
      +                "description": "Extra principal paid this month beyond the scheduled amount, rounded to 2 decimals.",
      +                "type": "number"
      +              },
      +              "interestPaid": {
      +                "description": "Interest portion paid this month, rounded to 2 decimals.",
      +                "type": "number"
      +              },
      +              "month": {
      +                "description": "Payment number, starting at 1.",
      +                "type": "integer"
      +              },
      +              "principalPaid": {
      +                "description": "Principal portion paid this month, rounded to 2 decimals.",
      +                "type": "number"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "summary": {
      +          "description": "Per-year roll-up of the schedule. Present when operation is compute.",
      +          "properties": {
      +            "byYear": {
      +              "description": "One entry per calendar year touched by the schedule.",
      +              "items": {
      +                "properties": {
      +                  "balance": {
      +                    "description": "Remaining balance at the end of the year, rounded to 2 decimals.",
      +                    "type": "number"
      +                  },
      +                  "interestPaid": {
      +                    "description": "Interest paid during the year, rounded to 2 decimals.",
      +                    "type": "number"
      +                  },
      +                  "principalPaid": {
      +                    "description": "Principal paid during the year, rounded to 2 decimals.",
      +                    "type": "number"
      +                  },
      +                  "year": {
      +                    "description": "Calendar year of the grouped payments.",
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "totalInterest": {
      +          "description": "Sum of all interest paid over the life of the loan, rounded to 2 decimals.",
      +          "type": "number"
      +        },
      +        "totalPaid": {
      +          "description": "Total of principal plus interest paid, rounded to 2 decimals.",
      +          "type": "number"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "success": {
      +      "description": "Whether the calculation succeeded.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Description aligns with annotations (readOnlyHint, destructiveHint, idempotentHint) and adds context: runs locally, non-destructive, contacts no external service, rate-limited. No contradiction.

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?

Concise yet comprehensive. Front-loaded with purpose, then details modes and special features, then sibling comparison, then behavioral notes. No wasted words.

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 all aspects: purpose, parameters, edge cases, sibling differentiation, behavior, and rate limits. Output schema exists so return values not needed. Complete for a calculator tool.

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% (baseline 3). Description adds meaning: explains operation modes, extra payment effect, startDateIso labeling. Adds value beyond schema but not highly extensive.

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 clearly states the tool calculates fixed-rate loan amortization with specific outputs (monthly payment, total interest, etc.). It distinguishes itself from the sibling math_compound_interest_calculator by explicitly stating when to use each tool.

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?

Provides explicit when-to-use (loan amortization) and when-not-to-use (use compound interest calculator for savings). Also mentions handling extra payments, zero-rate loans, and rate limits.

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

Deploy Server

Other Tools