Koskamo

Amortiza Loan Planner MCP

Computes exact periodic payments, builds full amortization schedules with CSV export, analyzes extra-payment savings, breaks down PITI components, and compares up to four loans side by side using deterministic calculations without quoting rates or recommending lenders.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Amortiza Loan Planner MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://loan-planner.zovo.one/mcp
Vendor documentation

What you can do with it

  • Show the amortization schedule for a $350,000 mortgage at 6.5% over 30 years
  • Calculate how much interest and time is saved by paying an extra $200 a month
  • Compare two to four loans side by side with total cost and break-even month
  • Break a mortgage payment into principal, interest, taxes, insurance, HOA and PMI

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
loan-planner 1.0.0
MCP protocol
2025-06-18
Tools
2 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Amortiza Loan Planner computes exact loan and mortgage payments, amortization schedules, extra-payment savings, PITI with PMI, and side-by-side loan comparisons. Use calculate_loan for one loan and compare_loans for 2 to 4 options. Results are informational, not financial advice; it does not know current market rates.

Tools

2 advertised

calculate_loan — Calculate loan or mortgage
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a mortgage calculator, loan calculator, or amortization calculator result: the monthly (or biweekly/weekly) payment, an amortization schedule or table, total interest, payoff date, a mortgage calculator with extra payments or for paying off early, or a full PITI payment with property tax, insurance, HOA and PMI. Takes the loan amount or home price with down payment, rate, and term. Returns exact payment, totals, interest and time saved by extra payments, a yearly summary, and a CSV of the full schedule. Fixed-rate loans only; does not model adjustable rates, interest-only or balloon loans, and does not look up current rates. Do not use for rent-vs-buy advice or choosing a lender.

calculate_loan input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "currency": {
      "type": "string",
      "maxLength": 3,
      "description": "ISO 4217 currency code for formatting, e.g. USD, EUR, GBP. Default USD."
    },
    "pmi_rate": {
      "type": "number",
      "description": "Yearly private mortgage insurance rate as a percent of the original loan, e.g. 0.5. Needs home_price. Charged only while the loan is above 80% of the home value, and dropped once the balance reaches 78%."
    },
    "principal": {
      "type": "number",
      "description": "Loan amount to borrow, e.g. 350000. Give this OR home_price with a down payment."
    },
    "home_price": {
      "type": "number",
      "description": "Purchase price or current home value, e.g. 400000. Used with down_payment/down_payment_percent to get the loan amount, and as the value for PMI loan-to-value."
    },
    "start_date": {
      "type": "string",
      "maxLength": 10,
      "description": "Date of the first payment, YYYY-MM or YYYY-MM-DD, e.g. 2026-11. Defaults to the first day of next month."
    },
    "term_years": {
      "type": "number",
      "description": "Loan term in years, e.g. 30. Give term_years or term_months."
    },
    "accelerated": {
      "type": "boolean",
      "description": "For biweekly/weekly only: true pays half (biweekly) or a quarter (weekly) of the monthly payment each period, which adds about one extra monthly payment a year. Default false (a true biweekly/weekly amortization)."
    },
    "annual_rate": {
      "type": "number",
      "description": "Annual interest rate in percent (nominal APR used for the payment), e.g. 6.5 for 6.5%. 0 is allowed."
    },
    "hoa_monthly": {
      "type": "number",
      "description": "Monthly HOA dues, e.g. 75."
    },
    "term_months": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Loan term in months, e.g. 360 or 72 for a car loan."
    },
    "down_payment": {
      "type": "number",
      "description": "Down payment amount, e.g. 50000. Used with home_price."
    },
    "extra_payment": {
      "type": "number",
      "description": "Extra principal paid with every payment, e.g. 200 for $200 more each month."
    },
    "one_time_payments": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "amount"
        ],
        "properties": {
          "date": {
            "type": "string",
            "maxLength": 10,
            "description": "Month (YYYY-MM) or day (YYYY-MM-DD) of the lump sum, e.g. 2029-06. It is applied with the first payment on or after that date."
          },
          "amount": {
            "type": "number",
            "description": "Lump-sum amount paid toward principal, e.g. 10000."
          },
          "payment_number": {
            "type": "integer",
            "maximum": 3000,
            "minimum": 1,
            "description": "Alternative to date: apply the lump sum with this payment number, e.g. 60 for the 60th payment."
          }
        }
      },
      "maxItems": 40,
      "description": "Lump-sum extra payments, e.g. [{\"date\":\"2030-01\",\"amount\":10000}]."
    },
    "payment_frequency": {
      "enum": [
        "monthly",
        "biweekly",
        "weekly"
      ],
      "type": "string",
      "description": "How often payments are made: monthly (default), biweekly (every 2 weeks, 26 a year), or weekly (52 a year)."
    },
    "property_tax_annual": {
      "type": "number",
      "description": "Yearly property tax for the PITI breakdown, e.g. 4800."
    },
    "down_payment_percent": {
      "type": "number",
      "description": "Down payment as a percent of home_price, e.g. 20 for 20%."
    },
    "home_insurance_annual": {
      "type": "number",
      "description": "Yearly homeowners insurance for the PITI breakdown, e.g. 1500."
    }
  }
}
calculate_loan output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "currency",
    "loan_amount",
    "home_price",
    "annual_rate",
    "term_months",
    "payment_frequency",
    "accelerated",
    "payment",
    "final_payment",
    "payments_count",
    "first_payment_date",
    "payoff_date",
    "total_interest",
    "total_principal",
    "total_paid",
    "total_pmi",
    "extra_payments",
    "vs_monthly",
    "piti",
    "pmi",
    "yearly",
    "chart",
    "warnings",
    "inputs",
    "downloads"
  ],
  "properties": {
    "pmi": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "piti": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "chart": {
      "type": "object",
      "required": [
        "columns",
        "points"
      ],
      "properties": {
        "points": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "yearly": {
      "type": "object",
      "required": [
        "columns",
        "rows"
      ],
      "properties": {
        "rows": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "payment": {
      "type": "number"
    },
    "summary": {
      "type": "string"
    },
    "currency": {
      "type": "string"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "downloads": {
      "type": "object",
      "required": [
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "total_pmi": {
      "type": "number"
    },
    "home_price": {
      "type": [
        "number",
        "null"
      ]
    },
    "total_paid": {
      "type": "number"
    },
    "vs_monthly": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "accelerated": {
      "type": "boolean"
    },
    "annual_rate": {
      "type": "number"
    },
    "loan_amount": {
      "type": "number"
    },
    "payoff_date": {
      "type": "string"
    },
    "term_months": {
      "type": "number"
    },
    "final_payment": {
      "type": "number"
    },
    "extra_payments": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "payments_count": {
      "type": "number"
    },
    "total_interest": {
      "type": "number"
    },
    "total_principal": {
      "type": "number"
    },
    "payment_frequency": {
      "type": "string"
    },
    "first_payment_date": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
calculate_loan annotations
{
  "title": "Calculate loan or mortgage",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_loans — Compare loans
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to compare 2 to 4 loan or mortgage options side by side, such as 15-year vs 30-year, different interest rates, paying discount points, or a mortgage calculator for refinance options. Shared values (loan amount, rate, term) go at the top level and each scenario overrides what differs. Returns payment, total interest, upfront costs, total cost, payoff date and the break-even month for points or fees, plus a comparison CSV. Fixed-rate loans only; does not look up current rates or recommend a lender. Do not use for a single loan (use calculate_loan).

compare_loans input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "scenarios"
  ],
  "properties": {
    "currency": {
      "type": "string",
      "maxLength": 3,
      "description": "ISO 4217 currency code for formatting, e.g. USD, EUR, GBP. Default USD."
    },
    "pmi_rate": {
      "type": "number",
      "description": "Yearly private mortgage insurance rate as a percent of the original loan, e.g. 0.5. Needs home_price. Charged only while the loan is above 80% of the home value, and dropped once the balance reaches 78%."
    },
    "principal": {
      "type": "number",
      "description": "Shared loan amount used by every scenario that does not set its own, e.g. 280000."
    },
    "scenarios": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 40,
            "description": "Short name for the scenario, e.g. \"30-year 6.5%\" or \"15-year with 1 point\"."
          },
          "points": {
            "type": "number",
            "description": "Discount points paid upfront, as percent of the loan (1 point = 1%), e.g. 1.5."
          },
          "pmi_rate": {
            "type": "number",
            "description": "Yearly private mortgage insurance rate as a percent of the original loan, e.g. 0.5. Needs home_price. Charged only while the loan is above 80% of the home value, and dropped once the balance reaches 78%."
          },
          "principal": {
            "type": "number",
            "description": "Loan amount to borrow, e.g. 350000. Give this OR home_price with a down payment."
          },
          "home_price": {
            "type": "number",
            "description": "Purchase price or current home value, e.g. 400000. Used with down_payment/down_payment_percent to get the loan amount, and as the value for PMI loan-to-value."
          },
          "term_years": {
            "type": "number",
            "description": "Loan term in years, e.g. 30. Give term_years or term_months."
          },
          "accelerated": {
            "type": "boolean",
            "description": "For biweekly/weekly only: true pays half (biweekly) or a quarter (weekly) of the monthly payment each period, which adds about one extra monthly payment a year. Default false (a true biweekly/weekly amortization)."
          },
          "annual_rate": {
            "type": "number",
            "description": "Annual interest rate in percent (nominal APR used for the payment), e.g. 6.5 for 6.5%. 0 is allowed."
          },
          "hoa_monthly": {
            "type": "number",
            "description": "Monthly HOA dues, e.g. 75."
          },
          "term_months": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "description": "Loan term in months, e.g. 360 or 72 for a car loan."
          },
          "down_payment": {
            "type": "number",
            "description": "Down payment amount, e.g. 50000. Used with home_price."
          },
          "closing_costs": {
            "type": "number",
            "description": "Other upfront lender fees for this scenario, e.g. 3500."
          },
          "extra_payment": {
            "type": "number",
            "description": "Extra principal paid with every payment, e.g. 200 for $200 more each month."
          },
          "one_time_payments": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "amount"
              ],
              "properties": {
                "date": {
                  "type": "string",
                  "maxLength": 10,
                  "description": "Month (YYYY-MM) or day (YYYY-MM-DD) of the lump sum, e.g. 2029-06. It is applied with the first payment on or after that date."
                },
                "amount": {
                  "type": "number",
                  "description": "Lump-sum amount paid toward principal, e.g. 10000."
                },
                "payment_number": {
                  "type": "integer",
                  "maximum": 3000,
                  "minimum": 1,
                  "description": "Alternative to date: apply the lump sum with this payment number, e.g. 60 for the 60th payment."
                }
              }
            },
            "maxItems": 40,
            "description": "Lump-sum extra payments, e.g. [{\"date\":\"2030-01\",\"amount\":10000}]."
          },
          "payment_frequency": {
            "enum": [
              "monthly",
              "biweekly",
              "weekly"
            ],
            "type": "string",
            "description": "How often payments are made: monthly (default), biweekly (every 2 weeks, 26 a year), or weekly (52 a year)."
          },
          "property_tax_annual": {
            "type": "number",
            "description": "Yearly property tax for the PITI breakdown, e.g. 4800."
          },
          "down_payment_percent": {
            "type": "number",
            "description": "Down payment as a percent of home_price, e.g. 20 for 20%."
          },
          "home_insurance_annual": {
            "type": "number",
            "description": "Yearly homeowners insurance for the PITI breakdown, e.g. 1500."
          }
        }
      },
      "description": "2 to 4 loan scenarios. Each needs its own annual_rate and term unless set at the top level, e.g. [{\"label\":\"30-year\",\"annual_rate\":6.5,\"term_years\":30},{\"label\":\"15-year\",\"annual_rate\":5.75,\"term_years\":15}]."
    },
    "home_price": {
      "type": "number",
      "description": "Purchase price or current home value, e.g. 400000. Used with down_payment/down_payment_percent to get the loan amount, and as the value for PMI loan-to-value."
    },
    "start_date": {
      "type": "string",
      "maxLength": 10,
      "description": "Date of the first payment, YYYY-MM or YYYY-MM-DD, e.g. 2026-11. Defaults to the first day of next month."
    },
    "term_years": {
      "type": "number",
      "description": "Shared term in years for scenarios that do not set their own, e.g. 30."
    },
    "accelerated": {
      "type": "boolean",
      "description": "For biweekly/weekly only: true pays half (biweekly) or a quarter (weekly) of the monthly payment each period, which adds about one extra monthly payment a year. Default false (a true biweekly/weekly amortization)."
    },
    "annual_rate": {
      "type": "number",
      "description": "Shared annual rate in percent for scenarios that do not set their own, e.g. 6.5."
    },
    "term_months": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Loan term in months, e.g. 360 or 72 for a car loan."
    },
    "down_payment": {
      "type": "number",
      "description": "Down payment amount, e.g. 50000. Used with home_price."
    },
    "payment_frequency": {
      "enum": [
        "monthly",
        "biweekly",
        "weekly"
      ],
      "type": "string",
      "description": "How often payments are made: monthly (default), biweekly (every 2 weeks, 26 a year), or weekly (52 a year)."
    },
    "down_payment_percent": {
      "type": "number",
      "description": "Down payment as a percent of home_price, e.g. 20 for 20%."
    }
  }
}
compare_loans output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "currency",
    "reference",
    "lowest_payment",
    "lowest_cost_of_borrowing",
    "scenarios",
    "warnings",
    "downloads"
  ],
  "properties": {
    "currency": {
      "type": "string"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "downloads": {
      "type": "object",
      "required": [
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "reference": {
      "type": "string"
    },
    "scenarios": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "lowest_payment": {
      "type": "string"
    },
    "lowest_cost_of_borrowing": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
compare_loans annotations
{
  "title": "Compare loans",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

loan-planner-widget — Amortiza Loan Planner view

Advertised by the server during the last successful anonymous check.

Interactive view for Amortiza Loan Planner.

loan-planner-widget URI
ui://widget/loan-planner-v1-1.0.0-01af794a2baf50216d58dbe26c51169773261ec9cbf232df00040963621cb70e.html

MIME type: text/html;profile=mcp-app

loan-planner-widget-legacy — Amortiza Loan Planner view (previous versions)

Advertised by the server during the last successful anonymous check.

loan-planner-widget-legacy URI template
ui://widget/loan-planner-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
641 ms
95th percentile latency
641 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 641 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http amortiza-loan-planner-mcp https://loan-planner.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add amortiza-loan-planner-mcp --url https://loan-planner.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable amortiza-loan-planner-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "amortiza-loan-planner-mcp": {
      "url": "https://loan-planner.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "amortiza-loan-planner-mcp": {
      "type": "streamableHttp",
      "url": "https://loan-planner.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start amortiza-loan-planner-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "amortiza-loan-planner-mcp": {
      "type": "http",
      "url": "https://loan-planner.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http amortiza-loan-planner-mcp https://loan-planner.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "amortiza-loan-planner-mcp": {
      "url": "https://loan-planner.zovo.one/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "amortiza-loan-planner-mcp": {
      "serverUrl": "https://loan-planner.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Amortiza Loan Planner MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.