valuation-api
Server Details
Deterministic company valuation and corporate finance tools for AI agents — IRR, NPV, MOIC, DCF, WACC, enterprise value, EV multiples, CAPM, beta and sensitivity analysis via Model Context Protocol. Useful for financial analysis, equity analysis, quantitative analysis, financial projections, financial formulas and financial modeling.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
12 toolscalculate_capm_cost_of_equityARead-onlyIdempotentInspect
Calculate the cost of equity using the Capital Asset Pricing Model (CAPM): the risk-free rate plus beta times the market risk premium. Formula: Re = Rf + beta x (Rm - Rf). WHEN TO USE: Use to estimate the required return on equity — an input to WACC (calculate_wacc) and DCF discount rates, or as a standalone return hurdle. WHEN NOT TO USE: Do NOT use for companies where beta is a poor risk measure (private companies without a traded beta — consider building up from comparable betas via calculate_unlever_beta / calculate_relever_beta first). BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive; identical inputs always produce identical outputs. Division by zero, non-finite inputs, or mathematically undefined combinations return an explicit error instead of a number. RETURNS: JSON object { cost_of_equity: decimal (e.g. 0.115 = 11.5%), cost_of_equity_pct: number (e.g. 11.5), inputs }. PARAMETERS: risk_free_rate (required): Risk-free rate as a decimal, e.g. 0.04 = 4% (typically the 10-year government bond yield; never pass percentage points). beta (required): Equity beta (levered, if the company has debt), e.g. 1.2. Use unlevered/relevered betas when comparing capital structures. market_return (required): Expected market return (Rm) as a decimal, e.g. 0.10 = 10% (never pass percentage points). The market risk premium is computed internally as Rm - Rf.
| Name | Required | Description | Default |
|---|---|---|---|
| beta | Yes | Equity beta (levered, if the company has debt), e.g. 1.2. Use unlevered/relevered betas when comparing capital structures. | |
| market_return | Yes | Expected market return (Rm) as a decimal, e.g. 0.10 = 10% (never pass percentage points). The market risk premium is computed internally as Rm - Rf. | |
| risk_free_rate | Yes | Risk-free rate as a decimal, e.g. 0.04 = 4% (typically the 10-year government bond yield; never pass percentage points). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds non-redundant behavioral detail: pure deterministic calculation, no network or storage access, identical inputs always produce identical outputs, and explicit error handling for undefined mathematical combinations. This goes well beyond the annotation bits, and it does not contradict them.
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?
The description is well-structured with scannable sections (formula, when to use, when not, behavior, returns, parameters) and front-loads the core formula. It earns most of its sentences, but the parameters section duplicates the schema descriptions almost word-for-word, which adds length without additional value. Still, overall information density is high and no fluff is present.
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?
There is no output schema, yet the description explicitly documents the return shape (JSON with cost_of_equity, cost_of_equity_pct, inputs) and gives examples. Combined with the formula, usage guidance, and error behavior, an agent has everything needed to call this tool correctly. The description is fully self-contained.
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%, and the parameter text in the description is nearly verbatim identical to the schema property descriptions (e.g., beta's 'levered, if the company has debt' and unit examples). It reinforces the decimal-vs-percentage warning, but adds no new information beyond what the schema already provides. 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?
The description opens with a specific verb and resource ('Calculate the cost of equity using CAPM') and includes the exact formula, leaving no ambiguity about what the tool computes. It also differentiates from siblings by explicitly naming its role as an input to WACC and DCF, making it clear this is not one of the valuation multiples or cash-flow tools.
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?
The 'WHEN TO USE' section gives concrete applications (WACC input, DCF discount rate, standalone hurdle), and the 'WHEN NOT TO USE' section names the exact alternative tools (calculate_unlever_beta / calculate_relever_beta) and the condition (private companies without a traded beta) that should route the agent elsewhere. This is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_dcfARead-onlyIdempotentInspect
Compute a Discounted Cash Flow (DCF) valuation: enterprise value from projected free cash flows plus a Gordon-growth terminal value. WHEN TO USE: to value a company or asset from its projected free cash flows, WACC and perpetual terminal growth rate (standard corporate/asset valuation). WHEN NOT TO USE: for a single-exit lump-sum investment (use calculate_irr), or when you need the discount rate itself (use calculate_wacc). BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive. Terminal value uses the Gordon Growth Model; it is only defined when wacc is strictly greater than terminal_growth_rate. RETURNS: JSON object { inputs, results: { present_value, terminal_value, enterprise_value } }, each rounded to 2dp. present_value is the discounted explicit-period FCFs; enterprise_value = present_value + discounted terminal value (debt and cash are NOT netted — this is enterprise value, not equity value). PARAMETERS: free_cash_flows (array of per-period projected free cash flows, typically positive; the first element is discounted by one period), wacc (decimal, e.g. 0.10 = 10% — never pass percentage points; must be > terminal_growth_rate), terminal_growth_rate (decimal perpetual growth rate, e.g. 0.03 = 3% — never pass percentage points; must be < wacc).
| Name | Required | Description | Default |
|---|---|---|---|
| wacc | Yes | Weighted average cost of capital as a decimal, e.g. 0.10 = 10% (never pass percentage points). Must be strictly greater than terminal_growth_rate. | |
| free_cash_flows | Yes | Projected free cash flows per period, e.g. [5000000, 6000000, 7000000, 8000000, 9000000]. Typically positive; first element discounted one period. | |
| terminal_growth_rate | Yes | Perpetual terminal growth rate as a decimal, e.g. 0.03 = 3% (never pass percentage points). Must be strictly less than wacc, otherwise terminal value is undefined. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses that the tool is a 'pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive,' which aligns with and expands on the annotations. It also reveals important behavioral constraints: terminal value is only defined when wacc is strictly greater than terminal_growth_rate, debt and cash are not netted, and results are rounded to 2dp. This goes well beyond the annotations and helps an agent set correct expectations.
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?
The description is organized with clear labeled sections: purpose, when to use, when not to use, behaviour, returns, and parameters. It is detailed but every sentence adds value, and the most important scoping information is front-loaded in the first sentence.
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?
There is no output schema, so the description correctly explains the return shape: a JSON object with inputs and results including present_value, terminal_value, and enterprise_value. It also covers the critical model constraints, rounding behavior, and the distinction between enterprise and equity value, making the tool safe to invoke without further information.
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%, and every parameter already has a thorough schema description including decimal format, constraints, and the discounting convention. The description's PARAMETERS section largely restates this information rather than adding new meaning, so the high-coverage 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?
The description opens with a specific verb and resource: 'Compute a Discounted Cash Flow (DCF) valuation: enterprise value from projected free cash flows plus a Gordon-growth terminal value.' This precisely identifies what the tool does and clearly separates it from valuation siblings. It also explicitly names alternatives in the WHEN NOT TO USE section, so an agent can disambiguate it from calculate_irr and calculate_wacc.
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?
The description contains a dedicated WHEN TO USE section that states the intended scenario: valuing a company or asset from projected free cash flows, WACC, and perpetual terminal growth rate. It also provides explicit WHEN NOT TO USE guidance, naming calculate_irr for single-exit lump-sum investments and calculate_wacc when the discount rate itself is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_enterprise_valueARead-onlyIdempotentInspect
Calculate enterprise value (EV): the total value of a business to all capital providers — equity value plus net debt (total debt minus cash and equivalents). Formula: EV = Equity Value + Total Debt - Cash & Equivalents. WHEN TO USE: Use as the capital-structure-neutral measure of a company’s total value — the standard starting point for valuation multiples (EV/EBITDA, EV/Revenue) and M&A transaction values. WHEN NOT TO USE: Do NOT confuse EV with equity value (market cap) — EV is what you would pay to own the whole enterprise including its debt; use equity value for per-share figures. BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive; identical inputs always produce identical outputs. Division by zero, non-finite inputs, or mathematically undefined combinations return an explicit error instead of a number. RETURNS: JSON object { enterprise_value: number (currency), inputs }. PARAMETERS: equity_value (required): Equity value / market capitalisation, e.g. 5000000. Must be >= 0. total_debt (required): Total interest-bearing debt (short + long term), e.g. 2000000. Must be >= 0. cash_and_equivalents (required): Cash and cash equivalents to subtract, e.g. 500000. Must be >= 0.
| Name | Required | Description | Default |
|---|---|---|---|
| total_debt | Yes | Total interest-bearing debt (short + long term), e.g. 2000000. Must be >= 0. | |
| equity_value | Yes | Equity value / market capitalisation, e.g. 5000000. Must be >= 0. | |
| cash_and_equivalents | Yes | Cash and cash equivalents to subtract, e.g. 500000. Must be >= 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior, and the description adds deterministic behavior and explicit error handling for invalid or non-finite inputs. The mention of division by zero is slightly irrelevant since the formula has no division, but it does not contradict the annotations.
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?
The structured sections make the description scannable, and the core formula is front-loaded. Some redundancy exists in the BEHAVIOUR section, where annotation facts are repeated and the division-by-zero note is irrelevant, but overall the text is efficient.
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 pure calculation tool with three fully documented parameters and strong annotations, the description includes the formula, usage boundaries, return shape, and error behavior. Since there is no output schema, the explicit RETURNS line adds necessary context, and nothing important 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?
The schema already describes all three parameters fully with constraints and examples (100% coverage), so the description does not need to add much. The formula maps equity_value, total_debt, and cash_and_equivalents to the calculation, but adds no new semantic detail beyond the schema.
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?
The description opens with a specific verb and resource ('Calculate enterprise value') and provides the exact formula, distinguishing EV from equity value. It also clearly separates this from sibling valuation-multiple tools by focusing on the base EV calculation.
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?
The WHEN TO USE section names valuation multiples and M&A transaction values, while WHEN NOT TO USE explicitly warns against confusing EV with equity value and directs per-share use to equity value. This gives an agent both inclusion and exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_ev_to_ebitdaARead-onlyIdempotentInspect
Calculate the EV/EBITDA multiple: enterprise value divided by EBITDA — the most widely used valuation multiple for comparing companies independent of capital structure, tax and depreciation policy. Formula: EV/EBITDA = Enterprise Value / EBITDA. WHEN TO USE: Use for relative valuation of cash-generative businesses against peer multiples or transaction comps; a lower multiple may indicate relative undervaluation (or justified risk). WHEN NOT TO USE: Do NOT use when EBITDA is negative or near zero, or for early-stage companies with no meaningful EBITDA — the multiple is meaningless there (use EV/Revenue). BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive; identical inputs always produce identical outputs. Division by zero, non-finite inputs, or mathematically undefined combinations return an explicit error instead of a number. RETURNS: JSON object { ev_to_ebitda: number (e.g. 8.5 = 8.5x), inputs }. PARAMETERS: enterprise_value (required): Enterprise value in currency units, e.g. 10000000. Must be > 0. ebitda (required): Earnings before interest, tax, depreciation and amortisation, e.g. 1200000. Must be > 0 for a meaningful multiple.
| Name | Required | Description | Default |
|---|---|---|---|
| ebitda | Yes | Earnings before interest, tax, depreciation and amortisation, e.g. 1200000. Must be > 0 for a meaningful multiple. | |
| enterprise_value | Yes | Enterprise value in currency units, e.g. 10000000. Must be > 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description meaningfully goes beyond them by stating the calculation is pure and deterministic, has no network or storage access, and returns an explicit error for division by zero, non-finite inputs, or mathematically undefined combinations. This gives the agent a clear failure-mode model.
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?
The description is well organized with capitalized section headers and front-loads the formula and purpose. It is slightly longer than strictly necessary because the parameter section largely mirrors the input schema, but each section still serves a clear operational purpose.
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 two-parameter pure calculation with no output schema, the description completely specifies inputs, formula, output shape ({ ev_to_ebitda, inputs }), and error behavior. Nothing an agent needs to correctly select and invoke the tool 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?
The input schema already documents both parameters with descriptions, examples, and exclusiveMinimum constraints, so schema coverage is 100%. The description repeats this content and adds formula-level rationale for why EBITDA must be positive, but it does not materially extend parameter semantics beyond what the schema provides.
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?
The description names the exact verb and resource ('calculate the EV/EBITDA multiple') and gives the formula: EV/EBITDA = Enterprise Value / EBITDA. It also distinguishes this tool from calculate_ev_to_revenue by explicitly noting that EV/Revenue is the correct alternative when EBITDA is negative or near zero.
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?
Explicit 'WHEN TO USE' and 'WHEN NOT TO USE' sections state the intended context (relative valuation against peer multiples or transaction comps) and exclude cases with negative/near-zero EBITDA or early-stage companies. The description directly names the alternative tool, calculate_ev_to_revenue, leaving no ambiguity about routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_ev_to_revenueARead-onlyIdempotentInspect
Calculate the EV/Revenue (EV/Sales) multiple: enterprise value divided by revenue — a valuation multiple usable for companies with thin, negative or zero EBITDA (e.g. high-growth or pre-profit businesses). Formula: EV/Revenue = Enterprise Value / Revenue. WHEN TO USE: Use for valuing pre-profit / high-growth companies, or as a cross-check alongside EV/EBITDA for mature ones. WHEN NOT TO USE: Do NOT use revenue multiples alone — they ignore profitability entirely (a company can have a low EV/S and still destroy value); pair with margin and growth context. BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive; identical inputs always produce identical outputs. Division by zero, non-finite inputs, or mathematically undefined combinations return an explicit error instead of a number. RETURNS: JSON object { ev_to_revenue: number (e.g. 3.2 = 3.2x), inputs }. PARAMETERS: enterprise_value (required): Enterprise value in currency units, e.g. 10000000. Must be > 0. revenue (required): Revenue (net sales) over the trailing period, e.g. 3100000. Must be > 0.
| Name | Required | Description | Default |
|---|---|---|---|
| revenue | Yes | Revenue (net sales) over the trailing period, e.g. 3100000. Must be > 0. | |
| enterprise_value | Yes | Enterprise value in currency units, e.g. 10000000. Must be > 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description reinforces these by stating 'pure deterministic calculation,' 'no side effects,' 'idempotent and non-destructive,' and 'identical inputs always produce identical outputs.' It goes beyond the annotations by disclosing error behavior for division by zero and non-finite inputs, which is valuable operational context, though some redundancy with annotations exists.
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?
The description is well-organized with clear labeled sections: formula, when to use, when not to use, behavior, returns, and parameters, and it front-loads the core formula. It is somewhat repetitive around idempotence and non-destructiveness already covered by annotations, but every section still adds practical value and no unnecessary fluff.
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 two-parameter deterministic calculator with no output schema, the description is complete: it defines the formula, return shape, error behavior, parameter constraints, and usage boundaries. The explicit JSON return example ('{ ev_to_revenue: number, inputs }') compensates for the absent output schema, so an agent has everything needed to call and interpret the result.
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% and the parameter descriptions in the schema already explain enterprise_value and revenue, their units, examples, and the >0 constraint. The tool description repeats these rather than adding materially new meaning, so it meets the baseline expected when the schema carries the parameter documentation weight.
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?
The description states a specific verb ('Calculate'), a precise resource (EV/Revenue multiple), and gives the formula plus a clear characterization of when the metric is relevant (thin/negative/zero EBITDA, high-growth or pre-profit companies). It differentiates itself from sibling EV/EBITDA by explicitly scoping to pre-profit companies and framing EV/EBITDA as the mature-company counterpart.
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?
The description includes explicit 'WHEN TO USE' and 'WHEN NOT TO USE' guidance, naming the alternative (EV/EBITDA) and warning against relying on revenue multiples alone. It even instructs pairing with margin and growth context, which is actionable and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_irrARead-onlyIdempotentInspect
Calculate the Internal Rate of Return (IRR), MOIC and an IRR sensitivity table for a single lump-sum equity investment that returns one exit value after a whole-year hold period. WHEN TO USE: you have an upfront investment amount, a single exit value and a hold period in whole years (standard PE/VC single-exit scenario) and need the annualised return, the money multiple, or a return stress-test. The result also includes a plain-language interpretation benchmarked against VC/PE/public-market return hurdles. WHEN NOT TO USE: for cash-flow streams with multiple intermediate distributions (use calculate_npv or calculate_moic on the full cash-flow array), or when you only need the sensitivity grid (use irr_sensitivity). BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access, no randomness; idempotent and non-destructive; identical inputs always produce identical outputs. IRR is solved over the cash-flow schedule [-investment, 0, ..., exit_value] via Newton-Raphson with bisection fallback. RETURNS: JSON object with concept, definition, formula, calculation (irr as a percentage string, moic as a multiple, cash_flows array), interpretation, and sensitivity (byMultiple, byHoldPeriod). PARAMETERS: initial_investment (number > 0, currency units), exit_value (number > 0, same currency units), hold_period (integer >= 1 whole years), currency (optional string: GBP default, USD, EUR, JPY, CHF — display only, no conversion).
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | Optional display currency code. Defaults to GBP. Used only for formatting output labels — no FX conversion is performed. | GBP |
| exit_value | Yes | Value returned at exit, same currency units as initial_investment, e.g. 250000. Must be positive. | |
| hold_period | Yes | Holding period in whole years, e.g. 5. Must be a positive integer (1, 2, 3, ...). | |
| initial_investment | Yes | Amount invested up front, in currency units, e.g. 100000. Must be positive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark read-only and idempotent, and the description strengthens this by detailing determinism, no side effects/network/storage/randomness, and the Newton-Raphson-with-bisection solution method. No contradiction with annotations.
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?
The description is organized into labeled sections (WHEN, WHEN NOT, BEHAVIOUR, RETURNS, PARAMETERS) and every sentence contributes a distinct fact. It is detailed but efficiently front-loaded with the core scope, then alternatives, then behavior.
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 tool with no output schema, the RETURNS section lists the full JSON shape including sensitivity keys, and the parameter constraints are fully covered. Usage conditions, behavior, and return contract are all present, making safe invocation fully specified.
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% with field descriptions already explaining constraints and currency semantics, so the baseline is 3. The description's PARAMETERS section mostly mirrors the schema plus the display-only currency note; it adds little beyond the structured schema.
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?
Opens with a specific verb and resource: 'Calculate the Internal Rate of Return (IRR), MOIC and an IRR sensitivity table' for a precisely scoped single-exit scenario. The scope sentence and WHEN NOT TO USE references to calculate_npv/calculate_moic/irr_sensitivity distinguish it from siblings.
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?
Explicit WHEN TO USE block gives concrete preconditions (upfront amount, single exit value, whole-year hold) and expected outputs. WHEN NOT TO USE names alternatives and their trigger conditions, so an agent can route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_moicARead-onlyIdempotentInspect
Calculate the Multiple on Invested Capital (MOIC): total distributions divided by total invested, with no discounting and no time value. WHEN TO USE: for a quick money-multiple answer from a cash-flow schedule when you do not need a discount rate or annualised return. WHEN NOT TO USE: when time value of money matters (use calculate_irr for annualised return, or calculate_npv for discounted value). BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive. MOIC is computed as sum of positive cash flows divided by sum of absolute negative cash flows; returns 0 if there is no invested capital. RETURNS: JSON object { moic: number rounded to 2dp (e.g. 2.5 = 2.5x), cash_flows }. PARAMETERS: cash_flows (ordered number array starting at time 0; negatives are investments, positives are distributions), e.g. [-100000, 0, 0, 0, 0, 250000].
| Name | Required | Description | Default |
|---|---|---|---|
| cash_flows | Yes | Ordered cash flows starting at time 0. Negative = invested capital, positive = distributions. Example: [-100000, 0, 0, 0, 0, 250000]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the 'BEHAVIOUR' section states it is a pure deterministic calculation with no side effects, network, or storage access, and idempotent/non-destructive. It also discloses the edge case: returns 0 when there is no invested capital. This adds value beyond the readOnlyHint and idempotentHint annotations.
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?
The description is well-structured with labeled sections, front-loaded with the core purpose. Although longer than many tool descriptions, every sentence adds useful operational guidance — usage conditions, behavior, return format, and parameter semantics — with no filler or redundant restatement.
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 single-parameter calculation tool with fully annotated safety hints, the description covers everything needed to invoke it correctly: formula, input semantics, edge case, return shape, and differentiation from siblings. The absence of an output schema is compensated by the explicit RETURNS section describing { moic, cash_flows }.
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% for the single cash_flows parameter, so the baseline is 3. The description adds the computational formula (sum of positive cash flows divided by sum of absolute negative cash flows) and clarifies the ordered nature starting at time 0, which is more explicit than the schema. It mostly reinforces the schema but adds the formula and edge-case behavior.
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?
The description opens with a specific verb and resource: 'Calculate the Multiple on Invested Capital (MOIC): total distributions divided by total invested, with no discounting and no time value.' It clearly defines what the tool computes and the key formula, distinguishing it from financial metrics like IRR and NPV by stating it ignores time value.
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?
The description explicitly provides 'WHEN TO USE' and 'WHEN NOT TO USE' sections, naming the alternative tools (calculate_irr, calculate_npv) and the exact conditions that should route an agent to them. This leaves no ambiguity about when the tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_npvARead-onlyIdempotentInspect
Calculate the Net Present Value (NPV) of an ordered cash-flow series discounted at a given rate. The first cash flow is treated as time 0 and is NOT discounted (typically the negative initial investment). WHEN TO USE: to evaluate whether an investment creates or destroys value at a required discount rate, or to compare competing projects on a present-value basis when you have a full cash-flow schedule. WHEN NOT TO USE: for a single lump-sum investment with one exit value (use calculate_irr), or when you only need a money multiple with no time value (use calculate_moic). BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive; identical inputs always produce identical outputs. RETURNS: JSON object { npv: number rounded to 2dp, rate, cash_flows }. A positive NPV means the investment clears the discount-rate hurdle. PARAMETERS: rate (decimal discount rate, e.g. 0.10 = 10% — express as a decimal, never as percentage points), cash_flows (ordered number array starting at time 0; negative values are investments/outflows, positive values are distributions/inflows), e.g. [-100000, 0, 0, 0, 0, 250000].
| Name | Required | Description | Default |
|---|---|---|---|
| rate | Yes | Discount rate as a decimal, e.g. 0.10 = 10%. Never pass percentage points (10 is invalid for 10%). | |
| cash_flows | Yes | Ordered cash flows starting at time 0 (first element is not discounted). Negative = investment/outflow, positive = distribution/inflow. Example: [-100000, 0, 0, 0, 0, 250000]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context: 'pure deterministic calculation — no side effects, no network or storage access; identical inputs always produce identical outputs.' This goes beyond the structured annotations and helps the agent understand the tool's operational profile.
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?
The description is well-structured with labeled sections (WHEN TO USE, WHEN NOT TO USE, BEHAVIOUR, RETURNS, PARAMETERS). Every sentence serves a purpose, and the key definition is front-loaded. Length is justified by the tool's complexity and the need to disambiguate from multiple siblings.
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?
The description covers the computation rule, parameter semantics, return shape, decimal format, sign conventions, and sibling alternatives. Since there is no output schema, the explicit 'RETURNS' section is especially valuable. Nothing critical is missing for an agent to call this tool 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%, and the schema already explains both parameters in detail, including the decimal-rate warning and the time-zero treatment. The description repeats these semantics and adds an example, but does not add substantial meaning beyond the schema.
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?
The description states a specific verb and resource: 'Calculate the Net Present Value (NPV) of an ordered cash-flow series discounted at a given rate.' It also clarifies the time-zero treatment of the first cash flow. It clearly distinguishes itself from siblings like calculate_irr and calculate_moic by naming those alternatives for different use cases.
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?
The description provides explicit 'WHEN TO USE' and 'WHEN NOT TO USE' sections with named alternatives (calculate_irr, calculate_moic), making it unambiguous when an agent should select this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_relever_betaARead-onlyIdempotentInspect
Relever an unlevered (asset) beta to a target capital structure using the Hamada formula — restoring financial risk for the specific debt/equity mix of the company or deal being valued. Formula: Beta(levered) = Beta(unlevered) x (1 + (1 - tax rate) x Debt/Equity). WHEN TO USE: Use AFTER unlevering comparable betas: apply the average unlevered beta to your target company’s (or transaction’s) capital structure to obtain the beta for WACC. WHEN NOT TO USE: Do NOT relever onto an unrealistic target structure — extreme leverage produces extreme betas that may overstate risk; sanity-check the resulting cost of equity. BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive; identical inputs always produce identical outputs. Division by zero, non-finite inputs, or mathematically undefined combinations return an explicit error instead of a number. RETURNS: JSON object { levered_beta: number (e.g. 1.15), inputs }. PARAMETERS: unlevered_beta (required): Unlevered (asset) beta, e.g. 0.85. Must be > 0. tax_rate (required): Corporate tax rate as a decimal between 0 and 1, e.g. 0.25 = 25%. debt_to_equity (required): Target debt-to-equity ratio (market values preferred), e.g. 0.6 = 0.6x. Must be >= 0.
| Name | Required | Description | Default |
|---|---|---|---|
| tax_rate | Yes | Corporate tax rate as a decimal between 0 and 1, e.g. 0.25 = 25%. | |
| debt_to_equity | Yes | Target debt-to-equity ratio (market values preferred), e.g. 0.6 = 0.6x. Must be >= 0. | |
| unlevered_beta | Yes | Unlevered (asset) beta, e.g. 0.85. Must be > 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses additional useful behavior: the calculation is deterministic with no side effects, and invalid inputs such as division by zero or non-finite values return explicit errors rather than numbers. This goes well beyond what annotations already state and prepares the agent for error handling.
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?
The description is well-structured with clear headings (formula, WHEN TO USE, WHEN NOT TO USE, BEHAVIOUR, RETURNS, PARAMETERS) and is front-loaded with the key formula and purpose. It is somewhat lengthy, and the PARAMETERS section repeats information already present in the schema, which is slightly redundant. Overall it earns its length with actionable guidance, just not perfect conciseness.
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?
The description fully covers the tool's purpose, formula, usage conditions, error behavior, and return format. Since there is no output schema, the RETURNS section specifying the JSON object structure is especially valuable. All necessary information for an agent to correctly select and invoke this tool is present.
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 the baseline is 3. The description's PARAMETERS section largely duplicates the schema text rather than adding new meaning. It does reinforce the constraints and gives examples, but the formula and the relationship between parameters are already evident from the description's opening. No significant semantic value is added beyond the schema.
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?
The description opens with a precise verb and object: 'Relever an unlevered (asset) beta to a target capital structure using the Hamada formula.' It also states the exact formula and the role of the tool in restoring financial risk for a specific debt/equity mix. This clearly distinguishes it from its sibling calculator, calculate_unlever_beta, by focusing on the relevering direction.
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?
The description contains explicit WHEN TO USE and WHEN NOT TO USE sections. It instructs the agent to apply this tool after unlevering comparable betas and warns against relevering onto unrealistic capital structures. This gives clear operational guidance and a boundary condition, leaving no ambiguity about when to invoke this tool versus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_unlever_betaARead-onlyIdempotentInspect
Unlever a (levered) equity beta to its asset beta using the Hamada formula — removing the financial-risk effect of debt so betas of companies with different capital structures can be compared. Formula: Beta(unlevered) = Beta(levered) / (1 + (1 - tax rate) x Debt/Equity). WHEN TO USE: Use when valuing a private company or a deal with a different capital structure than the public comparable — unlever the comps’ betas, average them, then relever at your target structure. WHEN NOT TO USE: Do NOT unlever with an inconsistent tax rate or debt/equity ratio — the result is only as clean as its inputs; for companies with significant non-debt liabilities consider a more advanced formula. BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive; identical inputs always produce identical outputs. Division by zero, non-finite inputs, or mathematically undefined combinations return an explicit error instead of a number. RETURNS: JSON object { unlevered_beta: number (e.g. 0.85), inputs }. PARAMETERS: levered_beta (required): The observed (levered) equity beta of the comparable company, e.g. 1.2. Must be > 0. tax_rate (required): Corporate tax rate as a decimal between 0 and 1, e.g. 0.25 = 25%. debt_to_equity (required): Debt-to-equity ratio of the company whose beta is being unlevered (market values preferred), e.g. 0.5 = 0.5x. Must be >= 0.
| Name | Required | Description | Default |
|---|---|---|---|
| tax_rate | Yes | Corporate tax rate as a decimal between 0 and 1, e.g. 0.25 = 25%. | |
| levered_beta | Yes | The observed (levered) equity beta of the comparable company, e.g. 1.2. Must be > 0. | |
| debt_to_equity | Yes | Debt-to-equity ratio of the company whose beta is being unlevered (market values preferred), e.g. 0.5 = 0.5x. Must be >= 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial detail beyond the annotations: 'pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive; identical inputs always produce identical outputs'. It also discloses error handling for edge cases like division by zero and non-finite inputs, which is important for a calculation tool.
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?
The description is well-structured with clear labeled sections: formula, WHEN TO USE, WHEN NOT TO USE, BEHAVIOUR, RETURNS, PARAMETERS. While longer than the minimal examples, every section earns its place and the core purpose is front-loaded in the first sentence.
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 deterministic 3-parameter calculation, the description covers the formula, use cases, exclusions, parameter constraints, return format, and edge-case behavior. It also differentiates from the relever_beta sibling. Nothing an agent needs to invoke this tool 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% and the parameter section largely repeats the schema, so the baseline is 3. However, the description adds practical context such as 'market values preferred' for debt_to_equity and ties each parameter to the Hamada formula with concrete examples, which enhances semantic understanding.
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?
The description opens with a specific verb and resource: 'Unlever a (levered) equity beta to its asset beta using the Hamada formula'. It clearly distinguishes the tool from its siblings, especially calculate_relever_beta, by explaining the direction of the transformation and the goal of comparability across capital structures.
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?
Explicit WHEN TO USE and WHEN NOT TO USE sections provide direct guidance. The description explains the typical workflow ('unlever the comps’ betas, average them, then relever at your target structure') and gives an exclusion condition with an alternative ('for companies with significant non-debt liabilities consider a more advanced formula').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_waccARead-onlyIdempotentInspect
Calculate the Weighted Average Cost of Capital (WACC): the blended after-tax cost of a company's equity and debt capital, weighted by market values. WHEN TO USE: to determine the discount rate for a DCF valuation from equity market value, debt market value, costs of capital and corporate tax rate. WHEN NOT TO USE: when you already have the discount rate, or for the full valuation itself (use calculate_dcf). BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive. Formula: (E/V) x Re + (D/V) x Rd x (1 - tax_rate), where V = equity_value + debt_value; returns 0 if total value is 0. RETURNS: JSON object { wacc: decimal rounded to 6dp (e.g. 0.105), wacc_percent: percentage rounded to 2dp (e.g. 10.5), inputs }. PARAMETERS: equity_value (market value of equity, >= 0), debt_value (market value of debt, >= 0), cost_of_equity (decimal, e.g. 0.12 = 12%), cost_of_debt (decimal, e.g. 0.06 = 6%), tax_rate (decimal 0-1, e.g. 0.25 = 25%). All rates are decimals, never percentage points.
| Name | Required | Description | Default |
|---|---|---|---|
| tax_rate | Yes | Corporate tax rate as a decimal between 0 and 1, e.g. 0.25 = 25%. | |
| debt_value | Yes | Market value of debt, >= 0, e.g. 5000000. | |
| cost_of_debt | Yes | Cost of debt as a decimal, e.g. 0.06 = 6%. Never pass percentage points. | |
| equity_value | Yes | Market value of equity, >= 0, e.g. 10000000. | |
| cost_of_equity | Yes | Cost of equity as a decimal, e.g. 0.12 = 12%. Never pass percentage points. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds valuable behavioral context: it is a pure deterministic calculation with no side effects, no network/storage access, and returns 0 if total value is 0. It also discloses the exact formula and output rounding behavior, which the annotations do not cover.
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?
The description is well-structured with labeled sections for usage, behavior, formula, returns, and parameters. Every section adds necessary operational information, and the purpose is front-loaded in the first sentence.
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 no output schema present, the description fully specifies the return shape including field names, rounding precision, and example values. It also covers the edge case of zero total value, making the tool safe to invoke without external documentation.
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?
Although the schema already covers all five parameters, the description adds crucial usage meaning such as 'all rates are decimals, never percentage points' and concrete examples like '0.12 = 12%'. This reduces the risk of misinterpreting the numeric format for cost_of_equity and cost_of_debt.
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?
The description states a specific verb ('Calculate') and resource ('Weighted Average Cost of Capital') with a clear definition and formula. It also explicitly distinguishes this tool from calculate_dcf by saying it is not for the full valuation itself, making it easy for an agent to select correctly among siblings.
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?
The description provides explicit 'WHEN TO USE' and 'WHEN NOT TO USE' guidance, including the condition for using calculate_dcf instead. This leaves no ambiguity about when the tool is appropriate and names the key alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
irr_sensitivityARead-onlyIdempotentInspect
Compute an IRR sensitivity grid across a range of exit multiples and hold periods for a single lump-sum investment. WHEN TO USE: to stress-test how the annualised return varies with exit multiple and holding period before committing to an investment. Complements calculate_irr. WHEN NOT TO USE: when you need one precise IRR for a known exit value (use calculate_irr), or a full valuation (use calculate_dcf). BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive. NOTE ON GRID GEOMETRY: the byMultiple grid is computed at the SECOND hold period in hold_periods (default 5 years); the byHoldPeriod grid is computed at a 2.5x exit multiple. RETURNS: JSON object { byMultiple: { "2.0x": 14.9, ... } with IRR values as percentage numbers rounded to 1dp, byHoldPeriod: { "5y": 18.4, ... } }. PARAMETERS: initial_investment (number > 0), exit_multiples (optional array of numbers to test, default [1.5, 2.0, 2.5, 3.0, 3.5]), hold_periods (optional array of positive integers (years) to test, default [3, 5, 7, 10]).
| Name | Required | Description | Default |
|---|---|---|---|
| hold_periods | No | Hold periods in whole years to test, e.g. [3, 5, 7, 10]. Defaults to [3, 5, 7, 10]. | |
| exit_multiples | No | Exit multiples to test, e.g. [2.0, 2.5, 3.0, 4.0, 5.0]. Defaults to [1.5, 2.0, 2.5, 3.0, 3.5]. | |
| initial_investment | Yes | Amount invested up front, in currency units, e.g. 100000. Must be positive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by explicitly stating 'pure deterministic calculation — no side effects, no network or storage access' and clarifies grid geometry (byMultiple uses second hold period, byHoldPeriod uses 2.5x), which is key behavioral information not in the schema. Minor redundancy with annotations but no contradiction.
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?
The description is organized into clear labeled sections, front-loads purpose, and every section earns its place. While it is longer than average, the complexity of the tool (grid geometry, return format, usage boundaries) justifies the length. The WHEN/WHEN NOT structure and RETURNS section make it highly scannable for an agent.
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?
Given the tool has no output schema, the description fully compensates by documenting the return shape, rounding behavior, grid geometry, defaults, and side-effect profile. An agent has everything needed to call this tool correctly: parameters, defaults, output structure, and usage conditions. No critical gap remains.
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 the schema already documents each parameter, including defaults and constraints. The description's PARAMETERS section mostly repeats what the schema provides (types, defaults, positivity). It adds no meaningful new parameter semantics beyond the schema, so the baseline 3 is appropriate.
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?
The description opens with a specific verb and object: 'Compute an IRR sensitivity grid across a range of exit multiples and hold periods.' It immediately establishes the tool's scope (sensitivity analysis, single lump-sum investment) and clearly distinguishes it from calculate_irr, which computes a single IRR. This makes sibling differentiation trivial.
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?
The description explicitly states WHEN TO USE ('stress-test how the annualised return varies... before committing to an investment'), WHEN NOT TO USE ('when you need one precise IRR'), and names the exact alternatives (calculate_irr, calculate_dcf). This is textbook usage guidance.
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. Dates show when Glama detected each change.
12 tool updates
- First observed
calculate_capm_cost_of_equity - First observed
calculate_dcf - First observed
calculate_enterprise_value - First observed
calculate_ev_to_ebitda - First observed
calculate_ev_to_revenue - First observed
calculate_irr - First observed
calculate_moic - First observed
calculate_npv - First observed
calculate_relever_beta - First observed
calculate_unlever_beta - First observed
calculate_wacc - First observed
irr_sensitivity
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Deterministic time-value-of-money and fund-performance tools for AI agents — future value, present value, CAGR, annuities, perpetuities, loan payments, payback, discounted payback, DPI, RVPI and TVPI via Model Context Protocol. Useful for corporate finance, financial projections, financial analysis, quantitative analysis, financial formulas and financial modeling.
Deterministic profitability and market-value analysis tools for AI agents — margins, ROA, ROE, ROCE, ROIC, EPS, P/E, P/B, dividend yield and payout ratio via Model Context Protocol. Useful for corporate finance, equity analysis, financial analysis, quantitative analysis, financial formulas and financial modeling.
Deterministic liquidity and leverage ratio tools for AI agents — current, quick and cash ratios, defensive interval, debt-to-equity, debt-to-assets, equity multiplier and interest coverage via Model Context Protocol. Useful for corporate finance, credit analysis, financial analysis, financial formulas and financial modeling.
Deterministic operational-efficiency ratio tools for AI agents — asset, fixed-asset, inventory, receivables and payables turnover, days outstanding measures and cash conversion cycle via Model Context Protocol. Useful for corporate finance, financial analysis, working-capital analysis, financial formulas and financial modeling.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI assistants to perform multi-stage residual income projections, discounting, and enterprise value bridging analysis using standardized financial data inputs.1MIT
- AlicenseNot gradedqualityBmaintenanceStandardized DCF valuation engine for stocks (A-shares, Hong Kong, US, Japan). One run_dcf tool with an analyst-style two-phase flow: baseline valuation from 5-year historicals, then a final valuation with reasoned assumptions — value bridge, sensitivity matrix, reverse DCF. Deterministic: same inputs, same result.1AGPL 3.0
- AlicenseAqualityAmaintenance63 deterministic quant computation tools for autonomous financial agents. Options pricing, derivatives, risk metrics, portfolio optimization, statistics, crypto/DeFi, macro/FX, time value of money. 1,000 free calls/day, no signup required.7411MIT
- AlicenseAqualityAmaintenanceInstitutional-grade quantitative stock analysis and research signals for AI agents via the Model Context Protocol (MCP).1091MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool maps to a distinct financial formula or calculation, and the when-to-use/when-not-to-use guidance cleanly separates closely related cash-flow metrics like NPV, IRR, and MOIC as well as CAPM, WACC, and DCF. There is no pair of tools that appears to perform the same operation.
The overwhelming majority of tools follow a consistent calculate_<metric> snake_case pattern with descriptive names. irr_sensitivity breaks the pattern by omitting the calculate_ prefix, and mixing expanded names like cost_of_equity with abbreviations like wacc and moic is a minor deviation.
Twelve tools is well within the ideal range for a focused financial-calculations server. Each tool covers a distinct valuation, discount-rate, or return-metric need without redundancy, so the count feels appropriately scoped.
The tool set covers the core valuation workflow: cost of equity, beta unlevering/relevering, WACC, DCF, enterprise-value multiples, and investment return metrics. It lacks a reverse equity-value calculation and an equity-side multiple like P/E, but those are workable gaps rather than severe dead ends.