LeaseBreak

Estimate early lease termination costs, compare options and draft notice letters. Free.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
97%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,645Tokens (tool definitions)
~6.9 KBTypical response size
Significant attention impact (2.07% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "lease-break": {
      "url": "https://lease-break.magicteams.ai/mcp"
    }
  }
}

Remote endpoints

https://lease-break.magicteams.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢estimate_break_cost(monthly_rent, months_remaining, deposit, break_fee_months, notice_months, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "monthly_rent": {
      "type": "number",
      "description": "Current monthly rent as a positive number in the lease currency, e.g. 2200"
    },
    "months_remaining": {
      "type": "number",
      "description": "Months left on the lease including the current month, positive number, e.g. 7"
    },
    "deposit": {
      "type": "number",
      "description": "Security deposit held by the landlord, non-negative amount, e.g. 2200. 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"
    },
    "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"
    },
    "expected_relet_months": {
      "type": "number",
      "description": "Expected months until a replacement tenant moves in, e.g. 0.5 for about two weeks. Default 1"
    },
    "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"
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency code used only to label amounts, e.g. USD, GBP, EUR. Default USD"
    }
  },
  "required": [
    "monthly_rent",
    "months_remaining"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "currency": {
      "type": "string",
      "description": "Currency code the amounts are labelled in"
    },
    "breakdown": {
      "type": "object",
      "description": "Itemised cost components of breaking the lease",
      "properties": {
        "rent_during_notice": {
          "type": "number",
          "description": "Rent owed for the notice period (monthly_rent x notice_months)"
        },
        "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"
        },
        "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)"
        },
        "deposit_credit": {
          "type": "number",
          "description": "Deposit credited against the cost, capped at the cost of the path used for net_break_cost"
        }
      },
      "required": [
        "rent_during_notice",
        "break_fee",
        "reletting_fee",
        "rent_until_relet_if_liable",
        "deposit_credit"
      ]
    },
    "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"
    },
    "path_used": {
      "type": "string",
      "enum": [
        "break_clause",
        "no_clause"
      ],
      "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)"
    },
    "net_without_break_clause": {
      "type": "number",
      "description": "Net cost on the no-break-clause path (rent until relet + re-letting fee, less deposit)"
    },
    "stay_cost": {
      "type": "number",
      "description": "Total rent if the lease is kept to term, for comparison"
    },
    "assumptions": {
      "type": "array",
      "description": "Assumptions applied in the estimate (fee, notice, mitigation, deposit)",
      "items": {
        "type": "string"
      }
    },
    "disclaimer": {
      "type": "string",
      "description": "Informational, not-legal-advice disclaimer to show with the result"
    }
  },
  "required": [
    "currency",
    "breakdown",
    "net_break_cost",
    "net_without_break_clause",
    "stay_cost",
    "assumptions",
    "disclaimer"
  ]
}
🟢compare_options(monthly_rent, months_remaining, deposit, break_fee_months, notice_months, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "monthly_rent": {
      "type": "number",
      "description": "Current monthly rent as a positive number in the lease currency, e.g. 2200"
    },
    "months_remaining": {
      "type": "number",
      "description": "Months left on the lease including the current month, positive number, e.g. 7"
    },
    "deposit": {
      "type": "number",
      "description": "Security deposit held by the landlord, non-negative amount, e.g. 2200. 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"
    },
    "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"
    },
    "expected_relet_months": {
      "type": "number",
      "description": "Expected months until a replacement tenant moves in, e.g. 0.5 for about two weeks. Default 1"
    },
    "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"
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency code used only to label amounts, e.g. USD, GBP, EUR. Default USD"
    },
    "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"
    },
    "sublet_vacancy_months": {
      "type": "number",
      "description": "Months the unit sits empty before a subtenant starts paying, non-negative, e.g. 1. Default 1"
    }
  },
  "required": [
    "monthly_rent",
    "months_remaining"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "currency": {
      "type": "string",
      "description": "Currency code the amounts are labelled in"
    },
    "options": {
      "type": "array",
      "description": "The three exit options sorted by net_cost, cheapest first",
      "items": {
        "type": "object",
        "properties": {
          "option": {
            "type": "string",
            "enum": [
              "break_lease",
              "sublet",
              "stay"
            ],
            "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)"
          },
          "note": {
            "type": "string",
            "description": "One-line explanation of how the cost arises"
          },
          "risks": {
            "type": "array",
            "description": "Risks to check before choosing this option",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "option",
          "net_cost",
          "note",
          "risks"
        ]
      }
    },
    "cheapest": {
      "type": "string",
      "enum": [
        "break_lease",
        "sublet",
        "stay"
      ],
      "description": "Identifier of the lowest-cost option"
    },
    "assumptions": {
      "type": "array",
      "description": "Assumptions applied (sublet discount, vacancy, deposit handling)",
      "items": {
        "type": "string"
      }
    },
    "disclaimer": {
      "type": "string",
      "description": "Informational, not-legal-advice disclaimer to show with the result"
    }
  },
  "required": [
    "currency",
    "options",
    "cheapest",
    "assumptions",
    "disclaimer"
  ]
}
🟢notice_letter(tenant_name, property_address, lease_date, notice_months, intended_move_out_date, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "tenant_name": {
      "type": "string",
      "description": "Tenant's full name as on the lease; also used as the signature, e.g. Asha Rao"
    },
    "property_address": {
      "type": "string",
      "description": "Full address of the rental unit, e.g. 12 Lakeview Dr, Austin, TX"
    },
    "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"
    },
    "notice_months": {
      "type": "number",
      "description": "Notice period required by the lease, in months, positive, e.g. 2"
    },
    "intended_move_out_date": {
      "type": "string",
      "description": "Planned move-out date, YYYY-MM-DD, e.g. 2026-12-15"
    },
    "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"
    },
    "monthly_rent": {
      "type": "number",
      "description": "Monthly rent amount quoted next to the break fee, e.g. 2200 (no currency symbol added)"
    },
    "deposit": {
      "type": "number",
      "description": "Security deposit amount to mention for return/inspection, e.g. 2200"
    },
    "landlord_name": {
      "type": "string",
      "description": "Landlord or property manager name for the greeting. Default 'Landlord/Property Manager'"
    },
    "reason": {
      "type": "string",
      "description": "Short reason for leaving, e.g. 'job relocation'; omitted if not given"
    }
  },
  "required": [
    "tenant_name",
    "property_address",
    "notice_months",
    "intended_move_out_date"
  ]
}

Output Schema

{
  "type": "object",
  "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"
    },
    "sending_tips": {
      "type": "array",
      "description": "Practical tips for delivering the notice and protecting yourself",
      "items": {
        "type": "string"
      }
    },
    "disclaimer": {
      "type": "string",
      "description": "Informational, not-legal-advice disclaimer to show with the result"
    }
  },
  "required": [
    "letter",
    "subject",
    "sending_tips",
    "disclaimer"
  ]
}
🟢negotiation_checklist(break_fee_months, months_remaining, landlord_mitigates, relet_demand)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "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"
    },
    "relet_demand": {
      "type": "string",
      "enum": [
        "high",
        "medium",
        "low"
      ],
      "description": "How quickly similar units re-let locally: high, medium or low. Default medium"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "checklist": {
      "type": "array",
      "description": "Tailored negotiation points and protections, in priority order",
      "items": {
        "type": "string"
      }
    },
    "order_of_operations": {
      "type": "array",
      "description": "Numbered steps for running the negotiation from first ask to signed agreement",
      "items": {
        "type": "string"
      }
    },
    "disclaimer": {
      "type": "string",
      "description": "Informational, not-legal-advice disclaimer to show with the result"
    }
  },
  "required": [
    "checklist",
    "order_of_operations",
    "disclaimer"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools