LeaseBreak
Server Details
Estimate early lease termination costs, compare options and draft notice letters. Free.
- Status
- Healthy
- Uptime
- 100.0% over 27 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Server Listing
- Sahadeva
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool targets a distinct stage of the lease-break workflow (compare, cost, negotiate, notify) and every description explicitly names the sibling tool to use instead for adjacent tasks. The negative routing hints ('Do NOT use for X - use Y') eliminate boundary confusion entirely.
All names are snake_case and readable, forming a predictable pattern. Minor deviation: compare_options and estimate_break_cost are verb-led while negotiation_checklist and notice_letter are noun phrases, but the convention is otherwise uniform.
Four tools is on the lean side but each maps to a clearly distinct, non-redundant step in the domain. Nothing feels padded or missing at the surface level.
The decision-to-action lifecycle is covered: compare options, estimate cost, negotiate, and draft a notice. Subletting is referenced in compare_options but has no dedicated tool for planning it, a minor gap agents can work around.
Available Tools
4 toolscompare_optionsCompare optionsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| deposit | No | Security deposit held by the landlord, non-negative amount, e.g. 2200. Default 0 | |
| currency | No | ISO 4217 currency code used only to label amounts, e.g. USD, GBP, EUR. Default USD | |
| monthly_rent | Yes | Current monthly rent as a positive number in the lease currency, e.g. 2200 | |
| notice_months | No | 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 | No | Fixed re-letting/advertising/cleaning fee stated in the lease, non-negative amount, e.g. 300. Default 0 | |
| break_fee_months | No | Early-termination (break) fee stated in the lease, in months' rent, e.g. 2. Default 0 = no break clause | |
| months_remaining | Yes | Months left on the lease including the current month, positive number, e.g. 7 | |
| landlord_mitigates | No | 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 | No | Percent below full rent a subtenant would pay, 0 to under 100, e.g. 15 for 15%. Default 15 | |
| expected_relet_months | No | Expected months until a replacement tenant moves in, e.g. 0.5 for about two weeks. Default 1 | |
| sublet_vacancy_months | No | Months the unit sits empty before a subtenant starts paying, non-negative, e.g. 1. Default 1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| options | Yes | The three exit options sorted by net_cost, cheapest first |
| cheapest | Yes | Identifier of the lowest-cost option |
| currency | Yes | Currency code the amounts are labelled in |
| disclaimer | Yes | Informational, not-legal-advice disclaimer to show with the result |
| assumptions | Yes | Assumptions applied (sublet discount, vacancy, deposit handling) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive safety, but the description adds output-shaping behavior the annotations cannot convey: results are net-cost comparisons ranked cheapest-first and include qualitative notes, risks and assumptions. That tells the agent this is an advisory decision tool, not just a calculator.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the comparison scope, then the usage trigger, then the exclusion. Every clause earns its place; there is no restatement of the title or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full schema (100% coverage) and an output schema present, the description does not need to enumerate parameters or return fields. It covers purpose, decision context, the routing alternative, and the qualitative nature of the output, which is everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 11 parameters, so defaults, units and constraints (e.g. notice_months capped at months_remaining, sublet_discount_pct range) are already fully documented. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare) and a precise set of resources (breaking vs subletting vs staying to term), and adds the shape of the result (net cost, ranked cheapest first, with notes, risks and assumptions). It also names the sibling it is not (estimate_break_cost), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use when the user is deciding how to leave a lease') plus an explicit exclusion ('Do NOT use for the itemised break-cost breakdown alone') and names the correct alternative (estimate_break_cost). Both the when and the when-not are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_break_costEstimate break costARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| deposit | No | Security deposit held by the landlord, non-negative amount, e.g. 2200. Default 0 | |
| currency | No | ISO 4217 currency code used only to label amounts, e.g. USD, GBP, EUR. Default USD | |
| monthly_rent | Yes | Current monthly rent as a positive number in the lease currency, e.g. 2200 | |
| notice_months | No | 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 | No | Fixed re-letting/advertising/cleaning fee stated in the lease, non-negative amount, e.g. 300. Default 0 | |
| break_fee_months | No | Early-termination (break) fee stated in the lease, in months' rent, e.g. 2. Default 0 = no break clause | |
| months_remaining | Yes | Months left on the lease including the current month, positive number, e.g. 7 | |
| landlord_mitigates | No | 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 | No | Expected months until a replacement tenant moves in, e.g. 0.5 for about two weeks. Default 1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| currency | Yes | Currency code the amounts are labelled in |
| breakdown | Yes | Itemised cost components of breaking the lease |
| path_used | No | 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 | Yes | Total rent if the lease is kept to term, for comparison |
| disclaimer | Yes | Informational, not-legal-advice disclaimer to show with the result |
| assumptions | Yes | Assumptions applied in the estimate (fee, notice, mitigation, deposit) |
| net_break_cost | Yes | 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 | Yes | Net cost on the no-break-clause path (rent until relet + re-letting fee, less deposit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real behavioral content by disclosing what the estimate accounts for, including deposit credit and net cost vs staying, though it doesn't surface the mitigation/default assumptions that materially change results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the computation and its line items, followed by the routing rule. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and the description nonetheless names the key output components for routing. With 9 parameters fully documented in the schema and complete use/exclusion guidance, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including defaults and capping rules is already documented in the schema. The description adds no parameter-level meaning beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('compute an itemised estimate of ending a lease early') and even enumerates the components of the breakdown. It is immediately distinguishable from siblings like compare_options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use when the user asks what breaking their lease will cost') and an explicit exclusion with the correct alternative named ('Do NOT use to weigh breaking vs subletting vs staying - use compare_options'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
negotiation_checklistNegotiation checklistARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| relet_demand | No | How quickly similar units re-let locally: high, medium or low. Default medium | |
| break_fee_months | No | Break fee in months' rent stated in the lease, e.g. 2. Default 0 = no break fee | |
| months_remaining | No | Months left on the lease, e.g. 7; 6 or more adds a longer-runway tip. Default 0 | |
| landlord_mitigates | No | Set false if the landlord claims no duty to re-let; adds a tip to get that in writing. Omit if unknown |
Output Schema
| Name | Required | Description |
|---|---|---|
| checklist | Yes | Tailored negotiation points and protections, in priority order |
| disclaimer | Yes | Informational, not-legal-advice disclaimer to show with the result |
| order_of_operations | Yes | Numbered steps for running the negotiation from first ask to signed agreement |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds that the output is tailored to four negotiation factors and that it produces a checklist plus step order — useful beyond the schema, though it says nothing about determinism or the structure of the generated steps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each doing distinct work: what is produced, when to use it, and when to avoid it. Front-loaded with the deliverable and zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations carrying the safety and idempotency profile, the description only needs to cover purpose, tailoring inputs, and routing — all of which it does. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes slightly beyond by naming all four factors (break fee, months remaining, mitigation duty, re-let demand) and asserting they shape the checklist, which clarifies that these inputs materially alter output rather than being cosmetic filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and artifact ('Build a checklist and step order') for a specific resource ('negotiating an early lease exit'), and explicitly names what it does not do versus the sibling estimate_break_cost. An agent can distinguish it from all three siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the trigger condition ('user wants to negotiate the fee down or plan the conversation') and an explicit exclusion with a redirect ('Do NOT use to compute costs - use estimate_break_cost'). This is the full when/when-not/alternative pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notice_letterNotice letterARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Short reason for leaving, e.g. 'job relocation'; omitted if not given | |
| deposit | No | Security deposit amount to mention for return/inspection, e.g. 2200 | |
| lease_date | No | Date the lease was signed or started, YYYY-MM-DD, e.g. 2025-06-01. Omitted from the letter if not given | |
| tenant_name | Yes | Tenant's full name as on the lease; also used as the signature, e.g. Asha Rao | |
| monthly_rent | No | Monthly rent amount quoted next to the break fee, e.g. 2200 (no currency symbol added) | |
| landlord_name | No | Landlord or property manager name for the greeting. Default 'Landlord/Property Manager' | |
| notice_months | Yes | Notice period required by the lease, in months, positive, e.g. 2 | |
| break_fee_months | No | 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 | Yes | Full address of the rental unit, e.g. 12 Lakeview Dr, Austin, TX | |
| intended_move_out_date | Yes | Planned move-out date, YYYY-MM-DD, e.g. 2026-12-15 |
Output Schema
| Name | Required | Description |
|---|---|---|
| letter | Yes | Full plain-text notice letter ready to copy, review and send |
| subject | Yes | Suggested email subject / letter heading line |
| disclaimer | Yes | Informational, not-legal-advice disclaimer to show with the result |
| sending_tips | Yes | Practical tips for delivering the notice and protecting yourself |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds meaningful context beyond that: 'text only - nothing is sent' clarifies no message is dispatched, which is not derivable from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and scope, then the usage trigger, then the exclusion. Every clause earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a drafting tool with an output schema and full annotation coverage, the description supplies everything an agent needs: what is produced, that nothing is sent, when to use it, and which sibling handles cost estimation. No material gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across 10 parameters, so the schema already documents types, formats (YYYY-MM-DD) and omission behavior for every field. The description lists the letter's content lines but adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Draft a formal early-termination notice letter') and enumerates the concrete contents the draft will include (property, lease date, notice period, move-out date, fee and deposit lines, subject, delivery tips). It also disambiguates from the sibling estimate_break_cost, so an agent can tell it apart without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the trigger ('Use once the user has decided to leave early') and an explicit exclusion with a named alternative ('Do NOT use to estimate costs - use estimate_break_cost'). Nothing about tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
compare_options2 fields changed- changed
Input schema / properties / notice_months / descriptionPrevious value: -"Notice period required by the lease, in months, e.g. 2; cannot exceed months_remaining. Default 2 if no break fee, else 0"New value: +"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" - changed
Output schema / properties / options / items / properties / net_cost / descriptionPrevious value: -"Net cost of this option over the remaining lease"New value: +"Net cost of this option over the remaining lease, after crediting the deposit (capped at the option cost)"
- Changed
estimate_break_cost4 fields changed- changed
Input schema / properties / notice_months / descriptionPrevious value: -"Notice period required by the lease, in months, e.g. 2; cannot exceed months_remaining. Default 2 if no break fee, else 0"New value: +"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" - changed
Output schema / properties / breakdown / properties / deposit_credit / descriptionPrevious value: -"Deposit amount credited against the cost"New value: +"Deposit credited against the cost, capped at the cost of the path used for net_break_cost" - changed
Output schema / properties / net_break_cost / descriptionPrevious value: -"Estimated net cost to break the lease after deposit credit (cheaper of the break-clause and no-clause paths, floored at 0)"New value: +"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" - added
Output schema / properties / path_usedAdded value: +{ + "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)", + "enum": [ + "break_clause", + "no_clause" + ], + "type": "string" +}
4 tool updates
- Changed
compare_options20 fields changed- changed
Input schema / properties / break_fee_months / descriptionPrevious value: -"Early-termination fee in months' rent"New value: +"Early-termination (break) fee stated in the lease, in months' rent, e.g. 2. Default 0 = no break clause" - changed
Input schema / properties / currency / descriptionPrevious value: -"Currency code in ISO 4217 format"New value: +"ISO 4217 currency code used only to label amounts, e.g. USD, GBP, EUR. Default USD" - changed
Input schema / properties / deposit / descriptionPrevious value: -"Initial deposit amount as a number"New value: +"Security deposit held by the landlord, non-negative amount, e.g. 2200. Default 0" - changed
Input schema / properties / expected_relet_months / descriptionPrevious value: -"Expected months to relett the property as a number"New value: +"Expected months until a replacement tenant moves in, e.g. 0.5 for about two weeks. Default 1" - changed
Input schema / properties / landlord_mitigates / descriptionPrevious value: -"True if landlord mitigates damages, false otherwise"New value: +"Whether the landlord must try to re-let and offset rent (duty to mitigate). Default true; false = liable for all remaining rent" - changed
Input schema / properties / monthly_rent / descriptionPrevious value: -"Monthly rent"New value: +"Current monthly rent as a positive number in the lease currency, e.g. 2200" - changed
Input schema / properties / months_remaining / descriptionPrevious value: -"Months left on the lease (including the current one)"New value: +"Months left on the lease including the current month, positive number, e.g. 7" - changed
Input schema / properties / notice_months / descriptionPrevious value: -"Number of months' notice required to terminate the lease"New value: +"Notice period required by the lease, in months, e.g. 2; cannot exceed months_remaining. Default 2 if no break fee, else 0" - changed
Input schema / properties / reletting_fee / descriptionPrevious value: -"Fee for reletting the property as a number"New value: +"Fixed re-letting/advertising/cleaning fee stated in the lease, non-negative amount, e.g. 300. Default 0" - changed
Input schema / properties / sublet_discount_pct / descriptionPrevious value: -"Percentage discount on rent when subletting, as a number 0-100"New value: +"Percent below full rent a subtenant would pay, 0 to under 100, e.g. 15 for 15%. Default 15" - changed
Input schema / properties / sublet_vacancy_months / descriptionPrevious value: -"Number of months the property may be vacant while subletting"New value: +"Months the unit sits empty before a subtenant starts paying, non-negative, e.g. 1. Default 1" - added
Output schema / properties / assumptionsAdded value: +{ + "description": "Assumptions applied (sublet discount, vacancy, deposit handling)", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / break_leaseRemoved value: -{ - "description": "Details about breaking the lease", - "properties": { - "break_fee": { - "description": "Early-termination fee", - "type": "number" - }, - "notice_cost": { - "description": "Cost associated with giving notice", - "type": "number" - }, - "reletting_fee": { - "description": "Fee for finding a new tenant", - "type": "number" - }, - "remaining_rent": { - "description": "Rent for the remaining months", - "type": "number" - }, - "risks": { - "description": "Potential risks associated with breaking the lease", - "items": { - "type": "string" - }, - "type": "array" - }, - "total_cost": { - "description": "Total cost of breaking the lease", - "type": "number" - } - }, - "required": [ - "total_cost", - "break_fee", - "notice_cost", - "reletting_fee", - "remaining_rent", - "risks" - ], - "type": "object" -} - added
Output schema / properties / cheapestAdded value: +{ + "description": "Identifier of the lowest-cost option", + "enum": [ + "break_lease", + "sublet", + "stay" + ], + "type": "string" +} - added
Output schema / properties / currencyAdded value: +{ + "description": "Currency code the amounts are labelled in", + "type": "string" +} - added
Output schema / properties / disclaimerAdded value: +{ + "description": "Informational, not-legal-advice disclaimer to show with the result", + "type": "string" +} - added
Output schema / properties / optionsAdded value: +{ + "description": "The three exit options sorted by net_cost, cheapest first", + "items": { + "properties": { + "net_cost": { + "description": "Net cost of this option over the remaining lease", + "type": "number" + }, + "note": { + "description": "One-line explanation of how the cost arises", + "type": "string" + }, + "option": { + "description": "Option identifier", + "enum": [ + "break_lease", + "sublet", + "stay" + ], + "type": "string" + }, + "risks": { + "description": "Risks to check before choosing this option", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "option", + "net_cost", + "note", + "risks" + ], + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / stay_to_termRemoved value: -{ - "description": "Details about staying to the end of the lease term", - "properties": { - "remaining_rent": { - "description": "Rent for the remaining months", - "type": "number" - }, - "risks": { - "description": "Potential risks associated with staying to the end of the lease term", - "items": { - "type": "string" - }, - "type": "array" - }, - "total_cost": { - "description": "Total cost of staying to the end of the lease term", - "type": "number" - } - }, - "required": [ - "total_cost", - "remaining_rent", - "risks" - ], - "type": "object" -} - removed
Output schema / properties / subletRemoved value: -{ - "description": "Details about subletting the lease", - "properties": { - "risks": { - "description": "Potential risks associated with subletting", - "items": { - "type": "string" - }, - "type": "array" - }, - "sublet_discount": { - "description": "Discount applied to the sublet rent", - "type": "number" - }, - "sublet_income": { - "description": "Income from subletting", - "type": "number" - }, - "total_cost": { - "description": "Total cost of subletting", - "type": "number" - }, - "vacancy_cost": { - "description": "Cost associated with vacancy months", - "type": "number" - } - }, - "required": [ - "total_cost", - "sublet_income", - "sublet_discount", - "vacancy_cost", - "risks" - ], - "type": "object" -} - changed
Output schema / requiredPrevious value: -[ - "break_lease", - "sublet", - "stay_to_term" -]New value: +[ + "currency", + "options", + "cheapest", + "assumptions", + "disclaimer" +]
- Changed
estimate_break_cost24 fields changed- changed
Input schema / properties / break_fee_months / descriptionPrevious value: -"Early-termination fee in months' rent"New value: +"Early-termination (break) fee stated in the lease, in months' rent, e.g. 2. Default 0 = no break clause" - changed
Input schema / properties / currency / descriptionPrevious value: -"Currency code in ISO 4217 format"New value: +"ISO 4217 currency code used only to label amounts, e.g. USD, GBP, EUR. Default USD" - changed
Input schema / properties / deposit / descriptionPrevious value: -"Initial deposit amount as a number"New value: +"Security deposit held by the landlord, non-negative amount, e.g. 2200. Default 0" - changed
Input schema / properties / expected_relet_months / descriptionPrevious value: -"Expected months to relett the property as a number"New value: +"Expected months until a replacement tenant moves in, e.g. 0.5 for about two weeks. Default 1" - changed
Input schema / properties / landlord_mitigates / descriptionPrevious value: -"True if landlord mitigates damages, false otherwise"New value: +"Whether the landlord must try to re-let and offset rent (duty to mitigate). Default true; false = liable for all remaining rent" - changed
Input schema / properties / monthly_rent / descriptionPrevious value: -"Monthly rent"New value: +"Current monthly rent as a positive number in the lease currency, e.g. 2200" - changed
Input schema / properties / months_remaining / descriptionPrevious value: -"Months left on the lease (including the current one)"New value: +"Months left on the lease including the current month, positive number, e.g. 7" - changed
Input schema / properties / notice_months / descriptionPrevious value: -"Number of months' notice required to terminate the lease"New value: +"Notice period required by the lease, in months, e.g. 2; cannot exceed months_remaining. Default 2 if no break fee, else 0" - changed
Input schema / properties / reletting_fee / descriptionPrevious value: -"Fee for reletting the property as a number"New value: +"Fixed re-letting/advertising/cleaning fee stated in the lease, non-negative amount, e.g. 300. Default 0" - added
Output schema / properties / assumptionsAdded value: +{ + "description": "Assumptions applied in the estimate (fee, notice, mitigation, deposit)", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / break_feeRemoved value: -{ - "description": "The early-termination fee.", - "type": "number" -} - added
Output schema / properties / breakdownAdded value: +{ + "description": "Itemised cost components of breaking the lease", + "properties": { + "break_fee": { + "description": "Break fee amount (monthly_rent x break_fee_months)", + "type": "number" + }, + "deposit_credit": { + "description": "Deposit amount credited against the cost", + "type": "number" + }, + "reletting_fee": { + "description": "Fixed re-letting fee from the lease", + "type": "number" + }, + "rent_during_notice": { + "description": "Rent owed for the notice period (monthly_rent x notice_months)", + "type": "number" + }, + "rent_until_relet_if_liable": { + "description": "Rent owed until a replacement tenant is found (or to lease end if the landlord does not mitigate)", + "type": "number" + } + }, + "required": [ + "rent_during_notice", + "break_fee", + "reletting_fee", + "rent_until_relet_if_liable", + "deposit_credit" + ], + "type": "object" +} - removed
Output schema / properties / cost_breakdownRemoved value: -{ - "description": "A detailed breakdown of the costs.", - "items": { - "properties": { - "amount": { - "description": "The amount of the cost item.", - "type": "number" - }, - "description": { - "description": "A description of the cost item.", - "type": "string" - } - }, - "required": [ - "description", - "amount" - ], - "type": "object" - }, - "type": "array" -} - changed
Output schema / properties / currency / descriptionPrevious value: -"The currency in which the costs are calculated."New value: +"Currency code the amounts are labelled in" - removed
Output schema / properties / deposit_creditRemoved value: -{ - "description": "The amount of deposit that will be returned.", - "type": "number" -} - added
Output schema / properties / disclaimerAdded value: +{ + "description": "Informational, not-legal-advice disclaimer to show with the result", + "type": "string" +} - added
Output schema / properties / net_break_costAdded value: +{ + "description": "Estimated net cost to break the lease after deposit credit (cheaper of the break-clause and no-clause paths, floored at 0)", + "type": "number" +} - added
Output schema / properties / net_without_break_clauseAdded value: +{ + "description": "Net cost on the no-break-clause path (rent until relet + re-letting fee, less deposit)", + "type": "number" +} - removed
Output schema / properties / notice_period_rentRemoved value: -{ - "description": "The cost of rent during the notice period.", - "type": "number" -} - removed
Output schema / properties / reletting_feeRemoved value: -{ - "description": "The fee charged by the landlord or agent for re-letting the property.", - "type": "number" -} - removed
Output schema / properties / rent_until_reletRemoved value: -{ - "description": "The estimated rent cost until the property is re-let.", - "type": "number" -} - added
Output schema / properties / stay_costAdded value: +{ + "description": "Total rent if the lease is kept to term, for comparison", + "type": "number" +} - removed
Output schema / properties / total_costRemoved value: -{ - "description": "The total cost of breaking the lease.", - "type": "number" -} - changed
Output schema / requiredPrevious value: -[ - "total_cost", - "notice_period_rent", - "break_fee", - "reletting_fee", - "rent_until_relet", - "deposit_credit", - "currency", - "cost_breakdown" -]New value: +[ + "currency", + "breakdown", + "net_break_cost", + "net_without_break_clause", + "stay_cost", + "assumptions", + "disclaimer" +]
- Changed
negotiation_checklist10 fields changed- changed
Input schema / properties / break_fee_months / descriptionPrevious value: -"Number of months' rent you must pay as a break fee"New value: +"Break fee in months' rent stated in the lease, e.g. 2. Default 0 = no break fee" - changed
Input schema / properties / landlord_mitigates / descriptionPrevious value: -"True if landlord will try to mitigate damages, false otherwise"New value: +"Set false if the landlord claims no duty to re-let; adds a tip to get that in writing. Omit if unknown" - changed
Input schema / properties / months_remaining / descriptionPrevious value: -"Number of months left on your lease"New value: +"Months left on the lease, e.g. 7; 6 or more adds a longer-runway tip. Default 0" - changed
Input schema / properties / relet_demand / descriptionPrevious value: -"Local demand for reletting the property, e.g. high, medium, low"New value: +"How quickly similar units re-let locally: high, medium or low. Default medium" - added
Output schema / properties / checklistAdded value: +{ + "description": "Tailored negotiation points and protections, in priority order", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / disclaimerAdded value: +{ + "description": "Informational, not-legal-advice disclaimer to show with the result", + "type": "string" +} - added
Output schema / properties / order_of_operationsAdded value: +{ + "description": "Numbered steps for running the negotiation from first ask to signed agreement", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / recommendationsRemoved value: -{ - "description": "Additional recommendations based on the input parameters.", - "properties": { - "break_fee": { - "description": "Recommendation on how to approach the break fee.", - "type": "string" - }, - "landlord_mitigation": { - "description": "Recommendation based on whether the landlord can mitigate their losses.", - "type": "string" - }, - "relet_demand": { - "description": "Recommendation based on the current relet demand.", - "type": "string" - } - }, - "required": [ - "break_fee", - "relet_demand", - "landlord_mitigation" - ], - "type": "object" -} - removed
Output schema / properties / stepsRemoved value: -{ - "description": "Ordered list of negotiation steps.", - "items": { - "properties": { - "details": { - "description": "Additional information or considerations for the step.", - "type": "string" - }, - "order": { - "description": "The order in which the step should be taken.", - "type": "number" - }, - "step": { - "description": "The specific action to take.", - "type": "string" - } - }, - "required": [ - "step", - "details", - "order" - ], - "type": "object" - }, - "type": "array" -} - changed
Output schema / requiredPrevious value: -[ - "steps", - "recommendations" -]New value: +[ + "checklist", + "order_of_operations", + "disclaimer" +]
- Changed
notice_letter25 fields changed- changed
Input schema / properties / break_fee_months / descriptionPrevious value: -"The number of months' rent as a break fee"New value: +"Break fee in months' rent to acknowledge in the letter, e.g. 2. Omit or 0 to ask for a reasonable arrangement instead" - changed
Input schema / properties / deposit / descriptionPrevious value: -"The security deposit amount in USD"New value: +"Security deposit amount to mention for return/inspection, e.g. 2200" - changed
Input schema / properties / intended_move_out_date / descriptionPrevious value: -"YYYY-MM-DD"New value: +"Planned move-out date, YYYY-MM-DD, e.g. 2026-12-15" - changed
Input schema / properties / landlord_name / descriptionPrevious value: -"The name of the landlord"New value: +"Landlord or property manager name for the greeting. Default 'Landlord/Property Manager'" - changed
Input schema / properties / lease_date / descriptionPrevious value: -"The start date of the lease YYYY-MM-DD"New value: +"Date the lease was signed or started, YYYY-MM-DD, e.g. 2025-06-01. Omitted from the letter if not given" - changed
Input schema / properties / monthly_rent / descriptionPrevious value: -"The monthly rent amount in USD"New value: +"Monthly rent amount quoted next to the break fee, e.g. 2200 (no currency symbol added)" - changed
Input schema / properties / notice_months / descriptionPrevious value: -"The number of months' notice required by the lease"New value: +"Notice period required by the lease, in months, positive, e.g. 2" - changed
Input schema / properties / property_address / descriptionPrevious value: -"The address of the rental property"New value: +"Full address of the rental unit, e.g. 12 Lakeview Dr, Austin, TX" - changed
Input schema / properties / reason / descriptionPrevious value: -"The reason for early termination"New value: +"Short reason for leaving, e.g. 'job relocation'; omitted if not given" - changed
Input schema / properties / tenant_name / descriptionPrevious value: -"The name of the tenant"New value: +"Tenant's full name as on the lease; also used as the signature, e.g. Asha Rao" - removed
Output schema / properties / break_fee_monthsRemoved value: -{ - "description": "The number of months of rent that will be charged as a break fee.", - "type": "number" -} - removed
Output schema / properties / depositRemoved value: -{ - "description": "The security deposit amount for the property.", - "type": "number" -} - added
Output schema / properties / disclaimerAdded value: +{ + "description": "Informational, not-legal-advice disclaimer to show with the result", + "type": "string" +} - removed
Output schema / properties / intended_move_out_dateRemoved value: -{ - "description": "The intended move-out date in YYYY-MM-DD format.", - "type": "string" -} - removed
Output schema / properties / landlord_nameRemoved value: -{ - "description": "The name of the landlord or property manager.", - "type": "string" -} - removed
Output schema / properties / lease_dateRemoved value: -{ - "description": "The start date of the lease agreement.", - "type": "string" -} - changed
Output schema / properties / letter / descriptionPrevious value: -"The generated formal early-termination notice letter as a plain text string."New value: +"Full plain-text notice letter ready to copy, review and send" - removed
Output schema / properties / monthly_rentRemoved value: -{ - "description": "The monthly rent amount for the property.", - "type": "number" -} - removed
Output schema / properties / notice_monthsRemoved value: -{ - "description": "The number of months' notice being given for early termination.", - "type": "number" -} - removed
Output schema / properties / property_addressRemoved value: -{ - "description": "The address of the property being vacated.", - "type": "string" -} - removed
Output schema / properties / reasonRemoved value: -{ - "description": "The reason for early termination, if provided.", - "type": "string" -} - added
Output schema / properties / sending_tipsAdded value: +{ + "description": "Practical tips for delivering the notice and protecting yourself", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / subjectAdded value: +{ + "description": "Suggested email subject / letter heading line", + "type": "string" +} - removed
Output schema / properties / tenant_nameRemoved value: -{ - "description": "The name of the tenant who is terminating the lease.", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "letter", - "tenant_name", - "property_address", - "intended_move_out_date" -]New value: +[ + "letter", + "subject", + "sending_tips", + "disclaimer" +]
4 tool updates
- Changed
compare_options8 fields changed- added
Input schema / properties / currency / descriptionAdded value: +"Currency code in ISO 4217 format" - added
Input schema / properties / deposit / descriptionAdded value: +"Initial deposit amount as a number" - added
Input schema / properties / expected_relet_months / descriptionAdded value: +"Expected months to relett the property as a number" - added
Input schema / properties / landlord_mitigates / descriptionAdded value: +"True if landlord mitigates damages, false otherwise" - added
Input schema / properties / notice_months / descriptionAdded value: +"Number of months' notice required to terminate the lease" - added
Input schema / properties / reletting_fee / descriptionAdded value: +"Fee for reletting the property as a number" - added
Input schema / properties / sublet_discount_pct / descriptionAdded value: +"Percentage discount on rent when subletting, as a number 0-100" - added
Input schema / properties / sublet_vacancy_months / descriptionAdded value: +"Number of months the property may be vacant while subletting"
- Changed
estimate_break_cost6 fields changed- added
Input schema / properties / currency / descriptionAdded value: +"Currency code in ISO 4217 format" - added
Input schema / properties / deposit / descriptionAdded value: +"Initial deposit amount as a number" - added
Input schema / properties / expected_relet_months / descriptionAdded value: +"Expected months to relett the property as a number" - added
Input schema / properties / landlord_mitigates / descriptionAdded value: +"True if landlord mitigates damages, false otherwise" - added
Input schema / properties / notice_months / descriptionAdded value: +"Number of months' notice required to terminate the lease" - added
Input schema / properties / reletting_fee / descriptionAdded value: +"Fee for reletting the property as a number"
- Changed
negotiation_checklist4 fields changed- added
Input schema / properties / break_fee_months / descriptionAdded value: +"Number of months' rent you must pay as a break fee" - added
Input schema / properties / landlord_mitigates / descriptionAdded value: +"True if landlord will try to mitigate damages, false otherwise" - added
Input schema / properties / months_remaining / descriptionAdded value: +"Number of months left on your lease" - added
Input schema / properties / relet_demand / descriptionAdded value: +"Local demand for reletting the property, e.g. high, medium, low"
- Changed
notice_letter9 fields changed- added
Input schema / properties / break_fee_months / descriptionAdded value: +"The number of months' rent as a break fee" - added
Input schema / properties / deposit / descriptionAdded value: +"The security deposit amount in USD" - added
Input schema / properties / landlord_name / descriptionAdded value: +"The name of the landlord" - added
Input schema / properties / lease_date / descriptionAdded value: +"The start date of the lease YYYY-MM-DD" - added
Input schema / properties / monthly_rent / descriptionAdded value: +"The monthly rent amount in USD" - added
Input schema / properties / notice_months / descriptionAdded value: +"The number of months' notice required by the lease" - added
Input schema / properties / property_address / descriptionAdded value: +"The address of the rental property" - added
Input schema / properties / reason / descriptionAdded value: +"The reason for early termination" - added
Input schema / properties / tenant_name / descriptionAdded value: +"The name of the tenant"
4 tool updates
- Changed
compare_options1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "break_lease": { + "description": "Details about breaking the lease", + "properties": { + "break_fee": { + "description": "Early-termination fee", + "type": "number" + }, + "notice_cost": { + "description": "Cost associated with giving notice", + "type": "number" + }, + "reletting_fee": { + "description": "Fee for finding a new tenant", + "type": "number" + }, + "remaining_rent": { + "description": "Rent for the remaining months", + "type": "number" + }, + "risks": { + "description": "Potential risks associated with breaking the lease", + "items": { + "type": "string" + }, + "type": "array" + }, + "total_cost": { + "description": "Total cost of breaking the lease", + "type": "number" + } + }, + "required": [ + "total_cost", + "break_fee", + "notice_cost", + "reletting_fee", + "remaining_rent", + "risks" + ], + "type": "object" + }, + "stay_to_term": { + "description": "Details about staying to the end of the lease term", + "properties": { + "remaining_rent": { + "description": "Rent for the remaining months", + "type": "number" + }, + "risks": { + "description": "Potential risks associated with staying to the end of the lease term", + "items": { + "type": "string" + }, + "type": "array" + }, + "total_cost": { + "description": "Total cost of staying to the end of the lease term", + "type": "number" + } + }, + "required": [ + "total_cost", + "remaining_rent", + "risks" + ], + "type": "object" + }, + "sublet": { + "description": "Details about subletting the lease", + "properties": { + "risks": { + "description": "Potential risks associated with subletting", + "items": { + "type": "string" + }, + "type": "array" + }, + "sublet_discount": { + "description": "Discount applied to the sublet rent", + "type": "number" + }, + "sublet_income": { + "description": "Income from subletting", + "type": "number" + }, + "total_cost": { + "description": "Total cost of subletting", + "type": "number" + }, + "vacancy_cost": { + "description": "Cost associated with vacancy months", + "type": "number" + } + }, + "required": [ + "total_cost", + "sublet_income", + "sublet_discount", + "vacancy_cost", + "risks" + ], + "type": "object" + } + }, + "required": [ + "break_lease", + "sublet", + "stay_to_term" + ], + "type": "object" +}
- Changed
estimate_break_cost1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "break_fee": { + "description": "The early-termination fee.", + "type": "number" + }, + "cost_breakdown": { + "description": "A detailed breakdown of the costs.", + "items": { + "properties": { + "amount": { + "description": "The amount of the cost item.", + "type": "number" + }, + "description": { + "description": "A description of the cost item.", + "type": "string" + } + }, + "required": [ + "description", + "amount" + ], + "type": "object" + }, + "type": "array" + }, + "currency": { + "description": "The currency in which the costs are calculated.", + "type": "string" + }, + "deposit_credit": { + "description": "The amount of deposit that will be returned.", + "type": "number" + }, + "notice_period_rent": { + "description": "The cost of rent during the notice period.", + "type": "number" + }, + "reletting_fee": { + "description": "The fee charged by the landlord or agent for re-letting the property.", + "type": "number" + }, + "rent_until_relet": { + "description": "The estimated rent cost until the property is re-let.", + "type": "number" + }, + "total_cost": { + "description": "The total cost of breaking the lease.", + "type": "number" + } + }, + "required": [ + "total_cost", + "notice_period_rent", + "break_fee", + "reletting_fee", + "rent_until_relet", + "deposit_credit", + "currency", + "cost_breakdown" + ], + "type": "object" +}
- Changed
negotiation_checklist1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "recommendations": { + "description": "Additional recommendations based on the input parameters.", + "properties": { + "break_fee": { + "description": "Recommendation on how to approach the break fee.", + "type": "string" + }, + "landlord_mitigation": { + "description": "Recommendation based on whether the landlord can mitigate their losses.", + "type": "string" + }, + "relet_demand": { + "description": "Recommendation based on the current relet demand.", + "type": "string" + } + }, + "required": [ + "break_fee", + "relet_demand", + "landlord_mitigation" + ], + "type": "object" + }, + "steps": { + "description": "Ordered list of negotiation steps.", + "items": { + "properties": { + "details": { + "description": "Additional information or considerations for the step.", + "type": "string" + }, + "order": { + "description": "The order in which the step should be taken.", + "type": "number" + }, + "step": { + "description": "The specific action to take.", + "type": "string" + } + }, + "required": [ + "step", + "details", + "order" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "steps", + "recommendations" + ], + "type": "object" +}
- Changed
notice_letter1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "break_fee_months": { + "description": "The number of months of rent that will be charged as a break fee.", + "type": "number" + }, + "deposit": { + "description": "The security deposit amount for the property.", + "type": "number" + }, + "intended_move_out_date": { + "description": "The intended move-out date in YYYY-MM-DD format.", + "type": "string" + }, + "landlord_name": { + "description": "The name of the landlord or property manager.", + "type": "string" + }, + "lease_date": { + "description": "The start date of the lease agreement.", + "type": "string" + }, + "letter": { + "description": "The generated formal early-termination notice letter as a plain text string.", + "type": "string" + }, + "monthly_rent": { + "description": "The monthly rent amount for the property.", + "type": "number" + }, + "notice_months": { + "description": "The number of months' notice being given for early termination.", + "type": "number" + }, + "property_address": { + "description": "The address of the property being vacated.", + "type": "string" + }, + "reason": { + "description": "The reason for early termination, if provided.", + "type": "string" + }, + "tenant_name": { + "description": "The name of the tenant who is terminating the lease.", + "type": "string" + } + }, + "required": [ + "letter", + "tenant_name", + "property_address", + "intended_move_out_date" + ], + "type": "object" +}
4 tool updates
- First observed
compare_options - First observed
estimate_break_cost - First observed
negotiation_checklist - First observed
notice_letter
Related MCP Connectors
Audit junk fees, project annual costs and draft dispute letters. Free.
US legal documents matched to each state's law: leases, notices, NDAs, wills. PDF or Word.
Car maintenance due dates, cost estimates and seasonal checklists. Free.
Check US leases for red flags and look up verified state tenant law with statute citations.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides educational fixed-rate loan estimates with mortgage and auto loan calculators.-
- AlicenseNot gradedqualityDmaintenanceEnables users to paste contracts, leases, terms of service, and other documents to receive a plain-English summary of key risks, deadlines, rights, and negotiation points.MIT
- AlicenseNot gradedqualityBmaintenanceLandlord and rental-property calculators as MCP tools: cash flow, cap rate, DSCR, Airbnb break-even occupancy, rent late fees, lease notice dates, and IRS mileage. Offline and deterministic, with no dependencies.MIT
- AlicenseAqualityDmaintenanceEnables renters to cross-examine their rent ledger against their lease using deterministic tools, uncovering discrepancies in charges, fees, and rent amounts.15MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.