Koskamo

LeaseBreak MCP

LeaseBreak provides MCP tools for AI assistants to estimate early lease termination costs, compare options like subletting versus breaking the lease, draft formal notice letters, and build negotiation checklists. It computes itemized estimates including notice-period rent, break fees, and deposit returns based on user-provided terms, without storing data or sending payments.

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.

LeaseBreak MCP logo, by MagicTeamsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by MagicTeams
MCP endpoint (Streamable HTTP)
https://lease-break.magicteams.ai/mcp
Vendor documentation

What its tools do

4 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

4 of 4 have a description · 4 of 4 declare behavior hints · 4 of 4 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Compute an itemised estimate of ending a lease early
  • Compare the net cost of breaking the lease vs subletting vs staying
  • Draft a formal early-termination notice letter
  • Build a checklist for negotiating an early lease exit

Source and maintenance

Community listingRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
lease-break 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

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

LeaseBreak estimates early lease termination costs, compares breaking vs subletting vs staying, drafts notice letters and prepares negotiation checklists. Uses only the numbers you provide; informational, not legal advice.

Tools

4 advertised

estimate_break_cost — Estimate break cost
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compute an itemised estimate of ending a lease early: notice-period rent, break fee, re-letting fee, rent until re-let, deposit credit and net cost vs staying. Use when the user asks what breaking their lease will cost. Do NOT use to weigh breaking vs subletting vs staying - use compare_options.

estimate_break_cost input schema
{
  "type": "object",
  "required": [
    "monthly_rent",
    "months_remaining"
  ],
  "properties": {
    "deposit": {
      "type": "number",
      "description": "Security deposit held by the landlord, non-negative amount, e.g. 2200. Default 0"
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency code used only to label amounts, e.g. USD, GBP, EUR. Default USD"
    },
    "monthly_rent": {
      "type": "number",
      "description": "Current monthly rent as a positive number in the lease currency, e.g. 2200"
    },
    "notice_months": {
      "type": "number",
      "description": "Notice period required by the lease, in months, e.g. 2; cannot exceed months_remaining. Default 2 (capped at months_remaining) if no break fee, else 0"
    },
    "reletting_fee": {
      "type": "number",
      "description": "Fixed re-letting/advertising/cleaning fee stated in the lease, non-negative amount, e.g. 300. Default 0"
    },
    "break_fee_months": {
      "type": "number",
      "description": "Early-termination (break) fee stated in the lease, in months' rent, e.g. 2. Default 0 = no break clause"
    },
    "months_remaining": {
      "type": "number",
      "description": "Months left on the lease including the current month, positive number, e.g. 7"
    },
    "landlord_mitigates": {
      "type": "boolean",
      "description": "Whether the landlord must try to re-let and offset rent (duty to mitigate). Default true; false = liable for all remaining rent"
    },
    "expected_relet_months": {
      "type": "number",
      "description": "Expected months until a replacement tenant moves in, e.g. 0.5 for about two weeks. Default 1"
    }
  }
}
estimate_break_cost output schema
{
  "type": "object",
  "required": [
    "currency",
    "breakdown",
    "net_break_cost",
    "net_without_break_clause",
    "stay_cost",
    "assumptions",
    "disclaimer"
  ],
  "properties": {
    "currency": {
      "type": "string",
      "description": "Currency code the amounts are labelled in"
    },
    "breakdown": {
      "type": "object",
      "required": [
        "rent_during_notice",
        "break_fee",
        "reletting_fee",
        "rent_until_relet_if_liable",
        "deposit_credit"
      ],
      "properties": {
        "break_fee": {
          "type": "number",
          "description": "Break fee amount (monthly_rent x break_fee_months)"
        },
        "reletting_fee": {
          "type": "number",
          "description": "Fixed re-letting fee from the lease"
        },
        "deposit_credit": {
          "type": "number",
          "description": "Deposit credited against the cost, capped at the cost of the path used for net_break_cost"
        },
        "rent_during_notice": {
          "type": "number",
          "description": "Rent owed for the notice period (monthly_rent x notice_months)"
        },
        "rent_until_relet_if_liable": {
          "type": "number",
          "description": "Rent owed until a replacement tenant is found (or to lease end if the landlord does not mitigate)"
        }
      },
      "description": "Itemised cost components of breaking the lease"
    },
    "path_used": {
      "enum": [
        "break_clause",
        "no_clause"
      ],
      "type": "string",
      "description": "Which path net_break_cost uses: break_clause (notice rent + break fee + re-letting fee) or no_clause (rent until relet + re-letting fee)"
    },
    "stay_cost": {
      "type": "number",
      "description": "Total rent if the lease is kept to term, for comparison"
    },
    "disclaimer": {
      "type": "string",
      "description": "Informational, not-legal-advice disclaimer to show with the result"
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Assumptions applied in the estimate (fee, notice, mitigation, deposit)"
    },
    "net_break_cost": {
      "type": "number",
      "description": "Estimated net cost to break the lease after deposit credit: with a break fee, the cheaper of the break-clause and no-clause paths; with no break fee, the no-clause path. Floored at 0"
    },
    "net_without_break_clause": {
      "type": "number",
      "description": "Net cost on the no-break-clause path (rent until relet + re-letting fee, less deposit)"
    }
  }
}
estimate_break_cost annotations
{
  "title": "Estimate break cost",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_options — Compare options
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compare the net cost of breaking the lease vs subletting vs staying to term, ranked cheapest first with notes, risks and assumptions. Use when the user is deciding how to leave a lease. Do NOT use for the itemised break-cost breakdown alone - use estimate_break_cost.

compare_options input schema
{
  "type": "object",
  "required": [
    "monthly_rent",
    "months_remaining"
  ],
  "properties": {
    "deposit": {
      "type": "number",
      "description": "Security deposit held by the landlord, non-negative amount, e.g. 2200. Default 0"
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency code used only to label amounts, e.g. USD, GBP, EUR. Default USD"
    },
    "monthly_rent": {
      "type": "number",
      "description": "Current monthly rent as a positive number in the lease currency, e.g. 2200"
    },
    "notice_months": {
      "type": "number",
      "description": "Notice period required by the lease, in months, e.g. 2; cannot exceed months_remaining. Default 2 (capped at months_remaining) if no break fee, else 0"
    },
    "reletting_fee": {
      "type": "number",
      "description": "Fixed re-letting/advertising/cleaning fee stated in the lease, non-negative amount, e.g. 300. Default 0"
    },
    "break_fee_months": {
      "type": "number",
      "description": "Early-termination (break) fee stated in the lease, in months' rent, e.g. 2. Default 0 = no break clause"
    },
    "months_remaining": {
      "type": "number",
      "description": "Months left on the lease including the current month, positive number, e.g. 7"
    },
    "landlord_mitigates": {
      "type": "boolean",
      "description": "Whether the landlord must try to re-let and offset rent (duty to mitigate). Default true; false = liable for all remaining rent"
    },
    "sublet_discount_pct": {
      "type": "number",
      "description": "Percent below full rent a subtenant would pay, 0 to under 100, e.g. 15 for 15%. Default 15"
    },
    "expected_relet_months": {
      "type": "number",
      "description": "Expected months until a replacement tenant moves in, e.g. 0.5 for about two weeks. Default 1"
    },
    "sublet_vacancy_months": {
      "type": "number",
      "description": "Months the unit sits empty before a subtenant starts paying, non-negative, e.g. 1. Default 1"
    }
  }
}
compare_options output schema
{
  "type": "object",
  "required": [
    "currency",
    "options",
    "cheapest",
    "assumptions",
    "disclaimer"
  ],
  "properties": {
    "options": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "option",
          "net_cost",
          "note",
          "risks"
        ],
        "properties": {
          "note": {
            "type": "string",
            "description": "One-line explanation of how the cost arises"
          },
          "risks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Risks to check before choosing this option"
          },
          "option": {
            "enum": [
              "break_lease",
              "sublet",
              "stay"
            ],
            "type": "string",
            "description": "Option identifier"
          },
          "net_cost": {
            "type": "number",
            "description": "Net cost of this option over the remaining lease, after crediting the deposit (capped at the option cost)"
          }
        }
      },
      "description": "The three exit options sorted by net_cost, cheapest first"
    },
    "cheapest": {
      "enum": [
        "break_lease",
        "sublet",
        "stay"
      ],
      "type": "string",
      "description": "Identifier of the lowest-cost option"
    },
    "currency": {
      "type": "string",
      "description": "Currency code the amounts are labelled in"
    },
    "disclaimer": {
      "type": "string",
      "description": "Informational, not-legal-advice disclaimer to show with the result"
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Assumptions applied (sublet discount, vacancy, deposit handling)"
    }
  }
}
compare_options annotations
{
  "title": "Compare options",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
notice_letter — Notice letter
Advertised by the server during the last successful anonymous check.
Advertised read-only

Draft a formal early-termination notice letter (text only - nothing is sent) with property, lease date, notice period, move-out date, fee and deposit lines, plus a subject and delivery tips. Use once the user has decided to leave early. Do NOT use to estimate costs - use estimate_break_cost.

notice_letter input schema
{
  "type": "object",
  "required": [
    "tenant_name",
    "property_address",
    "notice_months",
    "intended_move_out_date"
  ],
  "properties": {
    "reason": {
      "type": "string",
      "description": "Short reason for leaving, e.g. 'job relocation'; omitted if not given"
    },
    "deposit": {
      "type": "number",
      "description": "Security deposit amount to mention for return/inspection, e.g. 2200"
    },
    "lease_date": {
      "type": "string",
      "description": "Date the lease was signed or started, YYYY-MM-DD, e.g. 2025-06-01. Omitted from the letter if not given"
    },
    "tenant_name": {
      "type": "string",
      "description": "Tenant's full name as on the lease; also used as the signature, e.g. Asha Rao"
    },
    "monthly_rent": {
      "type": "number",
      "description": "Monthly rent amount quoted next to the break fee, e.g. 2200 (no currency symbol added)"
    },
    "landlord_name": {
      "type": "string",
      "description": "Landlord or property manager name for the greeting. Default 'Landlord/Property Manager'"
    },
    "notice_months": {
      "type": "number",
      "description": "Notice period required by the lease, in months, positive, e.g. 2"
    },
    "break_fee_months": {
      "type": "number",
      "description": "Break fee in months' rent to acknowledge in the letter, e.g. 2. Omit or 0 to ask for a reasonable arrangement instead"
    },
    "property_address": {
      "type": "string",
      "description": "Full address of the rental unit, e.g. 12 Lakeview Dr, Austin, TX"
    },
    "intended_move_out_date": {
      "type": "string",
      "description": "Planned move-out date, YYYY-MM-DD, e.g. 2026-12-15"
    }
  }
}
notice_letter output schema
{
  "type": "object",
  "required": [
    "letter",
    "subject",
    "sending_tips",
    "disclaimer"
  ],
  "properties": {
    "letter": {
      "type": "string",
      "description": "Full plain-text notice letter ready to copy, review and send"
    },
    "subject": {
      "type": "string",
      "description": "Suggested email subject / letter heading line"
    },
    "disclaimer": {
      "type": "string",
      "description": "Informational, not-legal-advice disclaimer to show with the result"
    },
    "sending_tips": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Practical tips for delivering the notice and protecting yourself"
    }
  }
}
notice_letter annotations
{
  "title": "Notice letter",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
negotiation_checklist — Negotiation checklist
Advertised by the server during the last successful anonymous check.
Advertised read-only

Build a checklist and step order for negotiating an early lease exit with the landlord, tailored to the break fee, months remaining, mitigation duty and local re-let demand. Use when the user wants to negotiate the fee down or plan the conversation. Do NOT use to compute costs - use estimate_break_cost.

negotiation_checklist input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "relet_demand": {
      "enum": [
        "high",
        "medium",
        "low"
      ],
      "type": "string",
      "description": "How quickly similar units re-let locally: high, medium or low. Default medium"
    },
    "break_fee_months": {
      "type": "number",
      "description": "Break fee in months' rent stated in the lease, e.g. 2. Default 0 = no break fee"
    },
    "months_remaining": {
      "type": "number",
      "description": "Months left on the lease, e.g. 7; 6 or more adds a longer-runway tip. Default 0"
    },
    "landlord_mitigates": {
      "type": "boolean",
      "description": "Set false if the landlord claims no duty to re-let; adds a tip to get that in writing. Omit if unknown"
    }
  }
}
negotiation_checklist output schema
{
  "type": "object",
  "required": [
    "checklist",
    "order_of_operations",
    "disclaimer"
  ],
  "properties": {
    "checklist": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tailored negotiation points and protections, in priority order"
    },
    "disclaimer": {
      "type": "string",
      "description": "Informational, not-legal-advice disclaimer to show with the result"
    },
    "order_of_operations": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Numbered steps for running the negotiation from first ask to signed agreement"
    }
  }
}
negotiation_checklist annotations
{
  "title": "Negotiation checklist",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
378 ms
95th percentile latency
378 ms

Maintenance history

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

  • · probe · passed · 378 ms · metadata changed · 4 tool(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 leasebreak-mcp https://lease-break.magicteams.ai/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 leasebreak-mcp --url https://lease-break.magicteams.ai/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable leasebreak-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "leasebreak-mcp": {
      "url": "https://lease-break.magicteams.ai/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "leasebreak-mcp": {
      "type": "streamableHttp",
      "url": "https://lease-break.magicteams.ai/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start leasebreak-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "leasebreak-mcp": {
      "type": "http",
      "url": "https://lease-break.magicteams.ai/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 leasebreak-mcp https://lease-break.magicteams.ai/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://lease-break.magicteams.ai/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": {
    "leasebreak-mcp": {
      "serverUrl": "https://lease-break.magicteams.ai/mcp"
    }
  }
}

Let your agent find its tools

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