Skip to main content
Glama

PoliErgaleio

Server Details

Bilingual Cyprus financial tools for income tax, mortgages, pensions, retirement, budgeting and portfolios. Public calculators require no account. Six saved-calculation tools require authorization to your own PoliErgaleio account. OAuth clients currently need operator-approved onboarding; password-protected saves must be opened on poliergaleio.com. Documentation: https://poliergaleio.com/developers

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 25 tools

Disambiguation4/5

The tools mostly target clearly distinct finance tasks, with strong separation between parsers, calculators, and saved-calculation CRUD. A few neighboring areas could still be confused in practice, such as income-tax estimation versus director-remuneration optimization, or portfolio analysis versus investment-vehicle comparison, but the descriptions provide enough guidance.

Naming Consistency5/5

Names follow a consistent snake_case verb_noun convention throughout: calculate_*, compare_*, simulate_*, parse_*, save/list/load/update/delete_*, and get_*. The verbs vary appropriately by action while the overall pattern remains predictable.

Tool Count3/5

The 25-tool surface is at the heavy end for a calculator suite, even though each tool appears to have a distinct role. The count is driven by many separate finance domains plus persistence and parsing tools, making navigation somewhat burdensome for an agent.

Completeness4/5

The suite covers a broad Cyprus personal-finance lifecycle: tax, pensions, mortgages, investments, budgeting, insurance, parsing, reference data, and saved-calculation CRUD. Some peripheral gaps remain, such as no explicit encrypted-save creation tool and limited explicit export or calculator-discovery operations, but core workflows are well covered.

Available Tools

25 tools
analyze_portfolioAInspect

Analyses an investment portfolio from its transaction history: net invested capital, current value, absolute return, chain-linked time-weighted return (TWR), CAGR on initial invested capital, per-sub-portfolio breakdown and allocation shares, with multi-currency support via per-transaction FX rates. Use to analyze actual portfolio ledgers or current holdings and valuation data. Require real transactions/holdings and a current valuation for each holding; require FX rates where currencies differ. TWR needs a valuation immediately before each later external cash flow and at the end date; report null with its reason when absent. Equal and opposite same-day movements between sleeves in the base currency net to an internal transfer for combined TWR; confirm both legs before using that treatment. Missing acquisition cost may use the disclosed performance-from-today behavior. Never create transactions or holdings records.

NameRequiredDescriptionDefault
asOfDateNoOptional ISO date (YYYY-MM-DD) used as the CAGR end date. Defaults to today.
baseCurrencyYesReporting currency (e.g. EUR). Transactions in another currency require fxRate.
portfolioNameNoOptional label for the portfolio.
subPortfoliosYesOne entry per account, broker or strategy sleeve.

Output Schema

NameRequiredDescription
cagrNo
seriesNo
totalGainNo
assumptionsNo
baseCurrencyNo
currentValueNo
portfolioNameNo
subPortfoliosNo
totalInvestedNo
absoluteReturnNo
firstDepositDateNo
timeWeightedReturnNo
totalInitialInvestedNo
twrUnavailableReasonNo

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so: it states the read-only boundary ('Never create transactions or holdings records'), defines the null-and-reason behavior when pre-flow valuations are absent, explains internal-transfer netting for combined TWR and the requirement to confirm both legs, and discloses the 'performance-from-today' fallback when acquisition cost is missing. These are non-obvious edge-case behaviors an agent could not infer from the schema.

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 purpose and output list, then prerequisites, then edge cases — a sensible ordering. The middle-to-end sentences are dense run-ons stacking several conditional behaviors, which costs some scanability, but almost no content is redundant.

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 complex multi-sleeve calculation tool, the description covers inputs, prerequisites, and the trickiest modeling decisions, and an output schema exists so return values needn't be spelled out. A minor remaining gap is the absence of any note on failure modes or partial results beyond the TWR-null case.

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 baseline is 3; the description earns above that by tying FX rates to per-transaction granularity and explaining that TWR requires a valuation immediately before each later external cash flow and at the end date — semantics the 'Value' enum and valuation items alone don't convey. It does not further clarify asOfDate or baseCurrency beyond the schema.

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 verb and resource ('Analyses an investment portfolio from its transaction history') and then enumerates the exact outputs: net invested capital, current value, absolute return, TWR, CAGR, per-sub-portfolio breakdown and allocation shares. This is clearly distinguishable from siblings like parse_portfolio_csv or compare_investment_vehicles, which parse or compare rather than compute portfolio performance metrics.

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?

Gives an explicit applicability condition: 'Use to analyze actual portfolio ledgers or current holdings and valuation data,' and follows with prerequisites (real transactions/holdings, a current valuation per holding, FX rates where currencies differ). What it lacks is sibling routing — it never says to use parse_portfolio_csv first to obtain the ledger, or that compare_investment_vehicles handles cross-vehicle comparison.

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

audit_mortgage_statementAInspect

Forensic audit of a mortgage statement: replays the loan day by day and grid-searches the bank's interest convention (Actual/365, Actual/360 or Actual/Actual day count; monthly, semi-annual or annual capitalisation; exact or 2-decimal daily rounding), ranks candidates by RMS error against the bank's own running balance, and reports the interest overcharge implied by the best fit. Use to audit an actual mortgage statement. Require statement rows, at least one usable interest rate and balance checkpoints sufficient to fit the calculation. Reuse only extracted facts; inferred day-count and capitalization conventions are estimates, not confirmed bank terms.

NameRequiredDescriptionDefault
rowsYesParsed statement rows in chronological order. At least one row must carry ratePct.
topNNoHow many ranked candidate conventions to return (default 3).
rulesNoSkip the grid search and test one explicit convention.
includeRowDetailNoInclude the per-row expected balance / delta / flag detail (can be large).

Output Schema

NameRequiredDescription
seriesNo
rmsDeltaYes
fitStatusYes
periodEndYes
rowDetailNo
finalDeltaYes
assumptionsYes
flaggedRowsYes
periodStartYes
bankInterestYes
bestFitLabelYes
bestFitRulesYes
observationsYes
rowsAnalyzedYes
netOverchargeYes
expectedInterestYes
rankedCandidatesYes
netOverchargeRangeYes
equivalentCandidatesYes
expectedInterestRangeYes
equivalentCandidateCountYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it explains the internal fitting procedure, that results are ranked by RMS error, and crucially that inferred day-count and capitalisation conventions are estimates rather than confirmed bank terms. It omits runtime/cost expectations for a grid search over up to 2000 rows, which keeps it out of 5 territory.

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 core mechanism, then prerequisites, then the accuracy caveat — a sensible ordering. The opening sentence is long and clause-heavy, but every clause describes a distinct part of the computation rather than padding.

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?

An output schema exists, so return shape need not be described. The description covers inputs, fitting methodology, and interpretive limits, which is enough for a nested-schema, four-parameter analytical tool. A note on how confidence degrades with few checkpoints would have completed it.

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 coverage is 100%, so the baseline is 3; the description still adds real meaning by stating that the rows must be chronological with at least one ratePct and that balance checkpoints are what the fit uses. Those constraints are not obvious from the schema alone, so it edges above baseline.

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 concrete verb and resource ("forensic audit of a mortgage statement") and then specifies the mechanism: day-by-day replay, grid search over day-count/capitalisation/rounding conventions, RMS ranking, and overcharge reporting. This is clearly distinguishable from the sibling parse_mortgage_statement_text, which only extracts data, and from simulate_mortgage, which projects rather than audits.

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?

"Use to audit an actual mortgage statement" plus explicit preconditions (statement rows, at least one usable rate, sufficient balance checkpoints) tells the agent when the tool applies and what makes an input valid. It stops short of naming the alternative parse tool or saying when not to use it, so it earns a 4 rather than a 5.

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

calculate_cyprus_capital_gainsAInspect

Calculates Cyprus Capital Gains Tax on an immovable property disposal using 2025 or 2026 rules, including CPI indexation, year-specific lifetime exemptions, the 20% CGT rate and the 0.4% property transfer fee. Use for Cyprus capital-gains tax on an immovable-property sale. Obtain the actual acquisition price and year, disposal tax year, sale price and property type; ask for missing essentials. Tax-year rules default to 2026; supply 2025 for a disposal in that year. Currency defaults to EUR only as a modelling convention. Omission of isFirstDisposal means no lifetime exemption is claimed; do not infer eligibility.

NameRequiredDescriptionDefault
taxYearNoDisposal tax year; defaults to the current 2026 rules and selects year-specific lifetime allowances.2026
currencyNoEUR (default) or CYP for pre-2008 purchases (converted at 0.585274).EUR
agentFeesNoEstate agent / legal fees deducted from the sale price, EUR.
salePriceYesEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
propertyTypeYesDrives the year-specific lifetime exemption: 2025 general/plot €17,086, qualifying main residence €85,430 and agricultural land €25,629; 2026 general/plot €30,000, qualifying main residence €150,000 and agricultural land €50,000; other €0.
acquisitionYearYesCalendar year the property was acquired.
isFirstDisposalNoWhether the lifetime first-disposal exemption is being claimed. Omission means no exemption is claimed.
acquisitionPriceYesPurchase price in the original currency.

Output Schema

NameRequiredDescription
seriesNo
assumptionsYes
netProceedsYes
taxableGainYes
totalTaxDueYes
netSalePriceYes
taxExemptionYes
capitalGainsTaxYes
currentValuationYes
acquisitionPriceEURYes
propertyTransferFeeYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses year-specific rule selection, the 20% CGT rate, CPI indexation, the 0.4% transfer fee, the EUR modelling-convention default, and the non-inference rule for first-disposal eligibility. It stops short of describing error behavior or result shape, but an output schema exists to cover returns.

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?

Dense and front-loaded, with the core purpose in the first clause and defaults and pitfalls after. There is mild redundancy between the opening sentence and 'Use for Cyprus capital-gains tax on an immovable-property sale', which restates the purpose without adding information.

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 an 8-parameter tax calculator with full schema coverage and an output schema, the description supplies everything an agent needs: when to use, defaults, year selection, exemption-claim semantics, and instructions to elicit missing required inputs rather than guess.

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 coverage is 100%, so 3 is the baseline; the description goes slightly beyond it by flagging which inputs are essential to collect (acquisition price/year, disposal tax year, sale price, property type) and by framing the currency default as a modelling convention rather than a real-world assumption. The remaining parameters (agentFees, isFirstDisposal) are left to the schema's own descriptions.

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 verb and resource (calculates Cyprus Capital Gains Tax on an immovable property disposal) and pins the scope to 2025/2026 rules. This is unambiguously distinct from siblings like calculate_cyprus_income_tax, so an agent can select it 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.

Usage Guidelines4/5

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

Explicitly says 'Use for Cyprus capital-gains tax on an immovable-property sale' and instructs the agent to ask for missing essentials rather than fabricate values. It also clarifies the default-to-2026 rule and that omission of isFirstDisposal means no exemption is claimed. It does not name an alternative tool to use when the disposal is outside Cyprus, but no sibling is close enough to be a likely confusion.

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

calculate_cyprus_income_taxAInspect

Calculates Cyprus income tax, employee/self-employed SI, GESY and take-home pay. Employee SI and first-employment relief use qualifying employment remuneration only; rent does not increase employee SI. GESY uses the shared €180,000 personal ceiling. Use for a Cyprus resident or non-resident employee or sole proprietor tax estimate. Before calling, confirm whether a stated salary is monthly or annual and confirm employment category (private, civil or self-employed); do not infer either. Supply gross annual salary in EUR (use explicit 0 for self-employed-only cases); self-employed calculations also need turnover and occupational category. Identify when 2026 tax rules are a default rather than a user-supplied year. Optional incomes, deductions, tax year and eligibility facts must come from the user. Employee Social Insurance applies to qualifying employment remuneration only; passive rental income does not increase employee SI. Article 8(21A)/(23A) exemptions are based on qualifying employment remuneration only; GESY's €180,000 annual personal ceiling is shared across salary, self-employment, pension and income-earner categories. Never infer exemption eligibility.

NameRequiredDescriptionDefault
donationsNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
evExpenseNo
interestPaidNoInterest paid on rental property.
propertyYearNoYear the property was acquired.
rentalIncomeNoAnnual rental income in EUR.
salaryIncomeYesGross annual salary in EUR.
spouseIncomeNo
taxesPrepaidNo
exemptionTypeNoMinds in Cyprus Art. 8(21B), applied only when eligibility conditions are met.
isNonDomicileNoCyprus non-domicile status; exempts rental and deposit-interest SDC where applicable.
maritalStatusNo
pensionIncomeNo
propertyPriceNoProperty price for wear-and-tear allowance.
providentFundNoTotal provident/PEPP fund contribution in EUR.
dividendIncomeNoAnnual dividend income in EUR.
employmentTypeYes'private' for private sector (8.8% SI), 'civil' for civil service (4.45% SI), 'self-employed' for sole proprietor (16.6% SI on deemed/actual, 4% GESY). Required; the API does not assume a category.
tradeUnionSubsNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
hasRentalIncomeNoWhether rental income applies.
rentPaidPrimaryNo
mindsEligibilityNoFacts used to validate Minds in Cyprus Art. 8(21B). Omit or leave incomplete to receive no 8(21B) deduction.
hasDividendIncomeNoWhether dividend income applies.
legislationVersionNoTax/legislation year. Supported: 2025, 2026.
cryptoTradingIncomeNoAnnual taxable cryptoasset trading gains in EUR. From tax year 2026 the amount is taxed at 8% separately from progressive PIT; do not include non-taxable investment disposals.
housingInterestPaidNo
selfEmployedDetailsNoSole-proprietor schedule: net profit = turnover − expenses − capitalAllowances − lossBroughtForward (floor 0).
homeInsurancePremiumNo
innovativeInvestmentNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
numDependentChildrenNo
depositInterestIncomeNoAnnual deposit interest in EUR. Standard interest is subject to 17% SDC for Cyprus-domiciled individuals, rather than progressive PIT; GESY still applies.
isDividendNonDomicileNoNon-dom status for dividends.
energyEfficiencyExpenseNo
firstEmploymentDeductionNo
qualifiesForFirstEmploymentNo

Output Schema

NameRequiredDescription
gesyYes
seriesNo
incomeTaxYes
netIncomeYes
netSalaryYes
assumptionsYes
grossIncomeYes
mindsDeductionYes
socialInsuranceYes
totalDeductionsYes
chargeableIncomeYes
effectiveTaxRateYes
mindsEligibilityYes
selfEmployedHRDAYes
availableDeductionsYes
specialDefenseContributionYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it warns that 2026 rules are a default that must be flagged, states that optional inputs must come from the user, and forbids inferring exemption eligibility. It omits nothing obviously safety-critical for a pure calculator, though it adds no note on computational assumptions/rounding or error behavior.

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

Conciseness3/5

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

Front-loaded with purpose and preconditions, which is good, but it repeats itself: the qualifying-remuneration/rent rule for employee SI and the €180,000 GESY ceiling are each stated twice in near-identical phrasing. Trimming the duplication would lose no information.

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 33-parameter, nested-object calculator with an output schema, the description supplies the required inputs, the employment-category semantics, the default-year caveat and the no-inference rules. Return values are covered by the output schema, so nothing essential is missing.

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 coverage is 64% on 33 params, and the description compensates by explaining the required path: gross annual salary in EUR with explicit 0 for self-employed-only cases, plus turnover and occupational category for sole proprietors. It adds real meaning for the two required parameters but leaves many optional deduction/relief fields (evExpense, energyEfficiencyExpense, homeInsurancePremium) entirely to the schema.

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 verb (calculates) with a precise set of outputs: Cyprus income tax, employee/self-employed SI, GESY and take-home pay. This clearly separates it from siblings like calculate_cyprus_capital_gains or calculate_cyprus_state_pension, which cover different tax domains.

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?

Explicitly scopes usage to 'a Cyprus resident or non-resident employee or sole proprietor tax estimate' and adds hard prerequisites: confirm monthly vs annual salary and employment category, do not infer either. It does not name sibling alternatives or when-not conditions, but the applicability conditions for calling are unusually concrete.

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

calculate_cyprus_state_pensionAInspect

Estimates the Cyprus state (contributory) pension amount at retirement using official contribution schedules and current 2026 pension income-tax bands, based on accumulated insurance units and contribution history. Use to estimate contributory Cyprus state pension entitlement and amount at retirement. Results apply the current 2026 pension income-tax bands; projected contribution amounts use the published SI rate increases in 2029, 2034 and 2039. Reuse supplied facts and ask only for missing essentials: mode and retirement age are always required; quick mode also needs current age, years worked and total insurance units; advanced mode needs the actual non-empty yearly contribution record. Ask for dependants or state the zero-dependants assumption before presenting a personalized result. Never infer contribution history. Units are per calendar year; a legacy year-to-units map is accepted.

NameRequiredDescriptionDefault
modeYesCalculation mode.
currentAgeNoCurrent age (quick mode only).
dependentsNoNumber of dependents (spouse/children); raises the basic pension multiplier.
yearlyUnitsNoAdvanced mode only. Insurance units earned per calendar year, e.g. [{"year":2003,"units":5.2}]. Units per year must be between 0 and the statutory maximum for that year (about 5.3-6.0; 6.0 for years after 2026). A legacy object map {"2003": 5.2} is also accepted. Years worked and total units are derived from this array, so yearsWorked/totalInsuranceUnits are ignored in advanced mode.
yearsWorkedNoActual years with insurance contributions (quick mode); do not infer from age or employment duration.
retirementAgeYesPlanned retirement age.
totalInsuranceUnitsNoActual accumulated Cyprus insurance units/points (quick mode); do not infer from salary or years worked.

Output Schema

NameRequiredDescription
seriesNo
incomeTaxYes
monthlyNetYes
totalUnitsYes
assumptionsYes
weeklyGrossYes
yearsWorkedYes
ghsDeductionYes
qualifiesForPensionYes
basicPensionComponentYes
minimumPensionAppliedYes
estimatedAnnualPensionYes
estimatedMonthlyPensionYes
earningsRelatedComponentYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses key assumptions: 2026 tax bands, projected SI rate increases in 2029/2034/2039, dependants handling, and anti-inference of contribution history. It does not state determinism, error behavior, or side effects (though a calculator is implicitly pure), leaving minor gaps.

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

Conciseness3/5

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

Front-loaded with purpose and usage, but the first sentence and the second sentence redundantly restate what the tool estimates. The guidance is otherwise dense and earns its place, but trimming the duplication would improve conciseness.

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?

Given 7 parameters, conditional requirements, no annotations, and an existing output schema, the description covers modes, required inputs, assumptions, and anti-inference rules well. It does not elaborate on edge cases like out-of-range retirementAge or on the exact nature of the returned result, though the output schema handles the latter.

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 coverage is 100%, so baseline is 3. The description adds cross-parameter semantics beyond the schema: mode and retirementAge are always required; quick mode needs currentAge, yearsWorked, totalInsuranceUnits; advanced mode needs yearlyUnits. It also reinforces that yearsWorked/totalInsuranceUnits must not be inferred and that legacy unit maps are accepted.

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 verb (estimates), resource (Cyprus state contributory pension amount at retirement), and the exact basis (insurance units, contribution history, 2026 tax bands). This clearly distinguishes it from siblings like get_pension_reference_data, parse_pension_statement, and run_retirement_stress_test.

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 ('Use to estimate contributory Cyprus state pension entitlement'), and provides detailed conditional guidance for quick vs advanced mode, required fields per mode, and the dependants assumption. It also instructs never to infer contribution history and to ask only for missing essentials.

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

calculate_cyprus_unemployment_benefitAInspect

Estimates the Cyprus unemployment benefit using statutory percentage-point dependant additions and a capped earnings-related supplement, and separately assesses entitlement when qualifying facts are supplied. Use to estimate the conditional Cyprus unemployment benefit amount and separately assess entitlement. The basic rate is 60%, plus 20 percentage points for a dependent spouse and 10 percentage points per dependent child or other dependant (up to three); the earnings-related supplement is 50% of supplementary insurance earnings, capped at one weekly basic insurable earning. Require the claim date, relevant-year insurable earnings and dependants to estimate an amount. Ask for qualifying insurance history, employee status, unemployment registration and availability for work before claiming entitlement; when those facts are missing, state that entitlement is undetermined and ask each missing follow-up question. Do not infer those facts from annual earnings.

NameRequiredDescriptionDefault
isEmployeeNoWhether the claimant was insured as an employee rather than self-employed.
applicationDateYesActual claim date as YYYY-MM-DD.
dependentSpouseYesWhether the claimant has a dependent spouse not in paid work; ask if unknown.
dependentChildrenYesActual number of dependent children or other dependants; ask if unknown (benefit calculation caps at 3).
annualGrossEarningsYesActual gross insurable earnings in EUR for the contribution year selected by applicationDate.
registeredUnemployedNoWhether registered unemployed with the competent offices.
weeksSinceFirstInsuranceNoWeeks elapsed since first insurance; at least 26 required.
actualBasicInsurancePointsNoActual paid basic insurance points accumulated by claim date; 0.5 required for entitlement.
capableAndAvailableForWorkNoWhether capable of and available for work during the claim.
relevantYearInsurancePointsNoActual plus assimilated insurance points in the relevant contribution year; at least 0.39 required.

Output Schema

NameRequiredDescription
seriesNo
eligibleYes
assumptionsYes
weeklyBenefitYes
monthlyBenefitYes
eligibilityStatusYes
dependentSupplementYes
maxEntitlementWeeksYes
missingEligibilityFactsYes
relevantContributionYearYes
earningsRelatedSupplementYes
failedEligibilityConditionsYes
missingEligibilityQuestionsYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses the rate structure (60% basic, +20pp spouse, +10pp per dependant capped at three), the supplement formula and its cap at one weekly basic insurable earning, and the graceful-degradation rule of reporting 'entitlement undetermined' plus asking each missing question. This is well beyond what the schema reveals.

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?

The formula and guardrails are front-loaded and useful, but the opening sentence and the following 'Use to estimate…' sentence restate the same purpose, and the eligibility checklist is repeated across two sentences. Modest redundancy costs it a point.

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 10-parameter calculator with an output schema, this is complete: the description supplies the domain rules, the required-input story, the eligibility criteria, and the missing-data behavior. Return values are covered by the output schema, so no gap remains.

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 coverage is 100%, so the baseline would be 3, but the description adds genuine semantic value by explaining how parameters combine (percentage-point additions, per-dependant weighting, cap at three, the supplement being 50% of supplementary earnings). It does not, however, map every one of the ten parameters to its role, leaving some entitlement fields to the schema alone.

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 verb (estimates) and resource (Cyprus unemployment benefit), and explicitly splits the tool into two functions: amount estimation and separate entitlement assessment. This distinguishes it clearly from sibling calculators such as calculate_cyprus_income_tax or calculate_cyprus_state_pension.

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?

Gives explicit preconditions for the calculation path (claim date, relevant-year insurable earnings, dependants) and the entitlement path (insurance history, employee status, registration, availability for work). It also names a prohibition — 'Do not infer those facts from annual earnings' — and prescribes fallback behavior when facts are missing.

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

calculate_ev_savingsAInspect

Compares the annual running cost of an electric car against a petrol/diesel car in Cyprus, splitting charging between spare solar production, home grid electricity and public chargers, and reporting yearly savings and payback on the extra purchase cost. Use to compare EV and petrol/diesel running costs. Ask for actual annual distance, vehicle consumption, fuel price, charging shares and tariffs for each active charging source; when solar charging is selected, require available spare solar production. Reuse supplied facts and ask only for missing essentials. Omitted extra purchase cost means no payback estimate.

NameRequiredDescriptionDefault
evOtherNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
iceOtherNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
evRoadTaxNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
fuelPriceYesFuel price in EUR per litre.
iceRoadTaxNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
iceServiceNoAnnual servicing cost of the petrol/diesel car, EUR.
spareSolarNoSpare solar production available for charging, kWh per year.
evInsuranceNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
extraEvCostNoExtra purchase cost of the EV versus the petrol/diesel alternative, EUR.
iceInsuranceNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
iceOilChangeNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
evConsumptionYesEV consumption in Wh per km (e.g. 170).
homeGridShareNoShare of home charging drawn from the grid, percent.
annualDistanceYesKilometres driven per year.
iceConsumptionYesPetrol/diesel consumption in litres per 100 km.
projectionYearsNoHorizon of the cumulative savings series (default 10).
solarDirectShareNoShare of home charging covered directly by solar, percent.
chargingEfficiencyNoWall-to-battery charging efficiency, percent (default 92).
publicChargingPriceNoPublic charging price in EUR per kWh.
gridElectricityPriceNoHome electricity price in EUR per kWh.

Output Schema

NameRequiredDescription
seriesNo
assumptionsYes
iceFuelCostYes
homeGridCostYes
paybackYearsYes
savingsByYearYes
yearlySavingsYes
evEnergyAtWallYes
homeGridEnergyYes
solarDirectCostYes
evAdditionalCostsYes
evTotalAnnualCostYes
excessSolarNeededYes
solarDirectEnergyYes
iceAdditionalCostsYes
iceTotalAnnualCostYes
publicChargingCostYes
publicChargingEnergyYes
totalElectricityCostYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses the conditional dependency (solar share requires spare solar production) and the output caveat that omitting extraEvCost suppresses the payback estimate. It does not describe the shape of the returned savings series, though an output schema exists to cover that.

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?

Four sentences, front-loaded with the computation and then the data-gathering rules. The sentence 'Use to compare EV and petrol/diesel running costs' largely restates the opening and is mild redundancy, but nothing else is wasted.

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 20-parameter calculator with an output schema, the description covers the collection policy, the conditional requirements, and the one output caveat, which is everything an agent needs to invoke it correctly. Units and defaults are handled by the schema, so no gap remains.

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 coverage is 100%, so the parameter meanings are already given; the description adds genuine value beyond that by explaining the cross-field condition (solarDirectShare > 0 requires spareSolar) and the optionality semantics of extraEvCost. It could have said more about how the three charging shares interact, which keeps it from a 5.

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?

Opens with a specific verb and resource: compares annual running cost of an EV against a petrol/diesel car in Cyprus, with the charging split (solar, home grid, public) and outputs (yearly savings, payback on extra purchase cost). This clearly distinguishes it from siblings like compare_rent_vs_buy or compare_investment_vehicles without needing to open the schema.

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?

Gives concrete invocation guidance: ask for annual distance, consumption, fuel price, charging shares and tariffs, and require spare solar production when solar charging is selected. It also says to reuse supplied facts and only ask for missing essentials. It does not name sibling alternatives or say when NOT to use it, so it falls short of a 5.

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

calculate_stock_optionsAInspect

Compares the Cyprus tax on an employee stock option exercise under the 2025 benefit-in-kind rules (progressive income tax) and the 2026 approved-scheme rules (flat 8% within caps), including the 2x salary annual cap and the €1m rolling 10-year lifetime cap. Use to compare Cyprus tax on an employee's share-option exercise. Require actual annual salary, share count, exercise and market prices, and user-confirmed approved-scheme status before any personalized calculation or call. If status is missing or unclear, ask one concise question first; do not infer it, call with an assumed status, or present option gain, tax, savings, or other personalized option figures before confirmation. Amounts are EUR and per-share prices are EUR/share.

NameRequiredDescriptionDefault
marketPriceYesMarket price per share at exercise, EUR.
exercisePriceYesStrike price per share, EUR.
numberOfSharesYesNumber of options being exercised.
isApprovedSchemeYesWhether the plan has approved-scheme status under 2026 rules; ask the user and use only their explicit confirmation. Never infer or assume this value.
annualGrossSalaryYesGross annual salary in EUR (sets the marginal band and the 2x annual cap).
prior10YearOptionIncomeNoOption income already used against the €1m rolling 10-year cap, EUR.

Output Schema

NameRequiredDescription
seriesNo
tax2025Yes
tax2026Yes
totalGainYes
taxSavingsYes
assumptionsYes
gainPerShareYes
savingsPercentageYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description must carry behavioral disclosure; it discloses the compared rule sets, the 2x salary annual cap, the €1m rolling 10-year cap, and the hard gate against presenting figures before status confirmation. It still does not explicitly say whether the tool is purely computational or has any side effects, leaving a small gap for a no-annotation tool.

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?

The first sentence front-loads the comparison and the following sentences cover prerequisites and guardrails, so structure is good. However, 'Use to compare...' repeats the opening purpose and the confirmation rule is restated in multiple ways, making it longer than necessary.

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 complex tax calculator with 100% schema coverage and an output schema, the description supplies the rule context, caps, currency, and required confirmation gate. It is nearly complete, but without annotations it could explicitly state that the operation is a pure calculation with no persistence or side effects.

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%, so the schema already explains all six parameters, including the optional prior10YearOptionIncome. The description reinforces salary/status meaning and currency but does not add parameter-level detail beyond the schema, and it omits any prose mention of the optional prior-income parameter.

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?

The description uses a specific verb, 'compares', and a precise resource, 'Cyprus tax on an employee stock option exercise', naming the two rule regimes and caps. Although it does not name sibling tools, the stock-option scope is distinct from the other Cyprus tax calculators in the sibling list.

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?

It states when to use ('to compare Cyprus tax on an employee's share-option exercise') and gives a clear precondition: require confirmed approved-scheme status and ask if missing rather than infer. It does not explicitly route to alternative sibling tools such as calculate_cyprus_income_tax, so it is not a full 5.

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

compare_investment_vehiclesAInspect

Compares a taxable investment (option 1) against a tax-deductible vehicle such as a provident fund or life-insurance savings plan (option 2), matching the true out-of-pocket cost of both and applying entry/exit fees, AUM fees, commission and exit tax. Use to compare taxable investment with a tax-deductible investment vehicle. Require the annual contribution, the user's tax-relief rate and option 2's management fee. Reuse supplied facts and ask only for missing essentials. Disclosed forecast returns and optional omitted fee/tax inputs are modelling assumptions; do not invent personal contribution amounts.

NameRequiredDescriptionDefault
maxYearsNoHorizon in years (default 30).
opt2AumFeeYesAnnual management fee on option 2, percent.
opt1ExitFeeNoOne-off exit fee on option 1, EUR.
opt1ExitTaxNoTax on option 1 gains at exit, percent.
opt2ExitTaxNoTax on option 2 at exit, percent.
opt1EntryFeeNoOne-off entry fee on option 1, EUR.
netInvestmentYesAnnual GROSS contribution into option 2, EUR. Option 1 receives the equivalent out-of-pocket amount.
opt1MonthlyFeeNoFixed monthly fee on option 1, EUR.
opt2CommissionNoPercent of the FIRST year's contributions taken as commission.
opt2MonthlyFeeNoFixed monthly fee on option 2, EUR.
opt1AnnualReturnNoAnnual percentage value (e.g. 2.5 for 2.5%). Supply the actual rate unless the user accepts a stated modelling default.
opt2AnnualReturnNoAnnual percentage value (e.g. 2.5 for 2.5%). Supply the actual rate unless the user accepts a stated modelling default.
taxDeductionRateYesUser's marginal tax relief on option 2 contributions, percent.
opt2AdditionalFeeNoAdditional annual fee on option 2, percent.

Output Schema

NameRequiredDescription
seriesNo
winnerYes
assumptionsYes
option1FinalYes
option2FinalYes
crossoverYearYes
leadershipPeriodsYes
advantageAtHorizonYes
finalLeadStartYearYes
option1AnnualContributionYes
option2AnnualContributionYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does substantial work: it discloses the cost-matching method (equalizing true out-of-pocket cost), the fee/tax mechanics applied (entry/exit fees, AUM fees, first-year commission, exit tax), and flags that forecast returns and omitted fee/tax inputs are modelling assumptions rather than user facts. The explicit prohibition on inventing personal contribution amounts is valuable guardrail context. It stops short of describing result shape or horizon behavior, though an output schema exists.

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 comparison definition and followed by usage, prerequisites, and assumption warnings in a logical order. The second sentence ('Use to compare taxable investment with a tax-deductible investment vehicle') largely restates the first and could be merged, but no sentence is otherwise wasted.

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 14-parameter financial modelling tool with no annotations, the description covers required inputs, fee/tax mechanics, assumption policy, and the no-invention guardrail; return values are covered by the output schema. What remains thin is guidance on the many optional fee/tax parameters (e.g., when an omitted value is safe versus must be asked for), though the schema descriptions carry that detail.

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 coverage is 100%, so baseline would be 3, but the description adds a genuinely non-obvious semantic: the two options are compared at matched out-of-pocket cost, which explains why only option 2's gross contribution is required. It also names the three required inputs, reinforcing which fields cannot be defaulted.

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 verb and resource: compares a taxable investment (option 1) against a tax-deductible vehicle such as a provident fund or life-insurance savings plan (option 2). The scope is narrow enough that an agent can distinguish it from neighbors like compare_rent_vs_buy or analyze_portfolio 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.

Usage Guidelines4/5

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

Explicitly says when to use it ('Use to compare taxable investment with a tax-deductible investment vehicle') and names the three inputs that must be present (annual contribution, tax-relief rate, option 2 management fee). It adds an operating rule — reuse supplied facts and ask only for missing essentials — but gives no when-not guidance or named alternative for cases outside this comparison.

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

compare_rent_vs_buyAInspect

Compares buying a home against renting using actual period mortgage payments and symmetric investment of whichever scenario has lower cash costs. Mortgage contributions stop after payoff; purchase/sale costs, maintenance, rent inflation and investment returns are included. Use only to compare buying a Cyprus home with renting over a stated horizon. Use financial facts stated or confirmed for this scenario. Do not carry values from another chat or scenario into the calculation until the user explicitly confirms the relevant values. Ask for any missing core term: property price, monthly rent, down payment and whether it is EUR or percent, mortgage rate, and mortgage term. If the deposit is given without a unit (for example, '20'), ask whether it means EUR or percent before interpreting, converting, deriving a loan amount, or calling this tool. Never infer the unit from context. Optional growth, inflation and return assumptions require user acceptance when not stated. Mortgage payments end at payoff, and cost differences are invested by the lower-cost side. After calculating, briefly summarize every material modelling default used (including defaults supplied in the call) and costs excluded or treated as zero; use structuredContent.assumptions for defaults and exclusions returned by the API.

NameRequiredDescriptionDefault
legalFeesNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
stampDutyNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
agencyFeesNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
downPaymentYesDeposit amount. If the user gives no unit, ask whether it is EUR or a percentage before interpreting or calculating.
monthlyRentYesCurrent monthly rent, EUR.
transferFeesNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
homeInsuranceNoAnnual home insurance, EUR.
propertyPriceYesEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
rentFurnitureNoOne-off furnishing cost when renting, EUR.
agentCommissionNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
maintenanceFixedNoAnnual maintenance in EUR when not using the percentage.
fittingsFurnitureNoOne-off furnishing cost when buying, EUR.
localAuthorityTaxNoAnnual local authority tax, EUR.
mortgageTermYearsYesMortgage term in years.
propertyTaxYearlyNoAnnual property tax, EUR.
transferTaxOnSaleNoAssumed transfer tax on exit, percent (default 0%).
commonAreaExpensesNoMonthly communal charges when renting, EUR.
rentYearlyIncreaseNoAssumed annual rent increase, percent (default 2).
analysisPeriodYearsNoComparison horizon in years (default 30).
salesCommissionRateNoAssumed selling commission on exit, percent (default 5%).
generalInflationRateNoAssumed annual inflation, percent (default 2).
investmentReturnRateNoAssumed annual investment return, percent (default 5).
mortgageInterestRateYesAnnual percentage value (e.g. 2.5 for 2.5%). Supply the actual rate unless the user accepts a stated modelling default.
maintenancePercentageNoAnnual maintenance as a percent of property value (model default 1%).
securityDepositMonthsNoDeposit expressed in months of rent.
downPaymentIsPercentageYesTrue only when the user explicitly confirms the deposit is a percentage; false only when they explicitly confirm it is EUR. Ask if unclear; never infer.
propertyAppreciationRateNoAssumed annual property appreciation, percent (default 3).
useMaintenancePercentageNoUse the percentage instead of the fixed maintenance figure (default true).

Output Schema

NameRequiredDescription
seriesNo
assumptionsYes
totalCostBuyYes
breakevenYearYes
totalCostRentYes
buyInitialCashYes
rentInitialCashYes
buyNetWealthFinalYes
rentNetWealthFinalYes
opportunityCostGainYes
monthlyMortgagePaymentYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses mortgage payoff behaviour, symmetric investment of cost differences, included cost categories, and requires a post-calculation summary of defaults and exclusions via structuredContent.assumptions. It stops short of stating whether the calculation is pure/read-only or persisted, which is a meaningful gap for a tool with save/update siblings.

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?

The length is warranted for a 28-parameter financial model, and purpose is front-loaded. There is some redundancy around the deposit-unit rule ('never infer the unit' repeated in different phrasing), but no sentence is idle.

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?

Given 28 parameters, no annotations, and an existing output schema, the description covers the decisions an agent must make before calling: required core terms, ambiguity handling, assumption acceptance, and disclosure of defaults/exclusions. Return-value explanation is correctly delegated to the output schema.

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 coverage is 100%, so the schema already documents the 28 parameters; the description adds real value by mandating clarification of the downPayment unit, forbidding unit inference, and requiring acceptance of optional growth/inflation/return assumptions. That goes beyond the schema's per-field text and addresses the two most error-prone parameters.

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 verb and resource ('compares buying a home against renting') and pins the scope to a Cyprus home over a stated horizon. The modelling stance (actual period mortgage payments, symmetric investment of the lower-cost side) distinguishes it from siblings like simulate_mortgage without opening a 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 restricts use to rent-vs-buy over a stated horizon, forbids carrying values from other chats, and enumerates the required core terms that must be asked for if missing. It also names the alternative behaviour for ambiguous deposit units and requires user acceptance for unstated assumptions.

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

compare_saved_calculationsAInspect

Diffs two saved calculations (inputs and results) field by field. Use for 'compare my mortgage before/after' style questions instead of reconstructing the diff from two loads. Encrypted sides report locked instead of contents.

NameRequiredDescriptionDefault
calculationIdAYesFirst saved calculation id.
calculationIdBYesSecond saved calculation id.

Output Schema

NameRequiredDescription
seriesNo
sameTypeNo
assumptionsNo
differencesNo
calculationANo
calculationBNo
totalDifferencesNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose a real output behavior: encrypted sides 'report locked instead of contents,' which the agent cannot learn from the schema or output schema alone. It leaves unstated whether the tool is strictly read-only and what happens if an id is missing or invalid, so it stops short of full behavioral disclosure.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action, then the routing guidance, then the edge-case caveat. There is no filler or repeated information.

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?

The output schema covers the return shape and the schema covers both parameters, so the description is nearly complete for a two-arg read tool. Minor gaps remain around failure behavior for unknown ids and the meaning of diff direction.

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 coverage is 100% and both UUID parameters are already documented in the schema, so the baseline is 3. The description adds only that these are saved calculations being compared, which is already implied, and does nothing with directionality (whether A is the baseline and B is the comparison).

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 verb and resource ('Diffs two saved calculations') and narrows the scope to inputs and results field by field. It also implicitly separates itself from load_saved_calculation, which the agent would otherwise need to reason about.

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?

Gives an explicit use case ('compare my mortgage before/after' style questions) and an explicit alternative to avoid ('instead of reconstructing the diff from two loads'). The selection condition between this tool and the sibling load_saved_calculation is unambiguous.

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

delete_saved_calculationAInspect

Deletes one saved calculation belonging to the authenticated API key's user. Use when the user asks to delete or forget a saved scenario. Works on encrypted saves too.

NameRequiredDescriptionDefault
calculationIdYesID returned by list_saved_calculations.

Output Schema

NameRequiredDescription
idNo
nameNo
seriesNo
deletedNo
assumptionsNo
calculationTypeNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. It usefully discloses ownership scoping and that encrypted saves are also deletable, but never states that the deletion is permanent/irreversible or what happens when the ID is unknown or already deleted — significant gaps for a destructive operation.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and scope, then the trigger, then the encrypted-save caveat. Every sentence carries information and there is no filler.

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

Completeness3/5

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 explained, and the single param is fully documented. But for a destructive tool with zero annotations, the description omits irreversibility and failure behavior, leaving the agent without the confirmation context it would need.

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 coverage is 100% and the single parameter is documented as "ID returned by list_saved_calculations," so the schema does the work. The description adds nothing about the ID format or provenance beyond it, which is the baseline case.

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?

States a specific verb and resource ("Deletes one saved calculation") plus a scoping constraint ("belonging to the authenticated API key's user"). The singular "one" implicitly separates it from list_saved_calculations and compare_saved_calculations, though no sibling is named explicitly.

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?

"Use when the user asks to delete or forget a saved scenario" gives a clear, concrete trigger condition. It lacks any when-not guidance or pointer to alternatives such as update_calculation for modification versus deletion.

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

get_pension_reference_dataAInspect

Returns official Cyprus Social Insurance reference tables for a given year. Use to retrieve official Cyprus social-insurance reference figures for a user-specified calendar year. Reuse a year already given or ask for the missing year; do not assume which tax/reference year applies.

NameRequiredDescriptionDefault
yearYesReference year.

Output Schema

NameRequiredDescription
seriesNo
assumptionsYes
maxUnitsPerYearYes
statutoryPensionAgeYes
minimumContributionYearsYes
annualMaxInsurableEarningsYes
annualBasicInsurableEarningsYes
weeklyBasicInsurableEarningsYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral disclosure. It conveys that this returns 'official' tables (provenance/authoritativeness) and strongly implies a side-effect-free lookup, but never states it is read-only or describes failure handling for unavailable years or out-of-range inputs. Adequate but with clear gaps for a zero-annotation tool.

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

Conciseness3/5

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

The scope is front-loaded in the first sentence, but the second sentence largely restates it ('retrieve official Cyprus social-insurance reference figures for a user-specified calendar year') rather than adding new information. Only the final clause about not assuming the year earns its place beyond sentence one.

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 one-parameter, fully documented lookup with an output schema, the description covers purpose, sourcing, and year-selection behavior well enough to call it correctly. Missing only edge-case behavior (what happens for years with no published table or outside the 1981+ range).

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?

With a single parameter at 100% schema coverage the baseline is 3, but the description genuinely adds semantics: it tells the agent to reuse a year already provided and not to guess the applicable tax/reference year. That is guidance the schema's bare 'Reference year' field does not supply.

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?

Names a specific verb and resource — returning official Cyprus Social Insurance reference tables for a given year — which is clearly a data lookup rather than a calculation, distinguishing it from siblings like calculate_cyprus_state_pension or calculate_cyprus_income_tax. It does not explicitly name an alternative sibling, so it stops short of a 5.

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?

Gives usable when-to-use context ('retrieve official Cyprus social-insurance reference figures for a user-specified calendar year') plus concrete behavioral guidance: reuse a year already supplied rather than re-asking, and don't assume which tax/reference year applies. No explicit exclusions or named alternatives, so not a 5.

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

list_saved_calculationsAInspect

Lists metadata of an authenticated user's saved calculations by calculator type. Use so an agent can help a user find a previously saved scenario before loading it. Never returns encrypted contents.

NameRequiredDescriptionDefault
sortNorecent = most recently updated first (default), oldest = least recently updated, created_desc/created_asc by creation date, name_asc/name_desc alphabetical. Cursor paging only applies to 'recent'.recent
limitNo
cursorNonextCursor from the previous page, compound <updatedAt>|<id> with an id tie-break so rows sharing updatedAt never skip. Preferred over offset for stable paging (sort: recent only).
offsetNoRows to skip. Use with limit for page-number paging.
calculationTypeNoOmit to list saved calculations across every calculator type.
calculationTypesNoFilter by several calculator types at once. Takes precedence over calculationType.

Output Schema

NameRequiredDescription
sortNo
limitNo
offsetNo
seriesNo
hasMoreNo
nextCursorNo
totalCountNo
assumptionsNo
calculationsNo
calculationTypesNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does add real value: it states the data is scoped to the authenticated user (an auth requirement) and that encrypted contents are never returned. It says nothing about paging cost, rate limits, or that unauthenticated calls fail, which a mutation-free list tool would still benefit from.

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

Conciseness5/5

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

Two tight sentences: the resource and scope come first, then the usage rationale, then the output constraint. Every sentence earns its place with no filler.

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?

An output schema exists, so return-shape explanation is unnecessary, and the six parameters are well covered by the schema. The description supplies purpose, auth scoping, and the encrypted-contents caveat; only paging behavior and error conditions are left entirely to structured fields.

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 83%, so the schema already documents sort, cursor, offset, and the type filters thoroughly. The description adds no parameter-level detail beyond 'by calculator type'; baseline 3 applies when the schema does the heavy lifting.

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?

Specific verb 'Lists' + resource 'saved calculations' + scope 'metadata ... by calculator type', which clearly separates it from load_saved_calculation (contents) and compare_saved_calculations (comparison). It stops short of naming a sibling explicitly, so it lands at 4 rather than 5.

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?

'Use so an agent can help a user find a previously saved scenario before loading it' supplies a clear usage context and implicitly routes to load_saved_calculation as the follow-up step. There are no explicit when-not conditions or named alternatives, so it is not a 5.

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

load_saved_calculationAInspect

Loads one saved calculation belonging to the authenticated API key's user. Use after list_saved_calculations to retrieve full details of a specific saved scenario. Locked saves return locked: true and no contents.

NameRequiredDescriptionDefault
calculationIdYesID returned by list_saved_calculations.

Output Schema

NameRequiredDescription
idNo
nameNo
inputsNo
lockedNo
resultNo
seriesNo
createdAtNo
toolInputNo
updatedAtNo
assumptionsNo
calculationTypeNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does disclose two non-obvious behaviors: results are scoped to the authenticated key's user, and locked saves return locked: true with no contents. It does not cover failure behavior for a nonexistent or foreign calculationId, which is the remaining gap for an unannotated read tool.

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

Conciseness5/5

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

Three short sentences, zero padding, with the ownership constraint front-loaded and the edge case last. Every sentence carries distinct information.

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?

An output schema exists, so return values need not be described, and the description still covers ownership scope, call sequencing, and the locked-save edge case. The only omission is error/not-found behavior, which leaves it slightly short of fully complete for a lookup tool.

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 coverage is 100% and the single parameter's description already says 'ID returned by list_saved_calculations,' so the tool description adds essentially nothing new about the parameter. Baseline 3 applies when the schema fully documents the input.

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 verb ('Loads') and resource ('one saved calculation') with explicit ownership scope ('belonging to the authenticated API key's user'), which cleanly separates it from list_saved_calculations and compare_saved_calculations. An agent can identify this as the single-item retrieval tool 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 Guidelines4/5

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

Gives an explicit sequencing instruction: 'Use after list_saved_calculations to retrieve full details of a specific saved scenario,' which tells the agent both the precondition and the intent. It does not mention when to prefer compare_saved_calculations or what to do when the ID is unknown, so it stops short of full when/when-not coverage.

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

optimize_company_director_remunerationAInspect

Optimizes Cyprus LTD company-director remuneration for monetary inputs up to €1,000,000, with a fixed solver evaluation budget. Use for a Cyprus LTD director remuneration comparison. Monetary inputs may not exceed €1,000,000; larger values are rejected before solving. Require company profit/revenue, deductible expenses, tax year and domicile status; reuse supplied data and request missing essentials. The default €2,000 corporate administration cost is a disclosed modelling assumption.

NameRequiredDescriptionDefault
taxYearYesTax/legislation year. Supported: 2025, 2026.
isNonDomiciledYesNon-dom status; exempts dividends from SDC.
operatingExpensesYesAnnual deductible operating expenses in EUR (maximum €1,000,000).
corporateGrossProfitYesAnnual company turnover/revenue in EUR, before operating expenses. Maximum supported value: €1,000,000.
annualCorporateAdminCostNoAnnual corporate admin, audit and compliance costs in EUR (Cyprus Companies Law Cap. 113). Defaults to 2000; maximum €1,000,000.
directorSalaryAllocationNoOptional fixed director salary in EUR (maximum €1,000,000); omit to run the bounded solver for the optimal split.

Output Schema

NameRequiredDescription
seriesNo
netCashYes
assumptionsYes
corporateTaxYes
optimalSalaryYes
personalTaxesYes
optimalDividendYes
employerBreakdownYes
employerContributionsYes
comparativeDeltaVsSoleYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does disclose key traits: hard input ceiling, pre-solve rejection of over-limit values, a bounded/fixed solver evaluation budget, and the €2,000 admin cost as a disclosed modelling assumption. It does not cover determinism, runtime, or what happens when the optional salary allocation is omitted (beyond the schema note).

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?

The scope and use case are front-loaded and the whole entry is a few short sentences. It is slightly repetitive, restating the €1,000,000 ceiling three times ('up to €1,000,000', 'may not exceed €1,000,000', 'larger values are rejected'), which costs some efficiency.

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?

An output schema exists, so return values need not be described; within that, the description supplies the required inputs, the solver's bounded nature, and a modelling assumption. Missing are the outcome of omitting directorSalaryAllocation (delegated to the schema) and any note on solver runtime or result interpretation.

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%, so the schema already documents every parameter including defaults, enums and maxima; the description largely restates these. The one genuine addition is that over-limit monetary inputs are rejected before solving, which clarifies failure behavior rather than parameter meaning.

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 verb and resource ('Optimizes Cyprus LTD company-director remuneration') and narrows the scope to monetary inputs up to €1,000,000, which cleanly separates it from the personal-tax and pension siblings. The follow-up sentence 'Use for a Cyprus LTD director remuneration comparison' reinforces the exact use case.

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?

Gives clear usage context ('Use for a Cyprus LTD director remuneration comparison') and prerequisites ('Require company profit/revenue, deductible expenses, tax year and domicile status'). It does not name a competing sibling (e.g. calculate_cyprus_income_tax) or state when this tool should not be chosen, so it falls short of explicit alternative routing.

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

parse_mortgage_statement_textAInspect

Turns pasted bank mortgage-statement rows into audit_mortgage_statement inputs. Use to extract supported fields from actual mortgage statement text. Report missing fields and do not create or infer statement rows.

NameRequiredDescriptionDefault
textYesPasted statement lines (date + description + amount per row, optional balance and rate%).

Output Schema

NameRequiredDescription
rowsNo
seriesNo
parsedRowsNo
assumptionsNo
skippedRowsNo
parseConfidenceNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description still discloses key behavior: only supported fields are extracted, missing fields should be reported, and statement rows must not be created or inferred. It does not explicitly state read-only/no-side-effect behavior, but the parsing constraints are meaningfully described.

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

Conciseness5/5

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

The description is three tight sentences with no waste. The core purpose is front-loaded, followed by usage and a clear extraction constraint.

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?

Given one fully described parameter and an output schema, the description provides enough context for correct selection and invocation. It identifies the source text, the target audit step, and the no-inference rule.

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?

The single text parameter has 100% schema description coverage, so the schema already explains the expected pasted statement lines. The description reinforces the mortgage-statement context but does not add syntax or format details beyond the schema.

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?

The description states a specific transformation: turning pasted bank mortgage-statement rows into audit_mortgage_statement inputs. It clearly distinguishes parsing/extraction from the downstream audit and from other sibling calculators.

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?

It says to use the tool for extracting supported fields from actual mortgage statement text and implies this happens before audit_mortgage_statement. It does not explicitly compare against alternatives or list when not to use it, but the context is clear.

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

parse_pension_statementAInspect

Extracts structured contribution history from pasted Cyprus Social Insurance Services pension statement text. Use to extract supported contribution years and units from an actual pasted Cyprus Social Insurance statement. Do not fill gaps or create contribution records; report missing or unreadable details to the caller.

NameRequiredDescriptionDefault
textYesPasted statement text.

Output Schema

NameRequiredDescription
seriesNo
totalUnitsYes
assumptionsYes
parseConfidenceYes
contributionYearsYes
totalContributionYearsYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden and does well by stating that it will not fill gaps or create contribution records and that missing or unreadable details must be reported. It does not discuss authentication, rate limits, or malformed-input handling, but the core extraction constraints are disclosed.

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?

The definition is front-loaded and appropriately short, with purpose, usage, and a behavioral guardrail. It repeats the Cyprus Social Insurance statement context slightly, which keeps it from being maximally tight.

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?

Given a simple one-parameter parsing tool with a full output schema, the description covers the essential purpose, usage context, and important non-fabrication behavior. Minor gaps around malformed input or output shape are mitigated by the output schema and simple parameter contract.

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?

The schema has 100% description coverage for the single text parameter, so the schema already explains that it expects pasted statement text. The description adds context about the domain but does not add syntax, format, or validation details beyond what the schema provides.

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?

The description states a specific verb and resource: extracting structured contribution history from pasted Cyprus Social Insurance Services pension statement text. It also scopes the output to supported contribution years and units, and implicitly distinguishes itself from calculation tools by saying it does not fill gaps or create contribution records.

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?

It clearly says to use this tool on an actual pasted Cyprus Social Insurance statement, which gives useful context for when it applies. It does not explicitly name alternative sibling tools such as get_pension_reference_data or calculate_cyprus_state_pension, so the routing guidance is clear but not exhaustive.

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

parse_portfolio_csvAInspect

Turns pasted broker CSV or ledger text into analyze_portfolio transactions. Use to extract supported transactions from actual pasted broker CSV or ledger text. Require the source text and actual base currency, report missing/unreadable values, and never create transactions or assume EUR. Output rows can be sent to analyze_portfolio.

NameRequiredDescriptionDefault
textYesPasted broker CSV or ledger lines (date + type + amount per row).
baseCurrencyYesActual base currency used for the parsed portfolio. Required; do not assume EUR.

Output Schema

NameRequiredDescription
seriesNo
parsedRowsNo
assumptionsNo
skippedRowsNo
baseCurrencyNo
transactionsNo
subPortfoliosNo
parseConfidenceNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose meaningful behavior: it reports missing/unreadable values rather than silently succeeding, refuses to fabricate transactions, and will not default to EUR. What it does not define is what counts as a 'supported' transaction, which is the main behavioral unknown for a parser.

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

Conciseness3/5

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

Front-loaded with the core action, but the second sentence ('Use to extract supported transactions from actual pasted broker CSV or ledger text') largely repeats the first rather than adding new information. The requirement/error-handling sentence does earn its place.

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?

Output schema exists, so return shape needn't be described, and both required params are covered. The description gives the agent what it needs to call the tool safely; only the definition of 'supported transactions' is left open.

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 coverage is 100%, so both parameters are already documented in the schema, and the description's restatement ('Require the source text and actual base currency') adds no format detail or example. Baseline 3 applies since the schema does the heavy lifting.

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?

Names a specific verb and resource ('Turns pasted broker CSV or ledger text into analyze_portfolio transactions') and scopes it to 'supported transactions'. It is clearly distinguishable from the sibling parsers (parse_mortgage_statement_text, parse_pension_statement) and from analyze_portfolio itself, which it feeds.

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?

Explicitly states when to use it ('Use to extract supported transactions from actual pasted broker CSV or ledger text') and describes the workflow handoff ('Output rows can be sent to analyze_portfolio'), plus the preconditions (source text, actual base currency). It stops short of naming when NOT to use it or which sibling to pick for non-broker text.

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

plan_monthly_budgetAInspect

Builds a monthly budget from a list of expenses at any frequency: normalises everything to a monthly basis, tiers each item (T1 fixed essentials, T2 variable essentials, T3 lifestyle, T4 discretionary), and returns disposable income, savings rate, the biggest optimisable leak and a surplus projection. Use to summarize a household's actual monthly net income and expense items. Ask for the actual expense ledger or item amounts; never fabricate expenses. Entries without a frequency are treated as monthly and disclosed. Omitted investment contributions are treated as zero and disclosed.

NameRequiredDescriptionDefault
expensesYesExpense items. Known catalogue keys (mortgageRent, groceries, netflix, fuel, ...) are tiered automatically; otherwise pass an explicit tier.
projectionYearsNoHorizon of the surplus projection (default 10).
monthlyNetIncomeYesTake-home monthly income, EUR (net of tax, social insurance and GESY); zero is valid but savings rate is unavailable.
targetSavingsRateNoSavings-rate goal as a percent of net income.
monthlyInvestmentsNoRecurring monthly investments/savings, EUR.
expectedAnnualReturnNoAssumed annual return on invested surplus, percent (default 0).

Output Schema

NameRequiredDescription
seriesNo
projectionYes
savingsGapYes
tierTotalsYes
assumptionsYes
largestLeakYes
savingsRateYes
annualExpensesYes
categoryTotalsYes
monthlySurplusYes
disposableIncomeYes
monthlyNetIncomeYes
targetSavingsRateYes
discretionaryTotalYes
monthlyInvestmentsYes
targetMonthlySavingsYes
totalMonthlyExpensesYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden, and it discloses normalization to monthly, automatic T1-T4 tiering, computed outputs, and explicit default/disclosure behavior for missing frequency and omitted investments. It does not explicitly state whether the calculation is persisted or has side effects, which matters given sibling tools like save_calculation.

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

Conciseness5/5

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

The description is front-loaded with the core action and result, then covers usage, data-quality expectations, and edge-case defaults. Every sentence adds operational information, and there is no filler or repetition.

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?

An output schema exists, so return values need not be fully explained, and the schema already documents all six parameters in detail. The description adds important data-integrity and default-handling context, though it could state more explicitly that the tool is a pure calculation and does not itself save the result.

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%, with rich per-field descriptions already documenting income, expenses, frequency, investments, projection horizon, and return assumptions. The description adds some meaning, such as treating omitted investments as zero and disclosing frequency defaults, but most parameter semantics remain supplied by the schema.

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?

The description states a specific verb and resource: 'Builds a monthly budget.' It also enumerates normalization, tiering, and returned metrics, and scopes the tool to a household's actual monthly net income and expense items, which distinguishes it from the tax, pension, mortgage, and investment siblings.

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?

It explicitly says 'Use to summarize a household's actual monthly net income and expense items' and instructs the agent to ask for the actual expense ledger or item amounts and never fabricate expenses. It does not name a when-not condition or an explicit alternative sibling, but no sibling tool clearly overlaps with this budgeting purpose.

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

run_retirement_stress_testAInspect

Runs a deterministic projection plus Monte Carlo simulation of a retirement savings plan, aggregating active pension streams before applying personal income tax allowances and the shared GESY ceiling. Use for a retirement savings sustainability or portfolio-longevity projection. Reuse the user's ages, savings, contributions and planned monthly spending; ask for each missing essential input and never use example personal values. Values are EUR, contributions/drawdown are monthly, and ages are years. Supply pensionStreams to include Cyprus or foreign pension income; concurrent streams are aggregated before applying the personal progressive allowance, one foreign-pension allowance and the shared €180,000 GESY ceiling. Foreign pensions use the 2026 flat 5% rate above €5,000 unless a net override is supplied. Omitted state pension means pension income is excluded. Returns, inflation, horizon and simulation count use disclosed modelling assumptions when omitted. Runs without seed are stochastic; a supplied seed makes identical inputs repeatable for the same implementation version.

NameRequiredDescriptionDefault
seedNoOptional unsigned 32-bit seed for repeatable runs with identical inputs and implementation versions. Omit to keep the run stochastic.
endAgeNoPlanning horizon age (default 90).
currentAgeYesAge today.
simulationsNoMonte Carlo runs (default 1000).
statePensionNoExpected monthly state pension in EUR.
inflationRateNoAnnual percentage value (e.g. 2.5 for 2.5%). Supply the actual rate unless the user accepts a stated modelling default.
retirementAgeYesPlanned retirement age.
currentSavingsYesCurrent investable savings balance in EUR.
pensionStreamsNoOptional annual pension streams that offset retirement drawdown. Concurrent streams are aggregated before applying progressive tax, the single 2026 foreign-pension €5,000 allowance, and the shared personal GESY ceiling. A supplied netAnnualOverride is treated as already net and is used as-is.
monthlyDrawdownYesPlanned monthly withdrawal in retirement in EUR.
monthlyContributionYesMonthly contribution until retirement in EUR.
expectedAnnualReturnNoAnnual percentage value (e.g. 2.5 for 2.5%). Supply the actual rate unless the user accepts a stated modelling default.
expectedAnnualReturnRetirementNoAnnual percentage value (e.g. 2.5 for 2.5%). Supply the actual rate unless the user accepts a stated modelling default.

Output Schema

NameRequiredDescription
seriesNo
ltcRunRateYes
assumptionsYes
acuteRunRateYes
shockRunRateYes
medianDepletionAgeYes
successProbabilityYes
averageDepletionAgeYes
medianTerminalWealthYes
deterministicFinalBalanceYes
worstCase10thPercentileBalanceYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses the deterministic-plus-Monte-Carlo structure, tax aggregation order (progressive allowance, one foreign-pension allowance, shared €180,000 GESY ceiling), the 2026 flat 5% foreign-pension rate, that omitted state pension excludes pension income, that omitted modelling inputs fall back to disclosed defaults, and that seedless runs are stochastic while seeded runs repeat for a given implementation version.

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 purpose and use case, then units, then tax mechanics, then determinism — a logical order. It is dense and earns most of its length, but repeats the GESY ceiling and foreign-pension allowance points twice, which is minor waste.

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 13-parameter, no-annotation tool, the description covers the essential gaps an agent needs: input sourcing discipline, units, tax/aggregation behavior, default assumptions, and stochastic-vs-repeatable execution. An output schema exists, so return values need not be explained.

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 coverage is 100%, so baseline is 3; the description still adds real meaning beyond the schema by stating units and cadence (EUR, monthly contributions/drawdown, ages in years) and explaining how concurrent pensionStreams are aggregated and how netAnnualOverride is treated. Marginal duplication of the GESY/foreign-allowance rules already in the stream schema keeps it from a 5.

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 verb and resource ('Runs a deterministic projection plus Monte Carlo simulation of a retirement savings plan') and explicitly scopes the output to sustainability/longevity. It is clearly distinguishable from siblings like calculate_cyprus_state_pension or analyze_portfolio, which cover narrower pieces.

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?

Gives clear when-to-use ('retirement savings sustainability or portfolio-longevity projection') and strong input-sourcing rules ('Reuse the user's ages, savings... ask for each missing essential input and never use example personal values'). It does not explicitly name a sibling alternative or state when not to use it, so it falls short of a 5.

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

save_calculationAInspect

Saves a calculator scenario to the authenticated user's stored history. Use when the user asks to save, keep or remember a scenario. Stores the inputs unencrypted (with server-computed results) so list/load can return them later.

NameRequiredDescriptionDefault
nameNoDisplay name for the saved scenario.
inputsYesTool-style inputs for the matching calculator (same shape its calculator tool accepts).
calculationTypeYesCalculator type to save under.

Output Schema

NameRequiredDescription
idNo
nameNo
lockedNo
seriesNo
createdAtNo
updatedAtNo
assumptionsNo
calculationTypeNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that inputs are stored unencrypted, that server-computed results are included, and that saved data is later retrievable via list/load. It omits details like overwrite behavior for duplicate names or authentication/error conditions.

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

Conciseness5/5

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

Three tight sentences, each earning its place: purpose, when to use, and storage behavior. The key constraint (unencrypted storage) is front-loaded after the core purpose.

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?

Given a full output schema and 100% parameter documentation, the description covers the essential behavioral traits. It could be more complete by mentioning handling of existing scenarios (overwrite vs. error) and pointing to 'update_calculation' as the alternative for saved scenarios.

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%, so the schema already documents all three parameters, including the calculationType enum and nested inputs. The description adds no parameter-specific meaning beyond what the schema provides, making the baseline 3 appropriate.

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 states a specific verb and resource ('Saves a calculator scenario to the authenticated user's stored history'), making the operation clear. It does not explicitly differentiate itself from the sibling 'update_calculation' or 'list_saved_calculations', so it stops short of a 5.

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?

It gives a clear triggering context: 'Use when the user asks to save, keep or remember a scenario.' However, it offers no exclusions or alternative routing, such as using 'update_calculation' for an already-saved scenario, which would be needed for a 5.

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

simulate_life_insurance_flushAInspect

Simulates a Cyprus unit-linked life insurance policy and calculates tax and returns from executed withdrawals only. Requests above available funds are capped and flagged; self-funded surrender taxes are included in household cash flows and IRR. Use to model withdrawals from an existing Cyprus life-insurance policy. Require actual policy terms, tax rate, historical policy records and future premium/withdrawal projections; ask for missing items and never generate policy history. Amounts requested above available funds are limited to executed proceeds, and tax/return figures follow those executed cash flows. Forecast returns are assumptions and must be identified as such.

NameRequiredDescriptionDefault
ageYesCurrent age of the policyholder.
aumFeeYesAnnual management fee as a percent of fund value.
genderYesUsed to look up mortality rates.
scenarioNoWhich scenario to report as the primary result (default userInput). All three are always returned for comparison.
monthlyFeeYesFixed policy fee charged each month, EUR.
taxBracketYesMarginal income tax rate applied to taxable surrender amounts and to premium relief, percent.
projectionsYesFuture years to simulate.
historicalDataYesActual policy history; the last entry's endingBalance is the simulation's opening balance, and the 3/4-year lookbacks drive the safe limit.
brokerReturnRateNoAnnual return of the broker account, percent (used with useDifferentBrokerReturn).
investmentReturnYesAnnual percentage value (e.g. 2.5 for 2.5%). Supply the actual rate unless the user accepts a stated modelling default. Expected annual return inside the policy.
capitalSumInsuredYesDeath benefit / sum insured, EUR. Mortality cost applies to the amount at risk above the fund value.
contractStartYearYesCalendar year the policy started. Partial surrenders are only tax-free from the 4th policy year.
reinvestWithdrawalsNoWhen true, net withdrawals are reinvested in a broker account and IRR is computed on combined wealth.
useDifferentBrokerReturnNoUse brokerReturnRate instead of investmentReturn for the broker account.

Output Schema

NameRequiredDescription
irrNo
seriesNo
scenarioNo
irrWithTaxNo
assumptionsNo
finalBalanceNo
totalTaxPaidNo
irrWithoutTaxNo
totalFeesPaidNo
totalTaxSavedNo
irrPerspectiveNo
totalWithdrawnNo
safeLimitByYearNo
finalBrokerBalanceNo
finalPolicyBalanceNo
scenarioComparisonNo
totalMortalityCostNo
totalSelfFundedCostNo
irrUnavailableReasonNo
irrWithTaxPerspectiveNo
netWithdrawalsPaidOutNo
mortalityDataAvailableNo
irrWithoutTaxPerspectiveNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does well: it discloses that over-requests are capped and flagged, that self-funded surrender taxes affect household cash flows and IRR, and that forecast returns are assumptions requiring labeling. It could be stronger by explicitly stating that the tool is a pure simulation with no persistent side effects.

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

Conciseness3/5

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

The purpose is front-loaded, but the description repeats the same capping/executed-withdrawals concept in two separate sentences. The core information is useful, yet the redundancy costs some conciseness.

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 complex 14-parameter simulation with no annotations and an output schema, the description covers the key domain constraints: required real policy data, no generated history, capping behavior, and assumption labeling. The schema and output schema handle the detailed parameter and return semantics.

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%, so parameter meanings are already fully documented in the input schema. The description adds domain-level expectations such as using actual policy terms and not fabricating history, but it does not add parameter-specific syntax or constraints beyond the schema.

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 verb and resource: simulates a Cyprus unit-linked life insurance policy and calculates tax and returns from executed withdrawals. The added instruction 'Use to model withdrawals from an existing Cyprus life-insurance policy' clearly separates it from generic tax, pension, or portfolio siblings.

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?

Gives clear context for when to use the tool and lists required inputs (actual policy terms, tax rate, historical records, future projections). It also instructs the agent to ask for missing items and never generate policy history, though it does not explicitly name when not to use it or point to a specific alternative.

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

simulate_mortgageAInspect

Simulates a Cyprus mortgage with a payment schedule that reconciles paid amounts to principal and interest. Supports fixed then variable periods, monthly overpayments, lump sums and interest-only loans; interest-only minimum payments track the remaining balance, with principal due at maturity. KFIK and cash-collateral configurations are not available through this API. Use only to estimate a Cyprus mortgage payment, amortization, overpayments or rate scenarios. Require the actual loan amount, term, selected fixed-period length and the rate inputs for each phase that applies; never substitute example loan terms or rates. EUR amounts and annual percentage rates are expected. For document checklists or general mortgage information, do not call the calculator; answer or research directly without narrating tool selection.

NameRequiredDescriptionDefault
fixedRateNoActual all-in annual fixed rate in percent, required when a fixed period applies.
bankMarginNoActual bank margin in annual percentage points added to the variable base rate; do not split an all-in rate without confirmation.
closureFeeNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
upfrontFeesNoEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
mortgageTypeNoRepayment structure. Defaults to capital_and_interest.capital_and_interest
ercPercentageNoEarly repayment charge, percent of the balance.
ercPeriodYearsNoYears the early repayment charge applies.
mortgageAmountYesEUR amount. Supply the actual value when applicable; use 0 only when confirmed to be zero.
feesAddedToLoanNoWhether upfront fees are capitalised into the loan.
loanPeriodYearsYesLoan term in years.
fixedPeriodYearsYesActual number of years at the fixed rate before variable pricing (0 means fully variable); ask if unknown.
variableBaseRateNoActual annual reference rate (such as ECB or Euribor) in percent, for the variable phase.
monthlyOverpaymentNoExtra amount paid each month, EUR.
lumpSumOverpaymentsNoOne-off overpayments.
overpaymentPeriodTypeNoWhen overpayments are made across the term.
overpaymentYearsCountNoNumber of years overpayments run when period type is first/last.

Output Schema

NameRequiredDescription
seriesNo
balloonDueYes
assumptionsYes
sumOfAllPaymentsYes
totalInterestPaidYes
minRequiredPaymentYes
closureCashRequiredYes
totalMonthlyPaymentYes
actualRepaymentYearsYes
actualRepaymentMonthsYes
avgAnnualCapitalPaymentYes
totalInterestByScenarioYes
avgAnnualInterestPaymentYes
earlyRepaymentChargeYear3Yes
earlyRepaymentBalanceYear3Yes
earlyRepaymentClosureCashYear3Yes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and delivers substantive behavior: fixed-then-variable phases, monthly and lump-sum overpayments, interest-only mechanics ('minimum payments track the remaining balance, with principal due at maturity'), and unsupported KFIK/cash-collateral modes. It also imposes input-integrity rules ('never substitute example loan terms or rates', EUR amounts and APR expected). Not fully disclosed are determinism/statelessness and rounding conventions on the produced schedule.

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?

A single front-loaded paragraph that leads with the purpose, then capabilities, then exclusions, then input requirements — good ordering. Slight bloat in the trailing meta-instruction ('without narrating tool selection'), which is agent-directed rather than tool-descriptive.

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 16-parameter, annotation-free calculator, the description supplies the capability scope, the exclusion set, the input-integrity contract, and the currency/rate conventions, while the output schema covers return values and the schema covers each parameter's type and bounds. Nothing an agent needs 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.

Parameters3/5

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

Schema coverage is 100%, so the schema already documents every parameter including enums and ranges; baseline is 3. The description adds useful framing — which inputs are mandatory in practice (actual loan amount, term, fixed-period length, rate inputs per applicable phase), the EUR/APR units, and the prohibition on fabricated example values — but it does not explain parameter interactions such as bankMargin vs variableBaseRate or overpaymentPeriodType/overpaymentYearsCount beyond what the schema states.

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?

Opens with a specific verb and resource: 'Simulates a Cyprus mortgage with a payment schedule that reconciles paid amounts to principal and interest.' The Cyprus/mortgage framing plus the amortization-and-reconciliation scope clearly separates it from siblings like audit_mortgage_statement, parse_mortgage_statement_text and compare_rent_vs_buy.

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?

Gives explicit when-to-use ('estimate a Cyprus mortgage payment, amortization, overpayments or rate scenarios') and when-not ('For document checklists or general mortgage information, do not call the calculator; answer or research directly'), plus an unsupported-configuration exclusion (KFIK and cash-collateral). An agent can route correctly without inference.

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

update_calculationAInspect

Renames a saved calculation and/or replaces its inputs (recomputing results). Use when the user asks to rename a save or re-run it with different inputs. Encrypted saves stay locked.

NameRequiredDescriptionDefault
nameNoNew display name.
inputsNoReplacement tool-style inputs; results are recomputed server-side.
calculationIdYesID returned by list_saved_calculations.

Output Schema

NameRequiredDescription
idNo
nameNo
seriesNo
updatedAtNo
assumptionsNo
calculationTypeNo

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses two genuinely useful traits: replacing inputs triggers a server-side recompute (a side effect the agent must anticipate), and encrypted saves remain locked, implying the operation will not take effect on them. It omits permission requirements and behavior when neither field is supplied, so not perfect.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action, then the usage trigger, then the constraint. Every sentence adds distinct information with no restatement of the title or name.

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?

Output schema exists, so return values need no explanation, and all three parameters are documented in-schema. The description covers the mutation semantics and the encrypted-save caveat. Minor gaps remain around whether a call with neither optional field errors out.

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%, so the baseline is 3. The description reinforces the optional/partial nature of the update via 'and/or' and restates that inputs cause recomputation, but adds no format or format-specific detail beyond the schema.

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?

Specific verbs and resource: 'Renames a saved calculation and/or replaces its inputs (recomputing results).' An agent can distinguish this mutation from save_calculation, load_saved_calculation and delete_saved_calculation from the description alone. No sibling is named explicitly, so not a 5.

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?

Explicit trigger condition: 'Use when the user asks to rename a save or re-run it with different inputs.' That maps user intent directly to tool choice. No explicit when-not or named alternatives (e.g. use save_calculation to create a new one), which keeps it below 5.

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.

  1. 25 tool updates
    • First observedanalyze_portfolio
    • First observedaudit_mortgage_statement
    • First observedcalculate_cyprus_capital_gains
    • First observedcalculate_cyprus_income_tax
    • First observedcalculate_cyprus_state_pension
    • First observedcalculate_cyprus_unemployment_benefit
    • First observedcalculate_ev_savings
    • First observedcalculate_stock_options
    • First observedcompare_investment_vehicles
    • First observedcompare_rent_vs_buy
    • First observedcompare_saved_calculations
    • First observeddelete_saved_calculation
    • First observedget_pension_reference_data
    • First observedlist_saved_calculations
    • First observedload_saved_calculation
    • First observedoptimize_company_director_remuneration
    • First observedparse_mortgage_statement_text
    • First observedparse_pension_statement
    • First observedparse_portfolio_csv
    • First observedplan_monthly_budget
    • First observedrun_retirement_stress_test
    • First observedsave_calculation
    • First observedsimulate_life_insurance_flush
    • First observedsimulate_mortgage
    • First observedupdate_calculation

Publisher details

Operator
PoliErgaleio · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Unknown
Restrictions
Public calculators are anonymous and rate-limited. Saved-data tools require a PoliErgaleio account with operator-approved OAuth onboarding or an API key. Password-protected saves must be opened on poliergaleio.com. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Public, no-login MCP server exposing SmartMoney77's financial calculators: compound interest, FIRE number, credit-card payoff, emergency fund, inflation, fees and the cost of waiting. Also computes historical "what if I had invested" returns from real yearly price data, and builds deep links and share packs for calculators in 6 localized editions.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    17 deterministic personal-finance tools across 7 countries (US, UK, CA, AU, AE, SA, India) plus Sharia-compliant Islamic finance (Zakat, Murabaha, Ijarah, Mudarabah, Hajj savings, halal stock screening). Wraps the open-source calcnook engine — zero API keys, pure stdlib, MIT.
    17
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    The most comprehensive everyday calculator MCP server — 501 tools across 22 categories covering 8 countries' tax systems (FR, BE, CH, CA, US, UK, MA, SN). Finance, health, math, science, construction, conversions, education, sport, cooking, travel, and more. Free, no API key required. Streamable HTTP transport.
    15
    7 npm
    1
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    open-source personal finance app with a first-party MCP server. 91 HTTP tools (OAuth 2.1 + DCR) and 87 stdio tools cover transactions, budgets, accounts, portfolio analytics, FX conversion, loans, subscriptions, goals, importers, and rules. Users self-host with Docker + PostgreSQL or use the managed cloud
    89
    25
    AGPL 3.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources