Skip to main content
Glama

Capital expenditure recovery

calc_capex_recovery
Read-onlyIdempotent

Recoverable capital expenditure under a lease clause: amortize a capital cost over its useful life or the lease-specified period, straight-line (declining interest) or level payment, with interest on the unamortized balance or none; optionally cap each year's recovery at demonstrated cost savings (with or without carry-forward); and allocate each year to tenants by pro rata share. Every assumption is echoed with an optional lease clause citation. Deterministic: use this instead of doing the math yourself; cite formula calc.capex_recovery@1 and the returned steps, and surface any warnings.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "cost": "<cost>",
      "amortization_years": "<amortization_years>"
    },
    "name": "calc_capex_recovery"
  }
}

Input Schema

NameRequiredDescriptionDefault
costYesCapital cost of the improvement to recover, USD (building level).
methodNostraight_line: equal principal (cost ÷ years) plus interest on the declining unamortized balance, so recovery falls each year. level_payment: a level annual payment like a mortgage, cost × r ÷ (1 − (1 + r)^−years), split into interest and principal. Identical when interest_rate_annual is 0.straight_line
clausesNoLease clause behind each assumption, free text, echoed in the result's assumptions so a reviewer can check each against the lease.
tenantsNoTenants to allocate the annual recoverable amount to by pro rata share. Shares may sum to less than 1 (the landlord bears the rest), not more. Omit for the building-level schedule only.
first_yearNoCalendar or lease year of the first recovery year, e.g. 2026; labels the schedule rows. Omit to number years 1, 2, 3.
period_basisNoWhere amortization_years comes from: useful_life (e.g. under GAAP or tax guidance) or lease_specified (a period the lease states). Labels only.useful_life
cost_savings_capNoCost-savings limit: recovery in each year may not exceed the operating-cost savings the improvement demonstrably produces. Omit if the lease has none.
amortization_yearsYesYears over which the cost is recovered: the useful life, or the amortization period the lease specifies.
interest_rate_annualNoAnnual interest on the unamortized balance as a decimal, e.g. 0.08; 0 (default) for none. Charged on the balance at the start of each year.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior, so the bar is lower; the description still adds real value by disclosing that every assumption is echoed with its clause citation, that returned steps and warnings should be surfaced, and that the computation is deterministic. It stops short of describing output shape or error conditions, but the added behavioral context is substantive rather than repetitive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences plus a short imperative fragment, with the purpose front-loaded before the behavior and usage instructions. It is information-rich and largely waste-free, though the single long compound sentence packs many clauses and could be segmented for faster scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with nested objects and no output schema, the description covers the computational model, the echoing of assumptions, the citation requirement, and warning surfacing. The remaining gap is return-value structure, but the instruction to cite returned steps and assumptions gives the agent enough to interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself explains methods, enums, defaults, and the savings cap in depth, so the description adds little parameter-level meaning beyond restating those concepts in prose. Baseline 3 applies when the schema carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and domain object ("Recoverable capital expenditure under a lease clause") and enumerates the mechanics it computes: amortization method, interest on the unamortized balance, cost-savings cap, and pro rata tenant allocation. It is clearly distinguishable from most siblings, though it never explicitly separates itself from the nearby calc_amortization_schedule, which an agent could plausibly confuse with the straight-line/level-payment portion described here.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Deterministic: use this instead of doing the math yourself" is a direct when-to-use instruction, and it tells the agent to cite formula calc.capex_recovery@1 and surface warnings. What is missing is any when-not guidance or named alternative (e.g. versus calc_amortization_schedule for a plain schedule), so the routing decision against siblings is left implicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.