Skip to main content
Glama
simonplmak-cloud

Intangible Asset Valuation

Time Value of Money

valuation_time_value
Read-onlyIdempotent

Discount or compound cash flows, value annuities and perpetuities, and compute DCF terminal values using Gordon growth or exit multiples.

Instructions

Time value of money: discount or compound a single sum, value level and growing annuities and perpetuities, and compute a terminal value by Gordon growth or exit multiple. Method selects the formula. Use to move cash flows through time or to value a terminal value in a DCF; combine with a rate from valuation_discount_rate. For uneven multi-period cash flows use valuation_income_methods; for rate construction use valuation_discount_rate. Per method: present_value needs future_value + discount_rate + periods; future_value needs present_value + discount_rate + periods; annuity_pv needs payment + discount_rate + periods; perpetuity_pv needs payment + discount_rate; growing_annuity_pv needs payment + discount_rate + growth_rate + periods; terminal_value_gordon_growth needs final_year_cashflow + perpetual_growth_rate + discount_rate; terminal_value_exit_multiple needs final_year_cashflow + exit_multiple. Rates and growth are decimals (0.10 = 10%); for terminal_value_gordon_growth the discount rate must exceed the perpetual growth rate. Only method is required; other parameters are method-dependent, so supply those named for the selected method and omit the rest (documented defaults apply where defined). Pure arithmetic: no I/O and no external calls, and numeric results are returned rounded to 2 decimals. Parameters belonging to other methods of this tool are accepted and ignored. Supplying an unknown method, or leaving unset a parameter that the chosen method requires, returns an error instead of a value.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
methodYesFormula to apply. Options: present_value = PV = FV / (1 + r)^n.; future_value = FV = PV * (1 + r)^n.; annuity_pv = PV = PMT * [1 - (1 + r)^-n] / r.; perpetuity_pv = PV = PMT / r.; growing_annuity_pv = PV of a constant-growth annuity.; terminal_value_gordon_growth = TV = FCF * (1 + g) / (r - g).; terminal_value_exit_multiple = TV = FCF * exit multiple.
paymentNoRecurring payment per period, in currency units.
periodsNoNumber of periods n (non-negative).
growth_rateNoPer-period growth rate as a decimal (0.03 = 3%).
future_valueNoFuture cash amount to discount, in currency units.
discount_rateNoPer-period discount rate as a decimal (0.10 = 10%).
exit_multipleNoExit multiple applied to the final-year cash flow (e.g. 8.0 for 8x).
present_valueNoPresent amount to compound, in currency units.
final_year_cashflowNoFinal-year projected cash flow (FCF), in currency units.
perpetual_growth_rateNoPerpetual growth rate g as a decimal; must be below discount_rate for Gordon growth.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoError message when the call fails.
stepsNoIntermediate calculation steps for traceability (one string per step).
valueYesComputed valuation, rate, or metric.
methodNoFormula / method name that produced the result.
assumptionsNoModelling assumptions applied (list of strings or key/value object).
formula_referenceNoMathematical formula or reference applied.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.1.4
    • changedOutput schema / properties / steps / description
      Previous value: -"Intermediate calculation steps for traceability."New value: +"Intermediate calculation steps for traceability (one string per step)."
    • removedOutput schema / properties / steps / items / type
      Removed value: -"object"
  2. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds substantial behavior beyond them: pure arithmetic with no I/O or external calls, results rounded to 2 decimals, extra method parameters accepted and ignored, and an explicit error contract (unknown method or missing required parameter returns an error instead of a value). It also states the Gordon-growth constraint that the discount rate must exceed the perpetual growth rate.

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?

Front-loaded with the capability statement and routing rules before drilling into the per-method parameter listing, so the important information comes first. It is dense and quite long, but nearly every clause carries distinct information; only the per-method list edges toward verbosity against a 100%-covered schema.

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

Completeness5/5

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

For a single-entry, method-dispatched calculator with an output schema present, the description covers selection, parameter requirements, units, edge constraints, and error behavior. An agent has everything needed to call it correctly on any method without further inference.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds genuine value the schema cannot: a per-method parameter dependency map (present_value needs future_value + discount_rate + periods, perpetuity_pv needs only payment + discount_rate, etc.) and the decimal convention (0.10 = 10%). The only remaining gap is that it does not restate the enum-option formulas, which the schema already carries.

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

Purpose5/5

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

States a specific domain (time value of money) and enumerates the exact computations it performs: discount/compound a single sum, value level and growing annuities and perpetuities, and terminal value by Gordon growth or exit multiple. It also names the siblings it is not (valuation_income_methods, valuation_discount_rate), so an agent can separate it from alternatives 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.

Usage Guidelines5/5

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

Explicitly says when to use it ('to move cash flows through time or to value a terminal value in a DCF'), how to pair it ('combine with a rate from valuation_discount_rate'), and routes the agent elsewhere for adjacent needs ('for uneven multi-period cash flows use valuation_income_methods; for rate construction use valuation_discount_rate'). 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.