Skip to main content
Glama

Server Details

TrueCalci Precision Compute Engine

Deterministic statutory, financial, and engineering computational tools for AI agents, developers, and autonomous workflows over the Model Context Protocol (MCP).

Capabilities (25 Verified Engines):

  • Specialist FinOps: Remote Contractor vs. W-2 Parity, S-Corp Reasonable Compensation (IRS Rev. Rul. 74-44), Solo 401(k) Shelter, Cross-Border FX Drag, Billable Capacity Floor.

  • Global & Cross-Border Tax: US Form 2555 FEIE Nomad Stacking, B2B Foreign

Ownership verified
Status
Healthy
Uptime
100.0% over 43 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.8/5.0

Scored across 29 tools

Disambiguation4/5

Most tools target a clearly distinct calculation, and descriptions include explicit 'Do not use X; use Y instead' cross-references (e.g. gst_regular vs gst_composition, home_loan_emi vs mortgage_piti, billable_floor vs contractor_parity) that strongly aid selection. Some residual overlap exists within the investment family (compound_wealth, sip_investment, cagr_inflation, ppf, sukanya) and the loan family, but the descriptions draw the boundaries well.

Naming Consistency4/5

All names are lowercase snake_case, giving a uniform surface style. However the pattern is noun/noun-phrase rather than a verb_noun convention, and several tools are bare acronyms (fd, ppf, tcs, tds) mixed with descriptive phrases, which is a minor inconsistency.

Tool Count3/5

At 29 tools the set is on the heavy side per the rubric. The breadth (India tax, US tax, investments, loans, cloud/AI finops, unit conversion, invoicing) justifies many entries, but several compounding calculators and multiple Indian tax tools could plausibly be consolidated.

Completeness4/5

Coverage is very broad across tax, investment, loan, finops, and conversion domains, with a meta tool (pack_status) exposing rate tables. Only minor gaps appear, such as no simple currency conversion or consolidated amortization export, which agents can work around.

Available Tools

29 tools
advance_taxIndia advance tax instalmentsA
Read-onlyIdempotent
Inspect

Calculate Indian advance tax instalments and the interest for late or short payment (Sections 234A, 234B and 234C; sections 207-211). Instalment deadlines: 15% by 15 June, 45% by 15 September, 75% by 15 December, 100% by 15 March (presumptive 44AD/44ADA: 100% by 15 March). Pass the payments actually made and the filing date to get the interest; without them every instalment is treated as unpaid.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
assessed_taxYesTotal tax on the year's income in INR (₹), before advance tax and before TDS/TCS credit. Advance tax applies when the balance after TDS/TCS is ₹10,000 or more.
tds_tcs_creditNoTax already deducted or collected at source for the year (₹). Default 0.
filing_categoryNoSets the return due date. non_audit_individual (ITR-1/ITR-2): 31 July. non_audit_business (business or profession, accounts not audited, and such firms' partners): 31 August from tax year 2026-27, 31 July before. audit_corporate_and_business: 31 October. transfer_pricing_international: 30 November.non_audit_individual
advance_tax_paidNoAdvance tax payments made, each with its date. Omit if none were made.
capital_gains_taxNoPart of assessed_tax that arises on capital gains (₹); excluded from instalments due before the gain arose.
date_of_filing_or_paymentNoDate the return was (or will be) filed, YYYY-MM-DD. Ends the Section 234B period and decides whether Section 234A applies. Default: the return due date for filing_category.
is_presumptive_44ad_44adaNoTrue if income is declared under presumptive taxation (44AD/44ADA): one instalment of 100% by 15 March.
is_senior_citizen_no_businessNoTrue for a resident senior citizen (60+) with no business or professional income: exempt from advance tax.

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
statusNo
currencyNo
as_of_dateNo
disclaimerNo
minor_unitsNo
rule_ids_usedNo
financial_yearNo
is_presumptiveNo
tds_tcs_creditNo
assessment_yearNo
return_due_dateNo
gross_assessed_taxNo
instalment_detailsNo
total_amount_payableNo
unpaid_tax_principalNo
advance_tax_applicableNo
filing_or_payment_dateNo
total_advance_tax_paidNo
total_interest_payableNo
section_234a_applicableNo
section_234b_applicableNo
net_advance_tax_base_s208No
section_234a_months_chargedNo
section_234b_months_chargedNo
total_section_234a_interestNo
total_section_234b_interestNo
total_section_234c_interestNo
exemption_or_applicability_reasonNo
section_234b_threshold_90_percentNo
section_234a_shortfall_base_rule119aNo
section_234b_shortfall_base_rule119aNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/non-destructive, so safety is covered. The description adds a genuinely useful behavioural default beyond the structured fields: 'without them every instalment is treated as unpaid', clarifying the consequence of omitting advance_tax_paid. It does not describe output shape, but 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?

Three sentences, purpose front-loaded, then the instalment rules, then the default-behaviour caveat. Dense but nearly every clause carries information; the parenthetical deadline list is compact. Slightly crowded but no filler.

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?

With an output schema present the description needn't explain return values, and annotations cover the safety profile. The description supplies the statutory rules and the key default (unpaid instalments) needed to invoke the 9-parameter tool correctly, so nothing essential is missing for a read-only calculator.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema carries the parameter detail. The description nonetheless adds domain meaning the schema lacks, namely the instalment percentages and deadlines (15%/45%/75%/100%) and the presumptive 44AD/44ADA single-instalment rule, which help the agent reason about the 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 ('Calculate') and resource ('Indian advance tax instalments and the interest for late or short payment') with statutory grounding in Sections 234A/234B/234C and 207-211. An agent can distinguish this from the sibling tax tools (tax_in, tds, tcs, gst_regular) 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?

Explicitly tells the agent to 'Pass the payments actually made and the filing date to get the interest', which is actionable guidance on inputs. It also lays out the deadline schedule so the agent understands what the tool models, but it stops short of naming when to prefer a sibling (e.g., tax_in for a plain income-tax computation) or any explicit exclusion.

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

ai_token_arbitrageAI token cost arbitrageA
Read-onlyIdempotent
Inspect

Calculate multi-provider LLM API inference token costs, prompt caching economics (up to 95% discount), batch API savings (50%), and cross-model cost disparity multipliers across frontier and high-efficiency models (Anthropic Claude, OpenAI GPT, Google Gemini, DeepSeek).

Behavior: Deterministic, idempotent calculation with zero external side effects. Models official public provider pricing cards per million input/output tokens. Incorporates prompt cache hit pricing reductions and asynchronous batch API discounts. Evaluates real-time pack age and freshness status (FRESH < 14 days, AGING 14-30 days, STALE > 30 days). Returns comprehensive model cost matrix, cheapest and most expensive model arbitrage analysis, cache savings, and monthly cost projections.

Usage Guidelines: Use when budgeting AI agent inference costs, evaluating LLM providers, or deciding whether to implement prompt caching or batch inference. Do not use for cloud network egress; use cloud_egress_finops instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
isBatchNoCamelCase alias for is_batch.
asOfDateNoCamelCase alias for as_of_date.
is_batchNoWhether asynchronous batch processing discount (50%) applies. Alias: isBatch.
as_of_dateYesISO date string (YYYY-MM-DD) for rate-pack historical resolution (e.g. '2026-09-07' for current, '2025-11-15' for 2025-Q4). Alias: asOfDate.
promptTokensNoCamelCase alias for prompt_tokens.
cacheHitRatioNoCamelCase alias for cache_hit_ratio.
prompt_tokensYesNumber of input prompt tokens per API call. Must be a non-negative integer. Alias: promptTokens.
cache_hit_ratioNoProportion of input prompt tokens served from cache (0.0 to 1.0 or 0% to 100%). Default is 0.80 (80%). Alias: cacheHitRatio.
completionTokensNoCamelCase alias for completion_tokens.
completion_tokensYesNumber of generated output completion tokens per API call. Must be a non-negative integer. Alias: completionTokens.

Output Schema

ParametersJSON Schema
NameRequiredDescription
inputsNo
matrixNo
arbitrageNo
freshnessNo
disclaimerNo
rate_pack_idNo
token_distributionNo
statutory_authorityNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so 'deterministic, idempotent, zero side effects' partly restates structured data. However, the description adds real behavioral substance: pricing is modeled per million input/output tokens, cache discounts up to 95% and batch discounts at 50% are applied, and a freshness tiering system (FRESH <14d, AGING 14-30d, STALE >30d) governs rate-pack resolution.

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 text is front-loaded and organized into labeled Behavior and Usage Guidelines sections, with no filler. It runs somewhat long for a single-function calculator, and a minor typo ('pack age') slightly blunts polish, but every sentence carries 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?

With an output schema present, rich annotations, and 100% schema description coverage, the description only needs to supply purpose, behavior, and routing — all of which it does, including the sibling exclusion. Nothing an agent needs to invoke this correctly 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 description coverage is 100% (including camelCase aliases), so the baseline is 3. The description goes beyond the schema by quantifying the economics behind the parameters — the up-to-95% cache discount tied to cache_hit_ratio and the 50% batch discount tied to is_batch — which gives the agent a reason to set those values.

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 specific verbs and resources — calculate multi-provider LLM inference token costs, prompt caching economics, batch API savings, and cross-model cost disparity — and names the actual providers. An agent can distinguish this from generic finops siblings 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 Guidelines5/5

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

It gives explicit positive triggers (budgeting agent inference costs, evaluating LLM providers, deciding on caching or batch inference) and an explicit negative routing rule: 'Do not use for cloud network egress; use cloud_egress_finops instead.' The alternative is named by exact tool.

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

billable_floorBillable rate floorA
Read-onlyIdempotent
Inspect

Solve the exact minimum billable hourly rate required to achieve a target net spendable cash income, factoring in unpaid weeks, non-billable administrative drag, deductible overhead, health insurance, and SECA self-employment taxes.

Behavior: Deterministic, idempotent calculation with zero external side effects. Numerically solves the gross revenue needed so that Gross - Expenses - Health - SECA Tax - Income Tax equals Target Net Cash. Divides required gross revenue by actual billable hours (accounting for vacation weeks and non-billable admin/marketing percentage) to derive the hourly billable floor.

Usage Guidelines: Use when a freelancer, consultant, or agency owner wants to set their baseline hourly rate to support their personal lifestyle budget. Do not use when directly benchmarking against a specific W-2 salary offer; use contractor_parity instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
filingStatusNoIRS income tax filing status: 'single' for unmarried individual or 'mfj' for married filing jointly.single
targetNetCashYesDesired annual net spendable cash take-home after all taxes and business expenses in USD ($/yr). Must be positive.
vacationWeeksNoNumber of unpaid vacation, holiday, and sick weeks off planned per year (e.g. 4 for 4 weeks).
annualExpensesNoAnnual tax-deductible business operating expenses in USD ($/yr) (software, office, hardware, insurance).
nonBillablePercentNoPercentage of total working hours lost to non-billable business activities like admin, sales, and invoicing (e.g. 28 for 28%).
healthInsuranceAnnualNoAnnual out-of-pocket health insurance premium in USD ($/yr) paid directly by the freelancer.

Output Schema

ParametersJSON Schema
NameRequiredDescription
currencyNo
metadataNo
economicsNo
disclaimerNo
naive_rateNo
minor_unitsNo
naive_economicsNo
naive_shortfallNo
target_net_cashNo
time_allocationNo
statutory_authorityNo
required_hourly_rateNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so 'deterministic, idempotent, zero side effects' is partly redundant. What is not redundant is the disclosed solution chain (Gross - Expenses - Health - SECA - Income Tax = Target Net Cash) and the derivation of the hourly floor from actual billable hours, which tells the agent how the number is produced rather than just that it is safe.

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 computation before the behavioral block and the usage routing; the labeled Behavior/Usage structure makes it scannable. It runs a bit long and restates safety traits the annotations already carry, but no sentence is filler in a way that harms selection.

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?

With an output schema present, rich annotations, and 100% schema coverage, the description only needs to add algorithmic intent and routing, and it does both. The agent knows what the tool computes, when to pick it, and which sibling to prefer otherwise.

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 every parameter is already documented in the schema; the baseline is 3. The description loosely maps its listed factors onto parameters (unpaid weeks -> vacationWeeks, admin drag -> nonBillablePercent, health -> healthInsuranceAnnual), but adds no units, formats or defaults beyond what the schema already 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?

States a precise verb+resource: solve the minimum billable hourly rate to hit a target net cash income, and enumerates the factors it accounts for (unpaid weeks, admin drag, overhead, health insurance, SECA). It explicitly distinguishes itself from contractor_parity, so an agent can route correctly without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit use case (freelancer/consultant/agency owner setting a baseline lifestyle-supporting rate) and an explicit exclusion with the named alternative: do not use for benchmarking against a W-2 salary offer, use contractor_parity instead.

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

breakeven_marginBreak-even and marginA
Read-onlyIdempotent
Inspect

Standard precision: this calculator uses ordinary floating-point arithmetic, keeps no dated table of official rates, and has not yet passed our full reference-test suite. Calculate cost-volume-profit break-even thresholds in units and revenue, contribution margin ratio, operational margin of safety, and degree of operating leverage (DOL).

Behavior: Deterministic, idempotent calculation with zero external side effects. Computes Unit Contribution Margin = unitPrice - unitVariableCost; Contribution Margin Ratio = CM / unitPrice; Break-Even Units = fixedCosts / CM; Break-Even Revenue = Break-Even Units * unitPrice. If expected units sold is provided, computes Margin of Safety = (expectedUnits - breakEvenUnits) / expectedUnits and Degree of Operating Leverage. Returns detailed breakdown.

Usage Guidelines: Use for pricing strategy, manufacturing and SaaS unit economics, and operational risk appraisal. Do not use for hourly freelance billing rate minimums; use billable_floor instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitPriceYesSelling price per individual product or service unit in currency units. Must be greater than unitVariableCost.
fixedCostsYesTotal periodic fixed operating overhead costs in currency units (rent, salaries, software). Must be positive.
unitVariableCostYesDirect variable cost incurred per unit produced or delivered in currency units. Must be non-negative.
expectedUnitsSoldNoProjected sales volume in units to evaluate operational margin of safety and operating leverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
unitPriceNo
fixedCostsNo
breakEvenUnitsNo
expectedProfitNo
breakEvenRevenueNo
unitVariableCostNo
expectedUnitsSoldNo
marginOfSafetyUnitsNo
marginOfSafetyPercentNo
marginOfSafetyRevenueNo
unitContributionMarginNo
degreeOfOperatingLeverageNo
contributionMarginRatioPercentNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real value beyond that: it discloses the numerical precision posture (ordinary floating-point, no dated rate table, not passed the full reference-test suite) and the exact formulas used, which the agent could not infer from structured fields.

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-loads the precision caveat, then behavior/formulas, then usage routing, which is a sensible order. It is somewhat long and 'Deterministic, idempotent calculation with zero external side effects' partly repeats the annotations, but most sentences carry distinct 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?

An output schema exists, so return values need no elaboration, and the description still notes a detailed breakdown is returned. Combined with the formulas, the optional expectedUnitsSold behavior (margin of safety and DOL only when supplied), and the precision caveat, nothing needed to call 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 description coverage is 100%, so the schema already documents all four parameters and their constraints (e.g., unitPrice must exceed unitVariableCost). The formulas restate how inputs relate but add no syntax, format, or edge-case detail beyond the schema, so the baseline 3 applies.

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 (calculate) and a precise resource set: break-even thresholds in units and revenue, contribution margin ratio, margin of safety, and degree of operating leverage. It also names the sibling it is not (billable_floor), so an agent can distinguish it without opening schemas.

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 domains (pricing strategy, manufacturing and SaaS unit economics, operational risk appraisal) and an explicit when-not with the correct alternative: 'Do not use for hourly freelance billing rate minimums; use billable_floor instead.' Routing is unambiguous.

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

cagr_inflationCAGR and inflation adjustmentA
Read-onlyIdempotent
Inspect

Calculate Compound Annual Growth Rate (CAGR), real inflation-adjusted purchasing power growth (Fisher equation), and exact investment doubling time (Rule of 72 exact logarithmic solution).

Behavior: Deterministic, idempotent calculation with zero external side effects. Computes Nominal CAGR = (finalValue / initialValue)^(1 / periodsYears) - 1. Computes Real CAGR using the exact Fisher relation: (1 + Nominal) / (1 + Inflation) - 1. Computes exact doubling horizon = ln(2) / ln(1 + Nominal). Returns nominal CAGR %, real CAGR %, total nominal gain, total real purchasing power gain, and doubling years.

Usage Guidelines: Use for evaluating historical investment portfolio track records, business revenue growth metrics, and inflation drag analysis. Do not use for forward-looking recurring monthly investment projections; use compound_wealth or sip_investment instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoHISTORICAL_CAGR: growth from initialValue to finalValue. PROJECTION: grow initialValue at expected_annual_return_rate.
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
finalValueYesEnding value (HISTORICAL_CAGR), as a string with exactly 2 decimal places.
initialValueYesStarting value, as a string with exactly 2 decimal places.
periodsYearsYesPeriod in years, from 0.0833 (1 month) to 50.
inflationRatePercentNoAnnualized inflation rate percentage over the period (e.g. 2.5 for 2.5%).
expected_annual_return_rateNoExpected annual return in percent, as a decimal string. Required for PROJECTION mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
traceNo
statusNo
as_of_dateNo
disclaimerNo
final_valueNo
tenure_yearsNo
initial_valueNo
rule_ids_usedNo
rule_of_72_yearsNo
real_cagr_percentNo
yearly_trajectoryNo
total_absolute_gainNo
exact_doubling_yearsNo
nominal_cagr_percentNo
purchasing_power_lossNo
inflation_rate_appliedNo
real_purchasing_power_valueNo
nominal_total_return_percentNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered; the description's 'deterministic, idempotent, zero external side effects' sentence is partly redundant with that. It does add genuine value by disclosing the exact computational relations (Fisher equation, ln(2)/ln(1+Nominal)) and the returned metrics, which the annotations cannot convey.

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 tool's purpose, then behavior, then usage routing in distinct labeled blocks. The formula clauses are dense but arguably earn their place for a math utility; the sentence count is modest and there is 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 explaining return values is technically unnecessary, yet the description still enumerates them (nominal CAGR %, real CAGR %, gains, doubling years) for clarity. Combined with annotations covering safety and idempotency, an agent has enough to call the tool correctly, though PROJECTION mode usage is left entirely to the schema.

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 all seven parameters, including the mode enum and the PROJECTION-only expected_annual_return_rate, are already documented in the schema. The description implies how initialValue, finalValue, periodsYears and inflation combine mathematically, but never mentions 'mode' or the projection path, so it does not add parameter meaning 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 (Compute CAGR, real inflation-adjusted growth, doubling time) and names the exact outputs produced. The usage section explicitly names the sibling tools compound_wealth and sip_investment it is not, so an agent can separate it from look-alike growth calculators.

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?

Provides explicit 'use for' contexts (historical portfolio track records, revenue growth, inflation drag) and an explicit 'do not use for' with the alternative tools to pick instead (compound_wealth, sip_investment). Nothing is left to inference.

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

cloud_egress_finopsCloud egress cost (FinOps)A
Read-onlyIdempotent
Inspect

Analyze tiered AWS/GCP public cloud internet data transfer egress pricing versus Cloudflare Zero-Egress Bandwidth Alliance and edge caching proxies, quantifying monthly and annual infrastructure cost savings.

Behavior: Deterministic, idempotent calculation with zero external side effects. Calculates tiered AWS/GCP egress charges ($0.09/GB for first 10TB, $0.085/GB for next 40TB, $0.07/GB for next 100TB, $0.05/GB beyond). Models edge cache offload reduction and compares against Cloudflare zero-egress routing. Returns monthly and annual gross egress costs, post-cache costs, and total net savings.

Usage Guidelines: Use for cloud architecture budgeting, FinOps reviews, and evaluating CDN caching or Cloudflare migration economics. Do not use for LLM token pricing; use ai_token_arbitrage instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesCivil date YYYY-MM-DD selecting the monthly egress price pack. Required; only months with a published pack are answered (otherwise a structured refusal).
cacheHitRatioNoExpected CDN edge caching hit ratio as a decimal (0.0 to 1.0) or percentage (0 to 100%). Default is 0.85 (85%).
monthlyEgressGBNoMonthly public internet outbound data transfer volume in Gigabytes (GB) (e.g. 50000 for 50 TB). Must be positive.
primary_providerNoThe cloud the traffic leaves from, priced from the egress pack in force: 'aws', 'gcp' or 'azure'. Omitted: aws.

Output Schema

ParametersJSON Schema
NameRequiredDescription
inputsNo
savingsNo
freshnessNo
disclaimerNo
rate_pack_idNo
statutory_authorityNo
primary_provider_costNo
multi_cloud_comparisonNo
edge_proxy_optimizationNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows it is a safe, repeatable calculation. The description reinforces this with 'Deterministic, idempotent calculation with zero external side effects,' which is useful but largely redundant with annotations. It adds the pricing tiers and the return structure (monthly/annual gross, post-cache, net savings), which is extra context beyond annotations, but output schema likely covers return values. A 3 is appropriate: some added value but not deep 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.

Conciseness4/5

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

The description is structured into purpose, behavior, and usage guidelines, with clear front-loading of the core function. It is appropriately sized and every sentence contributes. It could be marginally tighter, but no sentence is 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?

Given the tool is a read-only calculation with a full input schema, an output schema, and rich annotations, the description covers purpose, behavior, and routing well. The only minor gap is not explaining the structured refusal for missing price packs beyond what the schema already states. Overall, it is complete enough for correct invocation.

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 all four parameters are already documented in the input schema with descriptions, defaults, and enums. The description adds no parameter-level detail beyond what the schema provides. Baseline 3 is correct 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.

Purpose5/5

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

The description opens with a specific verb+resource: 'Analyze tiered AWS/GCP public cloud internet data transfer egress pricing versus Cloudflare Zero-Egress Bandwidth Alliance and edge caching proxies.' It distinguishes itself from all financial siblings by naming the exact cost domain (cloud egress) and even names the closest sibling, ai_token_arbitrage, to disambiguate.

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?

Usage guidelines are explicit: 'Use for cloud architecture budgeting, FinOps reviews, and evaluating CDN caching or Cloudflare migration economics.' It also provides an explicit exclusion: 'Do not use for LLM token pricing; use ai_token_arbitrage instead.' This is exactly the when-to-use/when-not-to-use/alternative structure that earns a 5.

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

compound_wealthCompound wealth growthA
Read-onlyIdempotent
Inspect

Standard precision: this calculator uses ordinary floating-point arithmetic, keeps no dated table of official rates, and has not yet passed our full reference-test suite. Simulate long-term compound interest growth for retirement portfolios, 401(k)s, Roth IRAs, UK ISAs, or European ETF savings plans (Sparplan) with recurring monthly deposits.

Behavior: Deterministic, idempotent calculation with zero external side effects. Applies discrete compound interest formula with periodic annuity deposits: Future Value = P*(1 + r/n)^(nt) + PMT(((1 + r/n)^(n*t) - 1)/(r/n)). Returns final accumulated balance, total principal contributed, total compound interest earned, and annual wealth progression milestone table.

Usage Guidelines: Use for multi-year personal wealth projection and retirement nest-egg simulations. Do not use for Indian mutual fund monthly SIPs with annual step-up; use sip_investment instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
principalNoInitial lump-sum deposit or starting balance in currency units. Must be non-negative.
tenureYearsYesInvestment horizon in years (e.g. 10, 20, 30). Must be an integer >= 1.
monthlyDepositNoRecurring monthly contribution added to the account. Must be non-negative.
annualRatePercentYesExpected annualized investment return rate percentage (e.g. 8 for 8%). Must be positive.
compoundFrequencyNoNumber of compounding periods per year (1 for annual, 4 for quarterly, 12 for monthly).

Output Schema

ParametersJSON Schema
NameRequiredDescription
principalNo
futureValueNo
totalInterestNo
totalDepositedNo
yearlyScheduleNo

TDQS

A4.6/5.0
Behavior4/5

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

The annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the description's repetition of determinism and zero side effects adds little. However, it goes beyond annotations by disclosing precision limitations ('ordinary floating-point arithmetic,' 'no dated table of official rates,' 'not yet passed our full reference-test suite'), the exact formula used, and the return contents.

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 description is well-structured with clear sections for precision caveat, purpose, behavior, and usage. It is slightly less front-loaded because the precision caveat comes before the purpose, and the deterministic/idempotent/zero-side-effects sentence duplicates annotation data, but no sentence is seriously wasteful.

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 the tool's complexity, rich annotations, and an existing output schema, the description is complete enough: it covers purpose, usage boundaries, calculation method, precision caveats, and the alternative tool. An agent has everything needed to invoke it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds useful semantic mapping via the formula: P corresponds to principal, r to annualRatePercent, n to compoundFrequency, t to tenureYears, and PMT to monthlyDeposit, clarifying how the parameters interact.

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: 'Simulate long-term compound interest growth for retirement portfolios... with recurring monthly deposits.' It explicitly distinguishes itself from the sibling tool sip_investment for Indian mutual fund SIPs, so an agent can route correctly without inspecting schemas.

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?

It gives clear when-to-use guidance: 'Use for multi-year personal wealth projection and retirement nest-egg simulations.' It also gives an explicit exclusion and alternative: 'Do not use for Indian mutual fund monthly SIPs with annual step-up; use sip_investment instead.'

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

contractor_parityUS 1099 contractor vs W-2 parityA
Read-onlyIdempotent
Inspect

Calculate tax liabilities, statutory benefits, and net take-home cash between W-2 salaried employment and 1099 independent contractor billing, solving the exact breakeven billing rate ($/hr).

Behavior: Deterministic, idempotent calculation with zero external side effects. Computes federal FICA (Social Security up to statutory wage base and Medicare), federal income tax brackets, state income tax, employer health subsidy, 401(k) match, PTO value, SECA tax with 50% above-the-line deduction, and Section 199A QBI deduction. Returns net spendable cash for both employment models, complete tax breakdowns, effective tax rates, and the exact breakeven hourly rate.

Usage Guidelines: Use when an individual or hiring manager is deciding between a W-2 salaried offer and a 1099 contractor contract. Do not use for solo freelancer baseline rate setting without a W-2 benchmark; use billable_floor instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
ptoDaysNoAnnual W-2 paid time off days (combined vacation and sick leave).
w2SalaryYesW-2 gross annual salary in USD ($/yr). Must be a positive number.
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
eligibleQBIYesWhether the contractor income qualifies for the Section 199A qualified business income deduction. Required: it changes federal tax and is not assumed.
filingStatusNoIRS income tax filing status: 'single' for unmarried individual or 'mfj' for married filing jointly.single
hoursPerWeekNoExpected billable client hours per week as a 1099 contractor. Must be greater than 0.
weeksPerYearNoActive billable working weeks per year as a 1099 contractor (52 minus unpaid vacation and bench time).
annualExpensesNoAnnual tax-deductible business operating expenses in USD ($/yr) (software, hardware, insurance).
match401kPercentNoW-2 employer 401(k) retirement match as a percentage of gross salary (e.g. 4.0 for 4%).
healthSubsidyAnnualNoAnnual W-2 employer-paid health insurance subsidy in USD ($/yr).
stateTaxRatePercentNoEffective or statutory state income tax rate in percent (e.g. 5.0 for 5%). Set to 0 for states without income tax.
contractorHourlyRateYes1099 contractor hourly billing rate in USD ($/hr). Must be a positive number.

Output Schema

ParametersJSON Schema
NameRequiredDescription
w2No
verdictNo
currencyNo
metadataNo
contractorNo
disclaimerNo
w2TakeHomeNo
minor_unitsNo
net_cash_deltaNo
contractorTakeHomeNo
breakevenHourlyRateNo
statutory_authorityNo
contractor_advantageNo
breakeven_contractor_hourly_rateNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the leading 'deterministic, idempotent, zero side effects' sentence restates structured data. However, it adds real context by enumerating the computational scope (FICA/SECA, QBI, 199A, 401k match, PTO, health subsidy) so the agent knows the breadth of what is modeled before invoking.

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?

Front-loaded purpose sentence followed by clearly labeled Behavior and Usage Guidelines blocks. Length is proportionate to a 12-parameter, multi-domain tax engine and no sentence is filler.

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?

With a full output schema, complete per-parameter descriptions, and annotations covering the safety profile, the description only needs to add scope and routing — which it does. Nothing an agent needs to call this 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 description coverage is 100% with defaults and constraints documented per property, so the baseline is 3. The description adds no per-parameter meaning (e.g. no guidance on how as_of_date's rule pack or eligibleQBI interacts) beyond what the schema already documents.

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 (Calculate) and a precisely scoped resource (W-2 vs 1099 tax, benefits and net take-home parity), including the exact deliverable (breakeven $/hr). Clearly differentiated from the sibling billable_floor, which is named directly.

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 when ('deciding between a W-2 salaried offer and a 1099 contractor contract') and an explicit when-not with the named alternative ('do not use for solo freelancer baseline rate setting without a W-2 benchmark; use billable_floor instead'). The routing decision is fully determined from the description.

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

fdFixed deposit maturityB
Read-onlyIdempotent
Inspect

Calculate Bank and Corporate Fixed Deposit (FD) maturity amount and interest returns. Computes quarterly, monthly, half-yearly, and cumulative compounding with Section 194A TDS threshold analysis (₹40,000 general / ₹50,000 senior citizens).

ParametersJSON Schema
NameRequiredDescriptionDefault
principalYesDeposit amount in INR. At least 1,000 (statutory minimum FD principal, RBI Master Direction 2016).
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
interest_rateYesAnnual interest rate in percent, as a decimal string (e.g. 7.00).
tenure_monthsYesDeposit tenure in months (3 to 120, as the fixed deposit rule pack allows).
compounding_conventionNoRead-only. Compounding is fixed by the statutory rule pack in force, not chosen by the caller: Indian bank fixed deposits compound quarterly by RBI convention. Supplying any other value does not change the computation, so only the supported convention is listed. The value actually applied is returned in the response as compounding_convention.

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
statusNo
currencyNo
principalNo
as_of_dateNo
disclaimerNo
minor_unitsNo
payout_typeNo
tenure_yearsNo
rule_ids_usedNo
tds_thresholdNo
gross_interestNo
tds_applicableNo
maturity_amountNo
yearly_scheduleNo
is_senior_citizenNo
section_referenceNo
base_interest_rateNo
total_tds_deductedNo
net_maturity_amountNo
compounding_conventionNo
effective_interest_rateNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful domain behavior (statutory rule-pack analysis, Section 194A TDS thresholds of 40,000/50,000), but says nothing about rate limits, output shape, or precision/rounding behavior — a moderate but not rich addition.

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

Conciseness4/5

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

Two sentences, front-loaded with the core purpose before the TDS detail. Efficient overall, though the compounding-convention enumeration adds a claim that the schema does not support and could mislead.

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 no explanation, and the description covers purpose plus the TDS threshold behavior. The only gap is that it does not resolve the apparent mismatch between the listed compounding options and the schema's fixed quarterly enum.

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 carries parameter meaning and the baseline is 3. The description adds no per-parameter detail beyond what the schema states, and its claim of 'quarterly, monthly, half-yearly, and cumulative compounding' is not reconciled with the single-value enum in 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?

States a specific verb and resource (calculate FD maturity amount and interest returns) and names the compounding and TDS computations performed. It is clearly distinguishable from siblings like ppf, sukanya, or sip_investment, though it never explicitly contrasts itself with them.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no mention of alternatives among the many deposit/investment siblings. The agent must infer that this tool is the one for bank/corporate FDs rather than ppf or sukanya.

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

feie_nomad_trackerUS Foreign Earned Income Exclusion trackerA
Read-onlyIdempotent
Inspect

Track IRS Form 2555 Foreign Earned Income Exclusion (FEIE) Physical Presence Test eligibility (330 full foreign days in rolling 365 days), statutory exclusion cap ($130,000 for 2025), and US sticky domicile audit risks (CA, NY, VA, SC).

Behavior: Deterministic, idempotent calculation with zero external side effects. Evaluates whether daysOutsideUSInRollingPeriod meets the mandatory 330-day threshold. Applies statutory maximum exclusion limit ($126,500 for 2024, $130,000 for 2025), computes tax liability on excess income, and flags aggressive state revenue agency sticky domicile rules.

Usage Guidelines: Use for US citizen digital nomads and expats evaluating foreign earned income tax exemptions under IRS Section 911. Do not use for foreign corporate withholding tax; use b2b_withholding_risk instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
filingStatusNoIRS filing status: 'single' or 'mfj' (married filing jointly).
stateDomicileNoTwo-letter postal code of taxpayer's last or current US state domicile (e.g. CA, NY, TX, FL). High-audit states (CA, NY, VA, SC) trigger domicile warnings.CA
foreignEarnedIncomeNoForeign earned income for the tax year, in USD.
qualifyingDaysInTaxYearNoQualifying days that fall in the tax year; the exclusion is prorated by these (26 U.S.C. 911(b)(2)(A)). Required - never assumed.
daysOutsideUSInRollingPeriodNoFull 24-hour days outside the US within any 12 consecutive months (Physical Presence Test, 26 U.S.C. 911(d)(1)(B): 330 needed). Required - never assumed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
test_typeNo
as_of_dateNo
disclaimerNo
exclusionsNo
rate_pack_idNo
filing_statusNo
qualificationNo
tax_calculationNo
state_tax_exposureNo
statutory_authorityNo
foreign_earned_incomeNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds calculation-specific behavior: it evaluates the 330-day threshold, applies the statutory cap, computes liability on excess, and flags sticky domicile states. It repeats the idempotent/read-only nature already in annotations, preventing a 5.

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 description is front-loaded with purpose and structured with explicit 'Behavior' and 'Usage Guidelines' labels, making it scannable. It is slightly redundant: the $130,000 2025 exclusion cap is stated in both the opening sentence and the Behavior section, which costs a perfect score.

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?

With an output schema present, the description need not explain return values. It covers purpose, usage, alternatives, and behavioral rules, while the schema fully documents all six parameters. Nothing an agent needs in order to call this tool 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 description coverage is 100%, so the schema already documents all six parameters in detail, including enums, required fields, and legal citations. The description references the 330-day threshold and exclusion caps but adds no parameter semantics beyond what the schema provides. Baseline 3 is appropriate.

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 gives a specific verb+resource: tracking IRS Form 2555 FEIE Physical Presence Test eligibility, statutory exclusion cap, and US sticky domicile risks. It explicitly distinguishes the tool from the sibling b2b_withholding_risk, so an agent can tell them apart without opening schemas.

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?

It states the exact audience (US citizen digital nomads and expats evaluating FEIE under Section 911), provides a clear exclusion (do not use for foreign corporate withholding tax), and names the alternative tool (b2b_withholding_risk). This is explicit when/when-not guidance.

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

fx_invoicingFX invoicing and conversionA
Read-onlyIdempotent
Inspect

Compare the local currency that lands from a USD invoice across the payment providers you name, using each provider's fees as you supply them, against a published reference exchange rate (European Central Bank reference rates, USD base).

Behavior: Deterministic, idempotent calculation with zero external side effects. For each rail you give (fixed fee in USD, percentage fee, exchange-rate markup) it computes the net USD after fees, the landed local amount, the total cost and its share of the invoice, ranks the rails, and reports the saving of the best over the worst. TrueCalci does not preset or verify any provider's pricing: providers price per currency route and account, so the fees are yours.

Usage Guidelines: Use when a freelancer or vendor invoicing in USD wants to compare payout providers whose fees they know. Do not use for domestic US employee vs contractor parity; use contractor_parity instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
railsYesThe payment providers to compare, with the fees YOUR account is charged for this route.
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
invoiceUsdYesGross billed invoice amount in USD ($). Must be a positive number greater than 0.
targetCurrencyNoPayout destination currency code: 'EUR' (Euro), 'GBP' (British Pound), 'CAD' (Canadian Dollar), 'AUD' (Australian Dollar), 'INR' (Indian Rupee), 'SGD' (Singapore Dollar), 'BRL' (Brazilian Real), 'MXN' (Mexican Peso), or 'PHP' (Philippine Peso).EUR
customMidMarketRateNoOptional: your own USD-to-target exchange rate, used instead of the published reference rate.

Output Schema

ParametersJSON Schema
NameRequiredDescription
railsNo
currencyNo
disclaimerNo
worst_railNo
invoice_usdNo
minor_unitsNo
rate_pack_idNo
as_of_timestampNo
target_currencyNo
lowest_cost_railNo
annual_savings_usdNo
statutory_authorityNo
theoretical_max_localNo
single_invoice_savings_usdNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, and the description partly restates that ('Deterministic, idempotent calculation with zero external side effects'). It adds genuine value by disclosing the key limitation that TrueCalci neither presets nor verifies provider pricing, so supplied fees are authoritative — an important caveat for interpreting results.

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 with purpose, then behavior, then usage, and each block earns its place. It is slightly long because the behavior sentence enumerates outputs that the output schema already covers, but there is no filler.

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?

With a full input schema, an output schema, and rich annotations, the description only needs to add routing, the pricing caveat, and the computation intent — all of which are present. An agent has everything needed to select and call it correctly.

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 every parameter including the nested rail fields is already documented in the schema; baseline is 3. The description reinforces that rails carry the user's own account-specific fees and that the date selects the rule pack, but adds no syntax or format detail 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 verb and resource: comparing landed local currency from a USD invoice across named payment rails against the ECB reference rate. It names what is computed (net USD after fees, landed amount, cost share, ranking, best-vs-worst saving), which is far more specific than the title.

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?

It gives an explicit when-to-use ('freelancer or vendor invoicing in USD wants to compare payout providers whose fees they know') and a when-not-to-use with the named alternative ('Do not use for domestic US employee vs contractor parity; use contractor_parity instead'). This routes the agent unambiguously among siblings.

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

goldGold valuationB
Read-onlyIdempotent
Inspect

Calculate Gold and Silver commodity valuation, hallmarking purity adjustments (24K, 22K, 18K, 14K), statutory GST (3%), making charges, and Indian regional unit conversions (Tola, Sovereign, Sovereign/Pavan, Grams, Troy Ounces).

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
purity_karatYesPurity in Karats (24K pure, 22K standard jewellery 916, 18K 750, 14K 585). Required - the engine never assumes a hallmark.
weight_gramsYesWeight of gold in grams.
rate_per_gram_24kYesCurrent market price of 24K gold per gram in INR (₹), as a string with exactly 2 decimal places (money is never a float).
making_charges_percentNoMaking charges as percentage of pure metal value.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
traceNo
statusNo
currencyNo
gold_cgstNo
gold_sgstNo
total_gstNo
as_of_dateNo
disclaimerNo
unit_inputNo
minor_unitsNo
hallmark_feeNo
purity_karatNo
purity_ratioNo
weight_inputNo
hallmark_cgstNo
hallmark_sgstNo
rule_ids_usedNo
gold_gst_totalNo
making_chargesNo
raw_gold_valueNo
weight_in_gramsNo
hallmark_appliedNo
is_benchmark_rateNo
rate_per_gram_24kNo
gold_taxable_valueNo
hallmark_gst_totalNo
making_charges_typeNo
total_taxable_valueNo
final_invoice_amountNo
making_charges_valueNo
gold_gst_rate_percentNo
rate_per_gram_appliedNo
hallmark_total_with_gstNo
purity_fineness_percentNo
effective_price_per_gramNo
hallmark_gst_rate_percentNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds context about computational behavior (statutory GST rate of 3%, supported karat levels, Indian regional units), which is useful but does not describe return format, rounding, or failure modes.

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 sentence, front-loaded with the core action ('Calculate Gold and Silver commodity valuation') and then the components. Dense but efficient; each listed item carries information without padding.

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?

For a pure calculation tool with full schema coverage and an output schema, the description scopes the computation adequately. However, it advertises 'Silver commodity valuation' while the schema exposes only gold inputs (weight_grams described as gold, rate_per_gram_24k), a capability mismatch that leaves the description incomplete relative to what the tool actually accepts.

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 five parameters with patterns, enum values, and defaults. The description lists the karats and units but adds no syntax or format detail beyond the schema, so the baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Calculate Gold and Silver commodity valuation') and enumerates the computation components (purity adjustments, GST, making charges, unit conversions), making the tool's scope clear. It doesn't explicitly differentiate from siblings like land_units or gst_regular, so it falls 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 Guidelines2/5

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

Provides no when-to-use or when-not-to-use guidance and names no alternatives. The reader must infer that this is the tool for gold/silver valuation from the description alone, which is descriptive rather than directive.

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

gst_compositionIndia GST composition schemeA
Read-onlyIdempotent
Inspect

Calculate statutory GST quarterly tax liabilities under the Composition Scheme (Section 10 of CGST Act). Computes applicable turnover tax for traders (1%), manufacturers (1%), and restaurant service providers (5%), enforcing statutory turnover thresholds.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoComposition scheme business category.trader
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
quarter_turnoverYesQuarterly aggregate turnover in INR (₹).
preceding_fy_turnoverYesAggregate turnover of the preceding financial year in INR, as a string with exactly 2 decimal places. Required to check the Section 10 threshold.

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
statusNo
currencyNo
eligibleNo
as_of_dateNo
disclaimerNo
cgst_amountNo
minor_unitsNo
sgst_amountNo
rule_ids_usedNo
itc_admissibleNo
turnover_limitNo
dealer_categoryNo
quarter_turnoverNo
cgst_rate_percentNo
sgst_rate_percentNo
statutory_sectionNo
total_tax_payableNo
compliance_statementNo
taxable_turnover_baseNo
composition_tax_amountNo
rcm_tax_payable_to_govtNo
composition_rate_percentNo
can_collect_tax_from_customerNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish it as read-only, idempotent, non-destructive, and closed-world. The description adds domain behavior by stating the applicable rates and that it enforces turnover thresholds, though it does not specify the failure mode when a threshold is breached.

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 sentences, front-loaded with the core calculation and then the category, rate, and threshold details. Every clause 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.

Completeness4/5

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

The tool is a deterministic calculation with a complete parameter schema, an output schema, and rich safety annotations. The description supplies the scheme, rates, and threshold enforcement so an agent can invoke it correctly; only alternative-tool routing is unaddressed.

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 100% schema description coverage, the schema already documents each parameter. The description adds the rate mapping (1%, 1%, 5%) for the category parameter and reiterates the threshold-check purpose of preceding FY turnover, giving meaningful semantic lift beyond the enum.

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 (Calculate) and resource (statutory GST quarterly tax liabilities under the Composition Scheme), naming Section 10 and the three covered categories. This clearly separates it from a generic GST or regular-scheme calculator, even though it does not explicitly name the sibling gst_regular.

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

Usage Guidelines3/5

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

It implies use for Composition Scheme taxpayers by repeatedly naming the scheme and statutory thresholds, but gives no explicit when-to-use, when-not-to-use, or alternative tool guidance. The context is enough to infer the intended audience, but routing guidance is absent.

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

gst_regularIndia GST (regular scheme: CGST, SGST, IGST)
Read-onlyIdempotent
Inspect

Calculate Indian GST on a supply under the regular scheme: CGST + SGST for an intra-state supply, IGST for an inter-state supply, export or SEZ supply, with optional compensation cess, reverse charge and input tax credit eligibility (Sections 9 and 16-17, CGST Act 2017; Section 5, IGST Act 2017).

Behavior: Deterministic, idempotent calculation with zero external side effects. The rate must be one notified in the GST rule pack in force on as_of_date; the engine refuses a rate the pack does not contain rather than assume one. Exclusive mode adds tax to the amount; inclusive mode extracts it. Returns taxable value, CGST, SGST, IGST, cess, total tax and invoice total.

Usage Guidelines: Use for a registered person under the regular scheme. Do not use for a composition-scheme taxpayer; use gst_composition instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesSupply value in INR (the taxable value in exclusive mode, the tax-inclusive total in inclusive mode).
is_rcmNoTax payable by the recipient under reverse charge (Section 9(3)/9(4)).
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
supply_typeNoIntra-state (CGST + SGST), inter-state (IGST), export or SEZ supply. If omitted, derived from supplier_state and place_of_supply when both are given.
cess_percentNoCompensation cess in percent, where applicable.0
itc_eligibleNoWhether the recipient may claim input tax credit (false for a Section 17(5) blocked credit).
rate_percentYesGST rate in percent. Must be a rate notified in the rule pack in force on as_of_date.
supplier_stateNoSupplier's state: 2-digit GST state code or state name.
place_of_supplyNoPlace of supply: 2-digit GST state code or state name.
calculation_modeNo'exclusive' adds GST to amount; 'inclusive' extracts GST from amount.exclusive

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
is_rcmNo
statusNo
currencyNo
round_offNo
total_taxNo
disclaimerNo
gst_amountNo
base_amountNo
cess_amountNo
cgst_amountNo
igst_amountNo
minor_unitsNo
sgst_amountNo
supply_typeNo
cess_percentNo
itc_eligibleNo
net_tax_costNo
rule_ids_usedNo
calculation_modeNo
supply_structureNo
statutory_sectionNo
eligible_itc_amountNo
gross_invoice_totalNo
effective_rate_percentNo
tax_payable_direct_to_govtNo
invoice_payable_to_supplierNo
home_loan_emiHome loan EMIA
Read-onlyIdempotent
Inspect

Calculate reducing-balance monthly Equated Monthly Installment (EMI), total interest payable, and amortization schedule for home, auto, or personal loans.

Behavior: Deterministic, idempotent calculation with zero external side effects. Computes standard monthly EMI formula: E = P * r * (1 + r)^n / ((1 + r)^n - 1), where r = annualRate / 12 / 100. Returns monthly EMI, total payment (principal + interest), total interest percentage, and first-year amortization breakdown.

Usage Guidelines: Use for general global reducing-balance loans and consumer debt. Do not use for US residential mortgages requiring property tax, hazard insurance, and PMI escrow; use mortgage_piti instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
principalYesTotal borrowed principal loan amount in currency units. Must be a positive number.
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
tenureYearsNoTotal loan repayment duration in years (e.g. 15, 20, 30). Must be an integer >= 1.
interestRatePercentYesAnnual interest rate in percent, as a decimal string (e.g. 8.50).

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
statusNo
currencyNo
principalNo
as_of_dateNo
disclaimerNo
monthlyEMINo
minor_unitsNo
monthly_emiNo
totalAmountNo
actualMonthsNo
tenure_yearsNo
interestSavedNo
rule_ids_usedNo
totalInterestNo
has_prepaymentNo
interest_savedNo
total_interestNo
yearlyScheduleNo
yearly_scheduleNo
scheduled_monthsNo
tenureReducedYearsNo
amortization_methodNo
actual_tenure_monthsNo
annual_interest_rateNo
tenure_reduced_yearsNo
total_amount_payableNo
tenure_reduced_monthsNo
prepayment_total_principalNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so part of the behavior sentence ('deterministic, idempotent, zero side effects') is redundant. What the description adds beyond structured data is the exact EMI formula, the rate convention (r = annualRate/12/100), and the scope of computed outputs, which meaningfully reduces ambiguity.

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, then clearly sectioned Behavior and Usage Guidelines. Slightly wasteful in restating the idempotency/side-effect profile already carried by annotations and in listing return fields that the output schema covers.

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?

With annotations covering safety and an output schema covering return values, the description supplies everything needed for selection: purpose, formula assumptions, and an explicit sibling alternative. Only minor gaps remain, such as how as_of_date's rule-pack selection can change results.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents principal, rate, tenureYears default, and as_of_date. The description adds no parameter-level meaning beyond the formula's rate convention, so the baseline 3 applies.

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+resource (calculate EMI, total interest, amortization) and scopes it to reducing-balance consumer loans. It explicitly positions itself against the sibling mortgage_piti, so an agent can distinguish the two without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit when-to-use ('general global reducing-balance loans and consumer debt') and an explicit when-not-to-use with a named alternative ('US residential mortgages requiring property tax, hazard insurance, and PMI escrow; use mortgage_piti instead'). This is the strongest form of routing guidance.

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

land_unitsLand area unit conversionA
Read-onlyIdempotent
Inspect

Convert Indian regional and universal land measurement units under the Legal Metrology Act, 2009 and State Land Revenue Codes (UP, Punjab, Haryana, West Bengal, Gujarat, Bihar, Assam, HP, MP, Rajasthan).

Behavior: Deterministic, idempotent conversion that requires the state for regional units (Bigha, Katha, Biswa, etc.), because their size differs by state, and refuses rather than guesses. Universal units (sqft, sqm, gaj/sqyd, acre, hectare, guntha, cent, ground, ankanam) resolve nationally. Returns target converted value, square foot baseline, and complete 7-unit standard breakdown.

Usage Guidelines: Specify 'state' when converting traditional units (e.g. 'bigha' or 'katha') to avoid ambiguous multi-fold variance.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaYesArea to convert, in from_unit. Must be greater than 0.
stateNoIndian state name or 2-letter code (e.g. 'UP', 'WEST_BENGAL', 'GUJARAT', 'PUNJAB', 'HARYANA', 'BIHAR', 'ASSAM', 'HP', 'MP', 'RAJASTHAN'). Required for regionally ambiguous units.
to_unitNoUnit to convert into. If omitted, the area is returned in every standard unit.
from_unitYesUnit of area. Regional units (bigha, biswa, katha ...) need state.
as_of_dateYesStatutory rule reference date (YYYY-MM-DD).

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
statusNo
to_unitNo
from_unitNo
as_of_dateNo
disclaimerNo
input_areaNo
rule_ids_usedNo
state_appliedNo
sqft_factor_toNo
converted_valueNo
sqft_factor_fromNo
standard_breakdownNo

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description adds critical context beyond annotations: deterministic conversion, refusal rather than guessing when state is missing for regional units, and the exact return composition (target value, square-foot baseline, 7-unit breakdown). This is rich 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.

Conciseness4/5

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

The description is front-loaded with purpose and then organized into Behavior and Usage Guidelines sections. It is somewhat long, especially the state list, but every part is relevant and well-structured. It avoids redundancy and keeps the core usage rule easy to find.

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 the tool's complexity, the description covers the legal context, conditional state requirement, universal-vs-regional distinction, and return shape. An output schema exists, so return values need not be fully explained, but the description still summarizes them helpfully. Nothing an agent needs to call the tool 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 description coverage is 100%, so the schema already explains area, state, to_unit, from_unit, and as_of_date. The description reinforces that state is required for regionally ambiguous units and that to_unit omission returns all standard units, but these points are already present in the schema. It adds little new syntactic or semantic detail 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 verb and resource: 'Convert Indian regional and universal land measurement units.' It distinguishes regional from universal units and names the governing legal framework, making the tool's scope immediately clear. Sibling tools are all finance/tax calculators, so no further differentiation is needed.

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?

The description gives explicit usage guidance: 'Specify state when converting traditional units (e.g. bigha or katha) to avoid ambiguous multi-fold variance.' It also implicitly frames usage under the Legal Metrology Act and State Land Revenue Codes. However, it does not state when not to use the tool or name alternatives, which is reasonable given the lack of sibling overlap.

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

mortgage_pitiUS mortgage PITIA
Read-onlyIdempotent
Inspect

Calculate monthly US mortgage payments broken down into PITI (Principal, Interest, Property Taxes, Homeowners Insurance, and Private Mortgage Insurance) along with full 30-year amortization schedule.

Behavior: Deterministic, idempotent calculation with zero external side effects. Computes standard monthly amortization using fixed-rate annuity formula, computes annual property taxes divided by 12, monthly hazard insurance, and conditional PMI (applied automatically if down payment is under 20% until 78% LTV threshold). Returns monthly total, principal/interest component, tax/escrow components, total lifetime interest, and payoff schedule.

Usage Guidelines: Use for US residential home purchase financing and refinancing scenarios. Do not use for international reducing-balance loans without escrow/PMI; use home_loan_emi instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
homePriceYesTotal purchase price or appraised property value in currency units (e.g. 450000). Must be positive.
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
interestRateYesAnnual interest rate in percent, as a decimal string (e.g. 6.75).
loanTermYearsNoStandard US alias for tenureYears (loan term in years).
annualPmiPercentNoAnnual Private Mortgage Insurance premium percentage (e.g. 0.75 for 0.75% of original loan amount).
downPaymentPercentNoDown payment as a percentage of purchase price (e.g. 20 for 20%). Values below 20 automatically trigger PMI calculations.
annualHomeInsuranceNoAnnual hazard/homeowners insurance premium in currency units (e.g. 1400).
propertyTaxRatePercentNoAnnual local property tax rate as a percentage of home value (e.g. 1.2 for 1.2%).

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
statusNo
currencyNo
monthlyPINo
as_of_dateNo
disclaimerNo
home_priceNo
monthlyPmiNo
assumptionsNo
minor_unitsNo
monthly_pmiNo
down_paymentNo
totalPmiPaidNo
totalTaxPaidNo
isPmiRequiredNo
rule_ids_usedNo
totalInterestNo
yearlyScheduleNo
is_pmi_requiredNo
loan_term_yearsNo
totalCostOfLoanNo
yearly_scheduleNo
monthlyTotalPITINo
monthlyPropertyTaxNo
totalInsurancePaidNo
total_lifetime_pmiNo
annual_property_taxNo
initial_ltv_percentNo
total_interest_paidNo
annual_interest_rateNo
down_payment_percentNo
initial_monthly_pitiNo
monthlyHomeInsuranceNo
monthly_property_taxNo
total_principal_paidNo
principal_loan_amountNo
annual_hazard_insuranceNo
total_property_tax_paidNo
monthly_hazard_insuranceNo
is_property_tax_estimatedNo
property_tax_rate_appliedNo
total_cost_of_home_and_loanNo
total_hazard_insurance_paidNo
total_principal_and_interestNo
is_hazard_insurance_estimatedNo
monthly_principal_and_interestNo
monthly_piti_after_pmi_cancellationNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the description's 'deterministic, idempotent, zero side effects' line is largely redundant. However, it adds genuinely new behavioral detail: PMI is applied automatically below 20% down until the 78% LTV threshold, and it discloses the calculation basis (fixed-rate annuity, tax/12, monthly insurance). That is useful beyond the annotations, though the repetition of annotation-covered traits keeps it from a 5.

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?

Three clearly labeled sections (description, Behavior, Usage Guidelines) with the purpose front-loaded. Efficient overall, but the Behavior paragraph spends a clause restating annotation-provided traits (deterministic/idempotent/no side effects) that the agent already sees in structured form.

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?

An output schema exists, so return values need not be detailed, yet the description still previews the outputs (monthly total, P&I split, escrow components, lifetime interest, payoff schedule). Combined with the routing guidance and PMI rules, nothing an agent needs to invoke this correctly 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 100%, so the baseline is 3, but the description adds cross-parameter meaning the schema does not: downPaymentPercent below 20 automatically triggers PMI, and PMI persists until 78% LTV. That explains the interaction between downPaymentPercent and annualPmiPercent rather than merely restating them.

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 (Calculate) and resource (monthly US mortgage PITI payments) and enumerates the components. It explicitly contrasts itself with home_loan_emi, so an agent can distinguish it from siblings without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use (US residential purchase and refinancing) and when-not-to-use (international reducing-balance loans without escrow/PMI), naming the alternative tool home_loan_emi. The routing condition is unambiguous.

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

npv_irrNPV and IRRA
Read-onlyIdempotent
Inspect

Standard precision: this calculator uses ordinary floating-point arithmetic, keeps no dated table of official rates, and has not yet passed our full reference-test suite. Compute Net Present Value (NPV), Internal Rate of Return (IRR) via iterative Newton-Raphson polynomial convergence, and discounted payback period for capital budgeting and investment appraisal.

Behavior: Deterministic, idempotent calculation with zero external side effects. Evaluates NPV = -C0 + sum(Ct / (1 + r)^t). Computes exact IRR by finding the discount rate where NPV equals zero using up to 100 Newton-Raphson iterations with tolerance 1e-7. Returns NPV, IRR percentage, profitability index (PI), and payback period in periods/years.

Usage Guidelines: Use for evaluating capital investments, M&A valuations, corporate projects, and multi-year cash flow hurdle rates. Do not use for simple compound interest projections with fixed monthly deposits; use compound_wealth instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
cashflowsYesSeries of sequential periodic net cash inflows starting from period 1 onwards. Minimum 1 cash flow required.
initialInvestmentYesUpfront initial capital outlay at period 0 in currency units. Entered as a positive number (treated as cash outflow). Must be positive.
discountRatePercentNoAnnual cost of capital or hurdle discount rate percentage (e.g. 10.0 for 10%).

Output Schema

ParametersJSON Schema
NameRequiredDescription
npvNo
isViableNo
scheduleNo
irrPercentNo
netCashflowNo
paybackYearsNo
totalInflowsNo
initialInvestmentNo
profitabilityIndexNo
discountRatePercentNo
discountedPaybackYearsNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the restated 'deterministic, idempotent... zero external side effects' sentence earns no credit. What does add value is the method transparency (Newton-Raphson with up to 100 iterations, tolerance 1e-7), the exact NPV formula, and the honest precision caveat that it uses plain floating-point and hasn't passed the full reference-test suite.

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?

Bold-labelled sections (Behavior, Usage Guidelines) make it scannable, and the usage contract is tight. It is slightly padded — the leading precision disclaimer sits ahead of the purpose statement, and the behavioral sentence partly restates annotations.

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?

An output schema exists, so return values needn't be spelled out, yet the description still names them (NPV, IRR percentage, PI, payback period). Combined with formula, convergence behavior, precision caveat, and a routing alternative, an agent has everything needed to call this correctly.

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 initialInvestment, cashflows, and discountRatePercent semantics and units. The description adds conceptual context (rate where NPV equals zero) but no parameter-level syntax or format detail beyond the schema, so baseline 3 applies.

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 specific verbs and resources: 'Compute Net Present Value (NPV), Internal Rate of Return (IRR)... and discounted payback period' for capital budgeting. This clearly differentiates it from sibling compound_wealth, which it names explicitly for a different 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 Guidelines5/5

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

Gives explicit when-to-use contexts ('capital investments, M&A valuations, corporate projects, and multi-year cash flow hurdle rates') and an explicit exclusion with the alternative ('Do not use for simple compound interest projections with fixed monthly deposits; use compound_wealth instead').

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

pack_statusStatutory rule pack statusA
Read-onlyIdempotent
Inspect

Lists the official rate tables each calculator uses (free, no credits). Shows the active government rate tables (AY 2025-26, IRS Rev. Proc., HMRC, etc.), hash checksums, and legal enactment citations.

ParametersJSON Schema
NameRequiredDescriptionDefault
engineIdNoOptional engine ID (e.g. 'tds', 'tcs', 'gst_regular', 'advance_tax', 'vat_sales_tax', 'tax_in') to query specific statutory pack metadata.

Output Schema

ParametersJSON Schema
NameRequiredDescription
classNo
packsNo
creditsNo
serviceNo
timestampNo
total_enginesNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description adds valuable context beyond that: it is free/no-credit and returns active rate tables, hash checksums, and legal citations, though it does not discuss pagination or output limits.

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 front-loaded sentences with no filler. The first states the core purpose and free status; the second details the returned content, and nothing is 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?

With annotations covering safety, schema covering the only parameter, and an output schema present, the description provides enough for correct invocation. It could be slightly stronger by clarifying when engineId should be omitted versus supplied, but overall it is complete for this metadata 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?

The schema has 100% description coverage for the single optional engineId parameter, including examples and its purpose. The description itself adds no additional parameter semantics beyond what the schema already provides, so the baseline of 3 applies.

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 gives a specific verb and resource: it lists the official rate tables each calculator uses and shows active government rate tables, checksums, and legal citations. It is clearly distinguishable from the calculator siblings, though it does not explicitly name an alternative or sibling.

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

Usage Guidelines3/5

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

It notes the tool is free with no credits, which is useful usage context, but does not state when to use this status tool versus the calculator tools or when it is unnecessary. The intended use is implied rather than explicit.

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

ppfIndia Public Provident FundA
Read-onlyIdempotent
Inspect

Simulate Public Provident Fund (PPF) 15-year statutory compound wealth accumulation under Ministry of Finance notifications. Enforces ₹1,50,000 annual deposit ceiling, current 7.1% p.a. sovereign interest rate, monthly 5th day balance compounding rules, and Section 80C EEE tax-exempt maturity.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
tenure_yearsNoPPF tenure in years (initial 15 years, extendable in 5-year blocks).
yearly_depositYesAnnual deposit amount in INR (₹500 to ₹1,50,000).

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
statusNo
currencyNo
as_of_dateNo
disclaimerNo
minor_unitsNo
tenure_yearsNo
rule_ids_usedNo
total_investedNo
maturity_amountNo
projection_fromNo
yearly_scheduleNo
deposit_day_of_monthNo
start_financial_yearNo
total_interest_earnedNo
fifth_day_rule_appliedNo
statutory_annual_limitNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered; the description adds substantial domain behavior beyond that — the ₹1,50,000 ceiling, 7.1% rate, monthly 5th-day compounding rule, and Section 80C EEE treatment. It doesn't disclose error or edge-case handling (e.g., deposits exceeding the ceiling), keeping it below 5.

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 dense sentence that front-loads purpose and then stacks the governing rules; nothing is wasted. It is slightly packed, but every clause carries domain value.

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?

With an output schema present, return values need not be explained, and the description covers the rule pack, rate, ceiling, and tax treatment. What remains missing is routing guidance among sibling instruments, which is a minor gap for a self-contained simulator.

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 date's rule-pack semantics and tenure extension. The description adds the deposit ceiling and rate context but no new parameter-level syntax or format detail. Baseline 3 is appropriate.

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 (Simulate) and resource (Public Provident Fund 15-year statutory compound wealth accumulation), scoping it to Ministry of Finance rules. An agent can distinguish it from fd, sukanya, and compound_wealth 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 Guidelines3/5

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

The description implies the usage context (Indian sovereign savings scheme simulation) but never states when to choose this over close siblings like fd, sukanya, or compound_wealth, nor any exclusions. Usage is inferable but not directed.

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

scorp_optimizerUS S-corp payroll tax comparison
Read-onlyIdempotent
Inspect

Compute employment taxes with and without an S-Corporation election: reasonable officer salary split, SECA/FICA payroll taxes, the fees entered, and the net difference, under IRS Rev. Rul. 74-44. Computation only; not a recommendation to elect.

Behavior: Deterministic, idempotent calculation with zero external side effects. Splits net business profit into W-2 officer wages and Schedule K-1 shareholder distributions. Applies FICA to salary only (exempting distributions), accounts for employer-half FICA deduction, deducts annual CPA corporate filing and payroll processing fees, and computes the mathematical breakeven net profit threshold.

Usage Guidelines: Use when a US small business owner, single-member LLC, or high-earning freelancer is considering electing S-Corp status to reduce self-employment taxes. Do not use for retirement account contribution limits; use solo_401k_shield instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
netProfitYesAnnual net business profit before owner compensation in USD ($/yr). Must be a positive number.
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
cpaAnnualFeeNoAnnual CPA accounting fee for corporate Form 1120-S preparation and filing in USD ($/yr).
salaryPercentNoOfficer W-2 reasonable compensation percentage of net profit (e.g. 50, 55, 60%). Must comply with IRS Rev. Rul. 74-44 industry benchmarks.
stateAnnualFeeNoAnnual state franchise tax or corporate filing fee in USD ($/yr) (e.g. $800 in CA, $200 in DE).
payrollAnnualFeeNoAnnual software and compliance fee for running compliant W-2 payroll in USD ($/yr) (e.g. Gusto, Rippling).

Output Schema

ParametersJSON Schema
NameRequiredDescription
llcNo
scorpNo
savingsNo
currencyNo
overheadNo
netProfitNo
as_of_dateNo
disclaimerNo
net_profitNo
minor_unitsNo
rate_pack_idNo
filing_statusNo
wage_base_capNo
effectiveTaxYearNo
statutoryWageBaseNo
sole_prop_baselineNo
statutory_authorityNo
sip_investmentSIP investment returnsA
Read-onlyIdempotent
Inspect

Calculate Systematic Investment Plan (SIP) mutual fund maturity wealth with optional annual percentage step-up (top-up) for compounding wealth growth.

Behavior: Deterministic, idempotent calculation with zero external side effects. Models monthly SIP compounding using formula FV = P * [((1 + i)^n - 1) / i] * (1 + i). When stepUpPercent > 0, dynamically increases monthly installment each 12-month cycle. Returns maturity amount, total invested capital, total estimated capital gains, and year-by-year accumulation.

Usage Guidelines: Use for mutual fund SIP investments, recurring deposits, and goal-based financial planning. Do not use for US 401(k) / Roth IRA compounding with lump sum; use compound_wealth instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
tenureYearsNoTotal investment duration in years (e.g. 5, 10, 20). Must be an integer >= 1.
stepUpPercentNoAnnual percentage increase in monthly contribution (e.g. 10 for 10% annual hike).
annualReturnRateNoExpected annualized return rate percentage (e.g. 12 for 12% equity CAGR).
monthlyInvestmentYesMonthly SIP amount in INR as a string with exactly 2 decimal places.

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
statusNo
currencyNo
as_of_dateNo
disclaimerNo
minor_unitsNo
tenureYearsNo
tenure_yearsNo
maturityValueNo
rule_ids_usedNo
stepUpPercentNo
totalInvestedNo
maturity_valueNo
total_investedNo
annualReturnRateNo
estimatedReturnsNo
yearly_breakdownNo
estimated_returnsNo
monthlyInvestmentNo
wealth_multiplierNo
annual_return_rateNo
monthly_investmentNo
annual_step_up_percentNo
compounding_conventionNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description goes further by disclosing the compounding formula, the step-up mechanic (installment increases each 12-month cycle), and the returned fields. It adds genuine behavioral context beyond the structured metadata, though the deterministic/idempotent restatement is partially redundant.

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 purpose, then organized into Behavior and Usage Guidelines sections with zero filler. Slightly verbose in enumerating return fields that the output schema already carries, but overall efficient.

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?

Covers purpose, mechanics, the step-up edge case, return composition, and sibling routing; with an output schema present, return values need not be detailed yet are still summarized. Nothing an agent needs to call this correctly 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 description coverage is 100%, so the baseline is 3, but the description adds semantics the schema lacks: it explains that stepUpPercent triggers a dynamic increase every 12 months and that as_of_date selects the rule pack in force. These meaningfully clarify how the parameters interact.

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 (calculate SIP mutual fund maturity wealth) with a named optional behavior (annual step-up). It distinguishes itself from the sibling compound_wealth explicitly, so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Gives clear when-to-use (mutual fund SIP, recurring deposits, goal-based planning) and an explicit when-not-to-use with the named alternative ('Do not use for US 401(k) / Roth IRA compounding with lump sum; use compound_wealth instead'). This is the strongest form of routing guidance.

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

solo_401k_shieldUS Solo 401(k) contributionA
Read-onlyIdempotent
Inspect

Compare Solo 401(k) and SEP-IRA contribution limits for the tax year in force on as_of_date, and the income-tax reduction their pre-tax part gives at the marginal rate entered.

Behavior: Deterministic, idempotent calculation with zero external side effects. Computes employee elective deferral (up to $23,000 or $30,500 if age 50+) plus employer profit-sharing (20% of adjusted net earnings for LLC/sole prop, 25% of W-2 salary for S-Corp) subject to annual statutory additions cap. Multiplies total deductible contribution by marginal tax rate to return net cash saved.

Usage Guidelines: Use when an owner-only business, independent contractor, or partner wants to optimize pre-tax retirement deductions. Do not use for multi-year exponential compound investment growth modeling; use compound_wealth instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
entityTypeNoTax treatment of the business, which changes the contribution limits. The previously advertised value "llc" is not accepted: an LLC may be taxed either way, so choosing one on the caller's behalf would be a guess. State the tax treatment, not the legal form.
isAge50PlusNoDeprecated and ignored: catch-up eligibility and its limit come from participant_age (required), under the rule pack in force on as_of_date.
netEarningsYesAnnual net business profit (Schedule C) or W-2 officer salary (S-Corp) in USD ($/yr). Must be a positive number.
participant_ageYesParticipant age in years. Required: it decides catch-up eligibility (IRC s.414(v), SECURE 2.0 s.109).
marginalTaxRatePercentNoCombined federal and state marginal income tax bracket percentage (e.g. 28 for 28%).

Output Schema

ParametersJSON Schema
NameRequiredDescription
sepIraNo
sep_iraNo
currencyNo
solo401kNo
solo_401kNo
as_of_dateNo
comparisonNo
disclaimerNo
entityTypeNo
entity_typeNo
isAge50PlusNo
minor_unitsNo
netEarningsNo
net_earningsNo
rate_pack_idNo
catch_up_typeNo
participant_ageNo
effectiveTaxYearNo
planCompensationNo
plan_compensationNo
statutory_authorityNo
mandatory_roth_catchupNo
marginalTaxRatePercentNo
annual_compensation_capNo
catch_up_eligible_limitNo
marginal_tax_rate_percentNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and no destructive/open-world behavior, so the sentence restating determinism and zero side effects earns no extra credit. The description does add real behavioral substance beyond the annotations: the deferral caps ($23,000 / $30,500 age 50+), employer profit-sharing math (20% of adjusted net earnings vs 25% of W-2 salary), and the statutory additions cap that governs the result.

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 organized into Purpose, Behavior, and Usage Guidelines blocks with no filler. It is dense for a single tool but each sentence, including the formulas, contributes to correct invocation.

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?

With six parameters, full schema coverage, rich annotations, and an output schema present, the description supplies everything an agent needs to decide and call correctly; return-value explanation is correctly left to the output schema.

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

Parameters3/5

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

Schema description coverage is 100% and the schema descriptions are unusually rich (entityType caveat, as_of_date rule-pack selection, deprecated isAge50Plus, participant_age catch-up rationale), so the schema carries the parameter burden. The description reinforces the age/entity/rate inputs implicitly through the formula but adds no syntax or format detail 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 names a specific verb and resources: it compares Solo 401(k) and SEP-IRA contribution limits for a given tax year and computes the income-tax reduction from the pre-tax portion. The scope (owner-only retirement contribution optimization) is clear enough to separate it from siblings like scorp_optimizer or compound_wealth.

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?

It states explicit when-to-use (owner-only business, independent contractor, or partner optimizing pre-tax retirement deductions) and a when-not with a named alternative: multi-year compound growth modeling should use compound_wealth instead. Routing is unambiguous.

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

startup_runway_dilutionStartup runway and dilutionA
Read-onlyIdempotent
Inspect

Model early-stage startup cash runway calendar exhaustion date, Post-Money SAFE note conversion cap dilution, and Series A unallocated option pool shuffle waterfall.

Behavior: Deterministic, idempotent calculation with zero external side effects. Computes net burn = grossBurn - revenue; Runway months = cashOnHand / netBurn. Models post-money SAFE equity percentage = safeInvestment / postMoneyCap. Simulates Series A pre-money option pool expansion (diluting existing holders prior to lead investor entry) and calculates founder post-financing ownership percentage.

Usage Guidelines: Use for venture capital fundraising planning, startup cash runway tracking, and cap table dilution modeling. Do not use for discounted cash flow or IRR project appraisal; use npv_irr instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
cashOnHandNoCurrent cash reserves in bank in USD ($). Must be positive.
postMoneyCapNoAgreed valuation cap on the Post-Money SAFEs in USD ($).
monthlyRevenueNoMonthly recurring revenue (MRR) or cash collections in USD ($/mo). Default is 15000.
safeInvestmentNoTotal capital raised via Post-Money SAFE notes in USD ($).
seriesAPreMoneyNoAgreed Series A pre-money company valuation in USD ($).
monthlyGrossBurnNoTotal monthly cash operating expenses in USD ($/mo). Must be positive.
seriesAInvestmentNoNew equity capital invested by Series A lead investors in USD ($).
optionPoolExpansionPercentNoRequired post-closing unallocated employee stock option pool percentage (e.g. 10 for 10%).

Output Schema

ParametersJSON Schema
NameRequiredDescription
runwayNo
disclaimerNo
cap_table_dilutionNo
statutory_rate_packNo
monthly_cash_scheduleNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description adds substantial beyond that: deterministic calculation, zero external side effects, and concrete formulas for net burn, runway, SAFE equity percentage, and option pool dilution.

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 and structured into purpose, behavior, and usage guidelines. Despite its density, each section adds necessary information for a complex multi-parameter financial model.

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?

The input schema is fully documented and an output schema exists, so return values need not be explained. The description supplies the purpose, behavioral model, formulas, and usage exclusions needed to call the tool correctly.

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 goes further by naming relationships among parameters, such as net burn = grossBurn - revenue and SAFE equity = safeInvestment / postMoneyCap, which helps an agent reason about how inputs interact.

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 specific verbs and resources: models startup cash runway, Post-Money SAFE cap dilution, and Series A option pool expansion. It clearly distinguishes this tool from the explicitly named sibling npv_irr.

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?

It gives explicit when-to-use cases (venture capital fundraising planning, runway tracking, cap table dilution modeling) and an explicit when-not-to-use exclusion with the alternative tool (npv_irr for DCF or IRR).

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

sukanyaIndia Sukanya Samriddhi YojanaB
Read-onlyIdempotent
Inspect

Simulate Sukanya Samriddhi Yojana (SSY) sovereign small savings scheme for girl child education and marriage under Government of India statutory guidelines. Computes compounding at 8.2% p.a. with 21-year maturity schedule and Section 80C EEE tax exemption.

ParametersJSON Schema
NameRequiredDescriptionDefault
girl_ageNoCurrent age of the girl child (must be under 10 years at account opening).
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
yearly_depositYesAnnual deposit in INR (₹250 to ₹1,50,000, payable for 15 years).

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
statusNo
currencyNo
as_of_dateNo
disclaimerNo
minor_unitsNo
rule_ids_usedNo
total_investedNo
maturity_amountNo
projection_fromNo
total_withdrawnNo
yearly_scheduleNo
contribution_yearsNo
total_tenure_yearsNo
deposit_day_of_monthNo
start_financial_yearNo
total_interest_earnedNo
fifth_day_rule_appliedNo
statutory_annual_limitNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds domain behavior (compounding rate, 21-year maturity, Section 80C EEE exemption), but hardcoding '8.2% p.a.' sits uneasily with the schema's statement that as_of_date selects the governing rule pack, which could mislead on historical/future dates.

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

Conciseness4/5

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

Two dense sentences, front-loaded with the purpose and followed by the mechanics. No filler, though the second sentence packs rate, maturity and tax treatment into a single clause.

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 no explanation, and the schema fully documents inputs. The main gap is the absence of when-to-use/routing guidance against the many sibling financial calculators.

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% – all three parameters, including the ₹250–₹1,50,000 deposit band and the under-10 age constraint, are documented in the schema. The description adds no parameter-level detail beyond that, so the baseline 3 applies.

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 ('Simulate') and a specific resource (Sukanya Samriddhi Yojana), including the girl-child scope, 8.2% rate and 21-year maturity. This clearly separates it from siblings like ppf or fd, though it never explicitly contrasts itself with them.

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

Usage Guidelines2/5

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

The description says nothing about when to use this tool versus alternatives such as ppf or compound_wealth, nor about prerequisites (e.g., account-opening age limits are only in the schema). Usage is only inferable from the scheme name.

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

tax_inIndia income tax (new vs old regime)A
Read-onlyIdempotent
Inspect

Compute Indian personal income tax for the tax year in force on as_of_date (Income-tax Act, 2025 from tax year 2026-27; the 1961 Act before), comparing the new regime (standard deduction and Section 87A rebate) with the old regime (Chapter VI-A deductions such as 80C and 80D), and naming the lower one. Pass regime to get only one.

ParametersJSON Schema
NameRequiredDescriptionDefault
regimeNoTax regime to compute: 'both' (dual comparison), 'new', or 'old'.both
as_of_dateYesStatutory as-of date in ISO YYYY-MM-DD format.
gross_incomeYesGross annual income from all sources in INR (₹).
deductions_80cNoChapter VI-A Section 80C deductions (capped at ₹1,50,000 for Old Regime).
deductions_80dNoSection 80D health insurance premium deduction for Old Regime.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
engineNo
statusNo
as_of_dateNo
comparisonNo
disclaimerNo
new_regimeNo
old_regimeNo
minor_unitsNo
gross_incomeNo
new_regime_taxNo
old_regime_taxNo
tax_differenceNo
comparison_noteNo
calculation_typeNo
lower_tax_regimeNo
statutory_authorityNo
tax_difference_formattedNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: which statute applies at a given date, what each regime models (standard deduction, 87A rebate vs Chapter VI-A), and that the lower liability is reported.

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, front-loaded with the core action, then the date/statute rule, then the regime switch. No filler or redundancy.

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?

All five parameters are schema-documented, an output schema exists so return values need not be described, and the one non-obvious semantic (date-driven statute selection) is explained. 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.

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, but the description adds semantic links the schema does not: as_of_date maps to the applicable Act and regime maps to single-vs-dual computation. It does not add numeric examples or format hints for gross_income 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+resource ('Compute Indian personal income tax') plus scope (dual-regime comparison for the tax year in force on as_of_date). The regime-comparison behavior and 'naming the lower one' clearly separate it from siblings like advance_tax, tds, and gst_regular.

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?

Explains that as_of_date selects the governing Act and that passing regime narrows to a single computation, which tells the agent how to steer the call. It stops short of stating when not to use it or naming an alternative sibling, so it is clear context without explicit exclusions.

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

tcsIndia TCS (tax collected at source)A
Read-onlyIdempotent
Inspect

Calculate statutory Tax Collected at Source (TCS) under Section 206C of the Indian Income-tax Act, 1961 (AY 2025-26 / FY 2024-25). Computes liability for Section 206C(1H) sale of goods above ₹50 lakh threshold, scrap sale, timber, alcoholic liquor, minerals, Liberalised Remittance Scheme (LRS), and overseas tour packages, including Section 206CC higher rates.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesSale consideration / receipt amount in INR (₹).
natureNoStatutory nature of the collection, which selects the section under s.206C and therefore the rate. State it exactly; it is not inferred and has no default, because a default would choose a section on the caller's behalf. Alias: payment_nature.
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
buyer_pan_statusNoWhether the buyer has furnished a valid PAN. Note that "missing_or_invalid" currently returns INSUFFICIENT rather than a number: collection without PAN falls under s.206CC, and that rule is not yet in the active rate pack, so the engine refuses rather than answering at the ordinary rate and understating the liability.

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
amountNo
statusNo
pack_idNo
sectionNo
currencyNo
base_rateNo
applicableNo
as_of_dateNo
disclaimerNo
tcs_amountNo
liable_baseNo
minor_unitsNo
rule_ids_usedNo
effective_rateNo
payment_natureNo
total_collectibleNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed world, so the safety profile is covered. The description adds domain context (Section 206CC higher rates, the date-selected rule pack) but discloses no additional behavioral traits such as refusal modes, error handling, or thresholds beyond the s.206C(1H) ₹50 lakh mention.

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 verb and statute, then a single compact enumeration of covered natures; nothing is redundant. The list is long but each item maps to a distinct section/rate, so it earns 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?

With an output schema present, return values need no explanation, and annotations plus 100% schema coverage carry the safety and parameter burden. The description supplies adequate statutory scope; only explicit usage/routing guidance 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 description coverage is 100%, so the enum values, the required 'amount'/'as_of_date' constraints, the PAN-status refusal behaviour and the 'nature' alias are all documented in the schema itself. The description adds no parameter-level detail beyond what structured data already supplies, making 3 the correct 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 specific verb and resource ('Calculate statutory Tax Collected at Source (TCS)') and pins the exact statutory basis (Section 206C, AY 2025-26), then enumerates the covered collection natures. An agent can distinguish this from the sibling 'tds' (deducted vs collected at source) purely from the description.

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

Usage Guidelines3/5

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

Usage is implied by the statutory scope, but the description never states when to prefer this tool over alternatives ('tds', 'tax_in', 'gst_regular') or the preconditions for a valid call. It gives context for interpreting the result without routing guidance.

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

tdsIndia TDS (tax deducted at source)A
Read-onlyIdempotent
Inspect

Calculate statutory Tax Deducted at Source (TDS) under the Indian Income-tax Act, 1961 (AY 2025-26 / FY 2024-25). Supports Section 194C (contractor), 194J (professional/technical fees), 194Q (goods purchase), 194H (commission/brokerage), 194I (rent), higher deduction rate under Section 206AA for missing PAN, and precedence evaluation between 194Q and 206C(1H).

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesTransaction payment or credit amount in INR (₹).
residentYesWhether the payee is resident under s.6. Non-resident payments fall under s.195 and are out of scope, so false is refused rather than answered.
as_of_dateYesCivil date YYYY-MM-DD. Selects the statutory rate pack in force on that date. Required: the engine will not assume a date.
payee_typeYesPayee class. Under s.194C this selects 1% (individual or HUF) versus 2% (domestic company), so it changes the answer and is not defaulted. The legacy values 'individual' and 'company' are still accepted as exact synonyms; any other value is refused.
payment_typeYesStatutory nature of the payment, which selects the section and therefore the rate. State it exactly; the engine does not infer it. Note that professional_services (10%) and technical_services (2%) are DISTINCT and differ fivefold - there is deliberately no combined value, and a request that does not distinguish them is answered AMBIGUOUS rather than guessed.
pan_availableYesWhether the payee has furnished a PAN. Required: without a PAN, Section 206AA applies the higher rate, so it is never assumed.
pan_operativeYesWhether the furnished PAN is operative (linked to Aadhaar). Required when pan_available is true: an inoperative PAN is treated as no PAN under Section 206AA.

Output Schema

ParametersJSON Schema
NameRequiredDescription
traceNo
reasonNo
statusNo
pack_idNo
currencyNo
applicableNo
as_of_dateNo
comparisonNo
disclaimerNo
tds_amountNo
act_appliedNo
escalationsNo
liable_baseNo
minor_unitsNo
net_payableNo
on_crossingNo
return_formNo
act_2025_refNo
payment_codeNo
rule_ids_usedNo
crossing_basisNo
effective_rateNo
engine_versionNo
legacy_sectionNo
threshold_valueNo
certificate_formNo
deposit_due_dateNo
preimage_versionNo
consumed_input_fieldsNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful domain behavior beyond annotations: higher deduction rate under Section 206AA for missing PAN and precedence evaluation between 194Q and 206C(1H). It stops short of disclosing the refusal for non-resident payments (that appears only in the schema), but still contributes useful behavioral context.

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 two sentences, front-loaded with the core purpose, followed by supported sections and special rules. Every clause earns its place, and there is no redundant or filler content. It is appropriately sized for a complex statutory calculation tool.

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 the complexity, rich schema, annotations, and existing output schema, the description covers the essential scope (Act, assessment year, supported sections, key rules). It does not mention the out-of-scope handling for non-resident payments or the mandatory date selection, but those details are fully documented in the schema. The description is largely complete, with only minor contextual gaps that the structured fields already fill.

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 structured schema already documents all seven parameters in detail. The description adds no parameter-level syntax, format, or constraint information beyond what the schema provides. A baseline score of 3 is appropriate 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.

Purpose5/5

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

The description states a specific verb ('Calculate') and resource ('Tax Deducted at Source') within a precise legal context (Indian Income-tax Act, 1961, AY 2025-26). It lists the supported sections, which clearly distinguishes it from siblings like tcs or gst_regular. An agent can immediately tell this is a statutory TDS calculator for India.

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

Usage Guidelines3/5

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

The description implies usage by enumerating supported sections and special rules (missing PAN, 194Q vs 206C(1H) precedence), but it never explicitly states when to choose this tool over alternatives such as tcs or advance_tax. There is no 'when-not-to-use' or sibling routing guidance. The schema descriptions carry the burden of prerequisites and refusals, so the description's guidance is minimal but not absent.

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

vat_sales_taxVAT and sales taxA
Read-onlyIdempotent
Inspect

Calculate European Value Added Tax (VAT) and global sales taxes in either Add Mode (Net price to Gross price) or Remove Mode (Gross price to Net price) with statutory rate verification.

Behavior: Deterministic, idempotent calculation with zero external side effects. In 'add' mode: Tax = Amount * (Rate / 100), Total = Amount + Tax. In 'remove' mode: Net = Amount / (1 + Rate / 100), Tax = Amount - Net. Returns exact net, tax amount, and gross values rounded to 2 decimal places.

Usage Guidelines: Use for e-commerce, international invoicing, retail pricing, and VAT compliance calculations. Do not use for restaurant tipping and bill splits; use tip_splitter instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoCalculation mode: 'add' to append tax to net amount, or 'remove' to extract embedded tax from gross amount.add
amountYesBase monetary amount to calculate tax on (net amount in 'add' mode, gross price in 'remove' mode). Must be positive.
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
vatRatePercentYesVAT or sales tax rate in percent (0-100).

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
metadataNo
rate_tierNo
disclaimerNo
net_amountNo
vat_amountNo
gross_amountNo
jurisdictionNo
rate_percentNo
effective_dateNo
statutory_authorityNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description adds the actual arithmetic in both modes and the 2-decimal rounding of returns, which is genuinely behavioral detail beyond the annotations. The 'statutory rate verification' claim is slightly opaque given the rate arrives as a user-supplied parameter.

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, then clearly labelled Behaviour and Usage Guidelines sections. The formulas are slightly verbose but each conveys a distinct, load-bearing fact; no filler sentences.

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 single-purpose calculator with an output schema (so return values need no prose) and full parameter coverage, the description supplies modes, formulas, rounding and usage scope. Minor gaps remain around the statutory rate source implied by 'verification' and differentiation from the GST/income-tax siblings.

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 amount, vatRatePercent, as_of_date and the mode enum. The description's parameters section adds only marginal mapping (net vs gross meaning of amount per mode) and no new syntax or format detail beyond the schema, so baseline 3 applies.

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 ('Calculate European Value Added Tax (VAT) and global sales taxes') plus the add/remove mode scope. However, it does not differentiate against the actual tax siblings in this namespace (gst_regular, gst_composition, tax_in, tcs, tds) – its only named alternative, tip_splitter, is not a sibling tool.

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 explicit use contexts (e-commerce, international invoicing, retail pricing, VAT compliance) and an explicit exclusion with an alternative ('Do not use for restaurant tipping and bill splits; use tip_splitter instead'). The exclusion targets a tool outside the sibling set, so it does not help the agent route among the real tax siblings.

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. 1 tool update
    • Removedb2b_withholding_risk
  2. 1 tool update
    • Changedgst_regular1 field changed
      • addedOutput schema / properties / round_off
        Added value: +{
        +  "type": [
        +    "string",
        +    "number",
        +    "null"
        +  ]
        +}
  3. 3 tool updates
    • Changedbillable_floor2 fields changed
      • removedOutput schema / properties / optimal_hourly_rate
        Removed value: -{
        -  "type": [
        -    "string",
        -    "number",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / required_hourly_rate
        Added value: +{
        +  "type": [
        +    "string",
        +    "number",
        +    "null"
        +  ]
        +}
    • Changedfx_invoicing2 fields changed
      • addedOutput schema / properties / lowest_cost_rail
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / optimal_rail
        Removed value: -{
        -  "type": [
        -    "object",
        -    "null"
        -  ]
        -}
    • Changedtax_in8 fields changed
      • addedOutput schema / properties / comparison_note
        Added value: +{
        +  "type": [
        +    "string",
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / lower_tax_regime
        Added value: +{
        +  "type": [
        +    "string",
        +    "number",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / optimal_regime
        Removed value: -{
        -  "type": [
        -    "string",
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / recommendation
        Removed value: -{
        -  "type": [
        -    "string",
        -    "number",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / tax_difference
        Added value: +{
        +  "type": [
        +    "string",
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / tax_difference_formatted
        Added value: +{
        +  "type": [
        +    "string",
        +    "number",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / tax_savings
        Removed value: -{
        -  "type": [
        -    "string",
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / tax_savings_formatted
        Removed value: -{
        -  "type": [
        -    "string",
        -    "number",
        -    "null"
        -  ]
        -}
  4. 1 tool update
    • Changedcloud_egress_finops1 field changed
      • addedInput schema / properties / primary_provider
        Added value: +{
        +  "description": "The cloud the traffic leaves from, priced from the egress pack in force: 'aws', 'gcp' or 'azure'. Omitted: aws.",
        +  "enum": [
        +    "aws",
        +    "gcp",
        +    "azure"
        +  ],
        +  "type": "string"
        +}
  5. 1 tool update
    • Changedsolo_401k_shield3 fields changed
      • removedInput schema / properties / isAge50Plus / default
        Removed value: -false
      • addedInput schema / properties / isAge50Plus / deprecated
        Added value: +true
      • changedInput schema / properties / isAge50Plus / description
        Previous value: -"Whether the account holder is age 50 or older, unlocking the statutory $7,500 catch-up contribution."New value: +"Deprecated and ignored: catch-up eligibility and its limit come from participant_age (required), under the rule pack in force on as_of_date."
  6. 1 tool update
    • Changedfx_invoicing1 field changed
      • changedInput schema / properties / rails / items / properties / name / description
        Previous value: -"Provider or method name, e.g. 'Bank wire'."New value: +"Provider name, e.g. 'Bank wire'."
  7. 1 tool update
    • Changedfx_invoicing3 fields changed
      • addedInput schema / properties / customMidMarketRate
        Added value: +{
        +  "description": "Optional: your own USD-to-target exchange rate, used instead of the published reference rate.",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / rails
        Added value: +{
        +  "description": "The payment providers to compare, with the fees YOUR account is charged for this route.",
        +  "items": {
        +    "properties": {
        +      "feePercent": {
        +        "description": "Percentage fee on the amount sent (%), e.g. 0.55 for 0.55%.",
        +        "example": 0.5,
        +        "exclusiveMaximum": 100,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "fixedFeeUsd": {
        +        "description": "Fixed fee per transfer in USD ($). 0 if none.",
        +        "example": 25,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "fxMarkupPercent": {
        +        "description": "Markup over the reference exchange rate (%), e.g. 1.5 for 1.5%. 0 if the provider converts at the mid-market rate.",
        +        "example": 1.5,
        +        "exclusiveMaximum": 100,
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "name": {
        +        "description": "Provider or method name, e.g. 'Bank wire'.",
        +        "example": "Bank wire",
        +        "maxLength": 80,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "fixedFeeUsd",
        +      "feePercent",
        +      "fxMarkupPercent"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 10,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "invoiceUsd",
        -  "as_of_date"
        -]New value: +[
        +  "invoiceUsd",
        +  "rails",
        +  "as_of_date"
        +]
  8. 1 tool update
    • Changedland_units1 field changed
      • changedInput schema / properties / to_unit / description
        Previous value: -"Unit to convert into."New value: +"Unit to convert into. If omitted, the area is returned in every standard unit."
  9. 30 tool updates
    • Changedadvance_tax1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "advance_tax_applicable": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "assessment_year": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "exemption_or_applicability_reason": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "filing_or_payment_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "financial_year": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gross_assessed_tax": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "instalment_details": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "is_presumptive": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "net_advance_tax_base_s208": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "return_due_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "section_234a_applicable": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "section_234a_months_charged": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "section_234a_shortfall_base_rule119a": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "section_234b_applicable": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "section_234b_months_charged": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "section_234b_shortfall_base_rule119a": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "section_234b_threshold_90_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tds_tcs_credit": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_advance_tax_paid": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_amount_payable": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_interest_payable": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_section_234a_interest": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_section_234b_interest": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_section_234c_interest": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "unpaid_tax_principal": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedai_token_arbitrage1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "arbitrage": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "freshness": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "matrix": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "rate_pack_id": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_authority": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "token_distribution": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedb2b_withholding_risk1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "engine": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "grossInvoicing": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "netPaymentTargetUsd": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "permanentEstablishment": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedbillable_floor1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "economics": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "metadata": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "naive_economics": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "naive_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "naive_shortfall": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "optimal_hourly_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_authority": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "target_net_cash": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "time_allocation": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedbreakeven_margin1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "breakEvenRevenue": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "breakEvenUnits": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "contributionMarginRatioPercent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "degreeOfOperatingLeverage": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "expectedProfit": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "expectedUnitsSold": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "fixedCosts": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "marginOfSafetyPercent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "marginOfSafetyRevenue": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "marginOfSafetyUnits": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "unitContributionMargin": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "unitPrice": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "unitVariableCost": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcagr_inflation1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "exact_doubling_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "final_value": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "inflation_rate_applied": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "initial_value": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "mode": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "nominal_cagr_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "nominal_total_return_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "purchasing_power_loss": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "real_cagr_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "real_purchasing_power_value": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "rule_of_72_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tenure_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_absolute_gain": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "yearly_trajectory": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcloud_egress_finops1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "edge_proxy_optimization": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "freshness": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "multi_cloud_comparison": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "primary_provider_cost": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "rate_pack_id": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "savings": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "statutory_authority": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcompound_wealth1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "futureValue": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "principal": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totalDeposited": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totalInterest": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "yearlySchedule": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcontractor_parity1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "breakevenHourlyRate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "breakeven_contractor_hourly_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "contractor": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "contractorTakeHome": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "contractor_advantage": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "metadata": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "net_cash_delta": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_authority": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "verdict": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "w2": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "w2TakeHome": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfd1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "base_interest_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "compounding_convention": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "effective_interest_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gross_interest": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "is_senior_citizen": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "maturity_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "net_maturity_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "payout_type": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "principal": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "section_reference": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tds_applicable": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "tds_threshold": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tenure_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_tds_deducted": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "yearly_schedule": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfeie_nomad_tracker1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "exclusions": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "filing_status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "foreign_earned_income": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "qualification": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "rate_pack_id": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "state_tax_exposure": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "statutory_authority": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tax_calculation": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "test_type": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfx_invoicing1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "annual_savings_usd": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "as_of_timestamp": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "invoice_usd": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "optimal_rail": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "rails": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "rate_pack_id": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "single_invoice_savings_usd": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_authority": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "target_currency": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "theoretical_max_local": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "worst_rail": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgold1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "effective_price_per_gram": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "final_invoice_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gold_cgst": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gold_gst_rate_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gold_gst_total": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gold_sgst": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gold_taxable_value": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "hallmark_applied": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "hallmark_cgst": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "hallmark_fee": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "hallmark_gst_rate_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "hallmark_gst_total": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "hallmark_sgst": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "hallmark_total_with_gst": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "is_benchmark_rate": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "making_charges": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "making_charges_type": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "making_charges_value": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "mode": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "purity_fineness_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "purity_karat": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "purity_ratio": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rate_per_gram_24k": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rate_per_gram_applied": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "raw_gold_value": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_gst": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_taxable_value": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "unit_input": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "weight_in_grams": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "weight_input": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgst_composition1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "can_collect_tax_from_customer": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "cgst_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "cgst_rate_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "compliance_statement": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "composition_rate_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "composition_tax_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "dealer_category": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "eligible": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "itc_admissible": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "quarter_turnover": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rcm_tax_payable_to_govt": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "sgst_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "sgst_rate_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_section": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "taxable_turnover_base": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_tax_payable": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "turnover_limit": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgst_regular1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "base_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "calculation_mode": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "cess_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "cess_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "cgst_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "effective_rate_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "eligible_itc_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gross_invoice_total": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gst_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "igst_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "invoice_payable_to_supplier": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "is_rcm": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "itc_eligible": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "net_tax_cost": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "sgst_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_section": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "supply_structure": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "supply_type": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tax_payable_direct_to_govt": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_tax": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedhome_loan_emi1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "actualMonths": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "actual_tenure_months": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "amortization_method": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "annual_interest_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "has_prepayment": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "interestSaved": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "interest_saved": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "monthlyEMI": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthly_emi": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "prepayment_total_principal": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "principal": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "scheduled_months": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tenureReducedYears": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tenure_reduced_months": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tenure_reduced_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tenure_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totalAmount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totalInterest": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_amount_payable": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_interest": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "yearlySchedule": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "yearly_schedule": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedland_units1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "converted_value": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "from_unit": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "input_area": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "sqft_factor_from": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "sqft_factor_to": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "standard_breakdown": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "state_applied": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "to_unit": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmortgage_piti1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "annual_hazard_insurance": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "annual_interest_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "annual_property_tax": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "assumptions": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "down_payment": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "down_payment_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "home_price": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "initial_ltv_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "initial_monthly_piti": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "isPmiRequired": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "is_hazard_insurance_estimated": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "is_pmi_required": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "is_property_tax_estimated": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "loan_term_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "monthlyHomeInsurance": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthlyPI": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthlyPmi": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthlyPropertyTax": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthlyTotalPITI": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthly_hazard_insurance": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthly_piti_after_pmi_cancellation": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthly_pmi": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthly_principal_and_interest": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthly_property_tax": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "principal_loan_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "property_tax_rate_applied": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totalCostOfLoan": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totalInsurancePaid": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totalInterest": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totalPmiPaid": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totalTaxPaid": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_cost_of_home_and_loan": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_hazard_insurance_paid": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_interest_paid": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_lifetime_pmi": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_principal_and_interest": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_principal_paid": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_property_tax_paid": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "yearlySchedule": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "yearly_schedule": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changednpv_irr1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "discountRatePercent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "discountedPaybackYears": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "initialInvestment": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "irrPercent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "isViable": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "netCashflow": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "npv": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "paybackYears": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "profitabilityIndex": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "schedule": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "totalInflows": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedpack_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "class": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "credits": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "packs": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "service": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "timestamp": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_engines": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedppf1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "deposit_day_of_month": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "fifth_day_rule_applied": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "maturity_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "projection_from": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "start_financial_year": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_annual_limit": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tenure_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_interest_earned": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_invested": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "yearly_schedule": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedscorp_optimizer1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "effectiveTaxYear": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "filing_status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "llc": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "netProfit": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "net_profit": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "overhead": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "rate_pack_id": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "savings": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "scorp": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "sole_prop_baseline": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "statutoryWageBase": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_authority": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "wage_base_cap": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsip_investment1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "annualReturnRate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "annual_return_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "annual_step_up_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "compounding_convention": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "estimatedReturns": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "estimated_returns": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "maturityValue": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "maturity_value": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "monthlyInvestment": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthly_investment": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "stepUpPercent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tenureYears": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tenure_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totalInvested": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_invested": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "wealth_multiplier": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "yearly_breakdown": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsolo_401k_shield1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "annual_compensation_cap": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "catch_up_eligible_limit": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "catch_up_type": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "comparison": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "effectiveTaxYear": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "entityType": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "entity_type": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "isAge50Plus": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "mandatory_roth_catchup": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "marginalTaxRatePercent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "marginal_tax_rate_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "netEarnings": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "net_earnings": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "participant_age": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "planCompensation": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "plan_compensation": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rate_pack_id": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "sepIra": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "sep_ira": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "solo401k": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "solo_401k": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "statutory_authority": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedstartup_runway_dilution1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "cap_table_dilution": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "monthly_cash_schedule": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "runway": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "statutory_rate_pack": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsukanya1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "contribution_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "deposit_day_of_month": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "fifth_day_rule_applied": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "maturity_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "projection_from": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "start_financial_year": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_annual_limit": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_interest_earned": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_invested": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_tenure_years": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_withdrawn": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "yearly_schedule": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedtax_in1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "calculation_type": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "comparison": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "engine": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gross_income": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {},
        +    "mode": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "new_regime": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "new_regime_tax": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "old_regime": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "old_regime_tax": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "optimal_regime": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "recommendation": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_authority": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tax_savings": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tax_savings_formatted": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedtcs1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "applicable": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "base_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "effective_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "liable_base": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "pack_id": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "payment_nature": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "section": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tcs_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "total_collectible": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedtds1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "act_2025_ref": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "act_applied": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "applicable": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "as_of_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "certificate_form": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "comparison": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "consumed_input_fields": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "crossing_basis": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "deposit_due_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "effective_rate": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "engine_version": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "escalations": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "legacy_section": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "liable_base": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "minor_units": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "net_payable": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "on_crossing": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "pack_id": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "payment_code": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "preimage_version": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "reason": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "return_form": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rule_ids_used": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "tds_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "threshold_value": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "trace": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedvat_sales_tax1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "effective_date": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gross_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "jurisdiction": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "metadata": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "mode": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "net_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rate_percent": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rate_tier": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "statutory_authority": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "vat_amount": {
        +      "type": [
        +        "string",
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
  10. 5 tool updates
    • Removedcompute
    • Removedcontext_sanitizer_get_dsi
    • Removedcontext_sanitizer_verify_scope
    • Removedindian_income_tax
    • Removedtax_in_new
  11. 1 tool update
    • Changedadvance_tax8 fields changed
      • addedInput schema / properties / advance_tax_paid
        Added value: +{
        +  "description": "Advance tax payments made, each with its date. Omit if none were made.",
        +  "items": {
        +    "properties": {
        +      "amount": {
        +        "description": "Amount paid (₹).",
        +        "pattern": "^\\d+\\.\\d{2}$",
        +        "type": "string"
        +      },
        +      "date": {
        +        "description": "Payment date, YYYY-MM-DD.",
        +        "format": "date",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "date",
        +      "amount"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / assessed_tax / description
        Previous value: -"Estimated total annual net tax liability after TDS/TCS credits in INR (₹). Advance tax mandatory if >= ₹10,000."New value: +"Total tax on the year's income in INR (₹), before advance tax and before TDS/TCS credit. Advance tax applies when the balance after TDS/TCS is ₹10,000 or more."
      • addedInput schema / properties / capital_gains_tax
        Added value: +{
        +  "description": "Part of assessed_tax that arises on capital gains (₹); excluded from instalments due before the gain arose.",
        +  "pattern": "^\\d+\\.\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / date_of_filing_or_payment
        Added value: +{
        +  "description": "Date the return was (or will be) filed, YYYY-MM-DD. Ends the Section 234B period and decides whether Section 234A applies. Default: the return due date for filing_category.",
        +  "format": "date",
        +  "type": "string"
        +}
      • addedInput schema / properties / filing_category
        Added value: +{
        +  "default": "non_audit_individual",
        +  "description": "Sets the return due date. non_audit_individual (ITR-1/ITR-2): 31 July. non_audit_business (business or profession, accounts not audited, and such firms' partners): 31 August from tax year 2026-27, 31 July before. audit_corporate_and_business: 31 October. transfer_pricing_international: 30 November.",
        +  "enum": [
        +    "non_audit_individual",
        +    "non_audit_business",
        +    "audit_corporate_and_business",
        +    "transfer_pricing_international"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / is_presumptive_44ad_44ada
        Added value: +{
        +  "description": "True if income is declared under presumptive taxation (44AD/44ADA): one instalment of 100% by 15 March.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / is_senior_citizen_no_business
        Added value: +{
        +  "description": "True for a resident senior citizen (60+) with no business or professional income: exempt from advance tax.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / tds_tcs_credit
        Added value: +{
        +  "description": "Tax already deducted or collected at source for the year (₹). Default 0.",
        +  "pattern": "^\\d+\\.\\d{2}$",
        +  "type": "string"
        +}
  12. 24 tool updates
    • Changedadvance_tax2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "assessed_tax"
        -]New value: +[
        +  "assessed_tax",
        +  "as_of_date"
        +]
    • Changedai_token_arbitrage1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "prompt_tokens",
        -  "completion_tokens"
        -]New value: +[
        +  "prompt_tokens",
        +  "completion_tokens",
        +  "as_of_date"
        +]
    • Changedbillable_floor2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "targetNetCash"
        -]New value: +[
        +  "targetNetCash",
        +  "as_of_date"
        +]
    • Changedcagr_inflation2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "initialValue",
        -  "finalValue",
        -  "periodsYears",
        -  "mode"
        -]New value: +[
        +  "initialValue",
        +  "finalValue",
        +  "periodsYears",
        +  "as_of_date"
        +]
    • Changedcloud_egress_finops1 field changed
      • addedInput schema / required
        Added value: +[
        +  "as_of_date"
        +]
    • Changedcontractor_parity6 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / eligibleQBI / default
        Removed value: -true
      • changedInput schema / properties / eligibleQBI / description
        Previous value: -"Whether the 1099 contractor business qualifies for the Section 199A 20% Qualified Business Income deduction."New value: +"Whether the contractor income qualifies for the Section 199A qualified business income deduction. Required: it changes federal tax and is not assumed."
      • removedInput schema / properties / selectedRail
        Removed value: -{
        -  "default": "wise",
        -  "description": "Payment rail provider for international contractor payout: 'wise', 'deel', 'payoneer', 'stripe', 'paypal', or 'wire'.",
        -  "enum": [
        -    "wise",
        -    "deel",
        -    "payoneer",
        -    "stripe",
        -    "paypal",
        -    "wire"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / targetCurrency
        Removed value: -{
        -  "default": "EUR",
        -  "description": "Target fiat currency code for international cross-border conversion drag (e.g. EUR, GBP, CAD).",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "w2Salary",
        -  "contractorHourlyRate"
        -]New value: +[
        +  "w2Salary",
        +  "contractorHourlyRate",
        +  "eligibleQBI",
        +  "as_of_date"
        +]
    • Changedfd6 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / properties / tenure_months / description
        Previous value: -"Deposit tenure in months."New value: +"Deposit tenure in months (3 to 120, as the fixed deposit rule pack allows)."
      • addedInput schema / properties / tenure_months / example
        Added value: +12
      • addedInput schema / properties / tenure_months / maximum
        Added value: +120
      • addedInput schema / properties / tenure_months / minimum
        Added value: +3
      • changedInput schema / required
        Previous value: -[
        -  "principal",
        -  "interest_rate",
        -  "tenure_months"
        -]New value: +[
        +  "principal",
        +  "interest_rate",
        +  "tenure_months",
        +  "as_of_date"
        +]
    • Changedfeie_nomad_tracker2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "as_of_date"
        +]
    • Changedfx_invoicing2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "invoiceUsd"
        -]New value: +[
        +  "invoiceUsd",
        +  "as_of_date"
        +]
    • Changedgold2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "weight_grams",
        -  "rate_per_gram_24k",
        -  "purity_karat"
        -]New value: +[
        +  "weight_grams",
        +  "rate_per_gram_24k",
        +  "purity_karat",
        +  "as_of_date"
        +]
    • Changedgst_composition2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "quarter_turnover",
        -  "preceding_fy_turnover"
        -]New value: +[
        +  "quarter_turnover",
        +  "preceding_fy_turnover",
        +  "as_of_date"
        +]
    • Addedgst_regular
    • Changedhome_loan_emi2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "principal",
        -  "interestRatePercent"
        -]New value: +[
        +  "principal",
        +  "interestRatePercent",
        +  "as_of_date"
        +]
    • Changedindian_income_tax2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "ctc"
        -]New value: +[
        +  "ctc",
        +  "as_of_date"
        +]
    • Changedland_units1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "area",
        -  "from_unit"
        -]New value: +[
        +  "area",
        +  "from_unit",
        +  "as_of_date"
        +]
    • Changedmortgage_piti3 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / tenureYears
        Removed value: -{
        -  "default": 30,
        -  "description": "Loan duration in years (typically 15, 20, or 30).",
        -  "type": "integer"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "homePrice",
        -  "interestRate"
        -]New value: +[
        +  "homePrice",
        +  "interestRate",
        +  "as_of_date"
        +]
    • Changedppf2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "yearly_deposit"
        -]New value: +[
        +  "yearly_deposit",
        +  "as_of_date"
        +]
    • Changedscorp_optimizer2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "netProfit"
        -]New value: +[
        +  "netProfit",
        +  "as_of_date"
        +]
    • Changedsip_investment2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "monthlyInvestment"
        -]New value: +[
        +  "monthlyInvestment",
        +  "as_of_date"
        +]
    • Changedsolo_401k_shield2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "netEarnings",
        -  "participant_age"
        -]New value: +[
        +  "netEarnings",
        +  "participant_age",
        +  "as_of_date"
        +]
    • Changedstartup_runway_dilution2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "as_of_date"
        +]
    • Changedsukanya2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "yearly_deposit"
        -]New value: +[
        +  "yearly_deposit",
        +  "as_of_date"
        +]
    • Changedtcs5 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / is_interstate
        Removed value: -{
        -  "default": false,
        -  "description": "True for interstate supply (IGST), false for intrastate supply (CGST + SGST).",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / is_reverse_charge
        Removed value: -{
        -  "default": false,
        -  "description": "Whether transaction is subject to Reverse Charge Mechanism (RCM).",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / rate
        Removed value: -{
        -  "default": 18,
        -  "description": "Statutory GST percentage slab.",
        -  "enum": [
        -    0,
        -    5,
        -    12,
        -    18,
        -    28
        -  ],
        -  "type": "number"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "amount"
        -]New value: +[
        +  "amount",
        +  "as_of_date"
        +]
    • Changedvat_sales_tax2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
        +  "example": "2026-09-26",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "amount",
        -  "vatRatePercent"
        -]New value: +[
        +  "amount",
        +  "vatRatePercent",
        +  "as_of_date"
        +]
  13. 16 tool updates
    • Changedadvance_tax3 fields changed
      • addedInput schema / properties / assessed_tax / example
        Added value: +"150000.00"
      • addedInput schema / properties / assessed_tax / pattern
        Added value: +"^\\d+\\.\\d{2}$"
      • changedInput schema / properties / assessed_tax / type
        Previous value: -"number"New value: +"string"
    • Changedcagr_inflation15 fields changed
      • addedInput schema / properties / expected_annual_return_rate
        Added value: +{
        +  "description": "Expected annual return in percent, as a decimal string. Required for PROJECTION mode.",
        +  "example": "12.00",
        +  "pattern": "^\\d+(\\.\\d+)?$",
        +  "type": "string"
        +}
      • changedInput schema / properties / finalValue / description
        Previous value: -"Ending portfolio, asset, or revenue valuation in currency units. Must be positive."New value: +"Ending value (HISTORICAL_CAGR), as a string with exactly 2 decimal places."
      • addedInput schema / properties / finalValue / example
        Added value: +"250000.00"
      • addedInput schema / properties / finalValue / pattern
        Added value: +"^\\d+\\.\\d{2}$"
      • changedInput schema / properties / finalValue / type
        Previous value: -"number"New value: +"string"
      • changedInput schema / properties / initialValue / description
        Previous value: -"Beginning portfolio, asset, or revenue valuation in currency units. Must be positive."New value: +"Starting value, as a string with exactly 2 decimal places."
      • addedInput schema / properties / initialValue / example
        Added value: +"100000.00"
      • addedInput schema / properties / initialValue / pattern
        Added value: +"^\\d+\\.\\d{2}$"
      • changedInput schema / properties / initialValue / type
        Previous value: -"number"New value: +"string"
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "HISTORICAL_CAGR: growth from initialValue to finalValue. PROJECTION: grow initialValue at expected_annual_return_rate.",
        +  "enum": [
        +    "HISTORICAL_CAGR",
        +    "PROJECTION"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / periodsYears / description
        Previous value: -"Total elapsed duration in years (can be fractional, e.g. 2.5 or 5). Must be greater than 0."New value: +"Period in years, from 0.0833 (1 month) to 50."
      • addedInput schema / properties / periodsYears / example
        Added value: +10
      • addedInput schema / properties / periodsYears / maximum
        Added value: +50
      • addedInput schema / properties / periodsYears / minimum
        Added value: +0.0833
      • changedInput schema / required
        Previous value: -[
        -  "initialValue",
        -  "finalValue",
        -  "periodsYears"
        -]New value: +[
        +  "initialValue",
        +  "finalValue",
        +  "periodsYears",
        +  "mode"
        +]
    • Changedcloud_egress_finops1 field changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD selecting the monthly egress price pack. Required; only months with a published pack are answered (otherwise a structured refusal).",
        +  "example": "2026-09-26",
        +  "format": "date",
        +  "type": "string"
        +}
    • Changedcompute5 fields changed
      • changedInput schema / properties / engine / description
        Previous value: -"Target engine name (e.g. 'tds', 'tcs', 'gst_regular', 'advance_tax', 'tax_in', 'contractor_parity', 'scorp_optimizer', 'cloud_egress_finops', 'compound_wealth')."New value: +"The engine to run, by tool name (e.g. tds, fd, gst_composition)."
      • addedInput schema / properties / engine / example
        Added value: +"tds"
      • removedInput schema / properties / inputs / additionalProperties
        Removed value: -true
      • changedInput schema / properties / inputs / description
        Previous value: -"Input parameters matching the target engine's schema."New value: +"The engine's own inputs, exactly as its tool schema defines them."
      • addedInput schema / properties / inputs / example
        Added value: +{
        +  "amount": "50000.00",
        +  "as_of_date": "2026-04-01",
        +  "pan_available": true,
        +  "pan_operative": true,
        +  "payee_type": "individual_or_huf",
        +  "payment_type": "contractor",
        +  "resident": true
        +}
    • Changedfd7 fields changed
      • changedInput schema / properties / interest_rate / description
        Previous value: -"Annual interest rate in percent (e.g. 7.25 for 7.25%)."New value: +"Annual interest rate in percent, as a decimal string (e.g. 7.00)."
      • addedInput schema / properties / interest_rate / example
        Added value: +"7.00"
      • addedInput schema / properties / interest_rate / pattern
        Added value: +"^\\d+(\\.\\d+)?$"
      • changedInput schema / properties / interest_rate / type
        Previous value: -"number"New value: +"string"
      • changedInput schema / properties / principal / description
        Previous value: -"Deposit principal amount in INR (₹)."New value: +"Deposit amount in INR. At least 1,000 (statutory minimum FD principal, RBI Master Direction 2016)."
      • addedInput schema / properties / principal / example
        Added value: +250000
      • addedInput schema / properties / principal / minimum
        Added value: +1000
    • Changedfeie_nomad_tracker14 fields changed
      • removedInput schema / properties / daysOutsideUSInRollingPeriod / default
        Removed value: -334
      • changedInput schema / properties / daysOutsideUSInRollingPeriod / description
        Previous value: -"Number of full 24-hour qualifying foreign days spent outside the US within any rolling 365-day period. Must be >= 330 to qualify."New value: +"Full 24-hour days outside the US within any 12 consecutive months (Physical Presence Test, 26 U.S.C. 911(d)(1)(B): 330 needed). Required - never assumed."
      • addedInput schema / properties / daysOutsideUSInRollingPeriod / example
        Added value: +340
      • addedInput schema / properties / daysOutsideUSInRollingPeriod / maximum
        Added value: +366
      • addedInput schema / properties / daysOutsideUSInRollingPeriod / minimum
        Added value: +0
      • changedInput schema / properties / daysOutsideUSInRollingPeriod / type
        Previous value: -"number"New value: +"integer"
      • removedInput schema / properties / effectiveTaxBracketPercent
        Removed value: -{
        -  "default": 24,
        -  "description": "Estimated federal marginal tax rate percentage applied to income exceeding the statutory cap (e.g. 24 for 24%).",
        -  "type": "number"
        -}
      • addedInput schema / properties / filingStatus
        Added value: +{
        +  "description": "IRS filing status: 'single' or 'mfj' (married filing jointly).",
        +  "enum": [
        +    "single",
        +    "mfj"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / foreignEarnedIncome / default
        Removed value: -160000
      • changedInput schema / properties / foreignEarnedIncome / description
        Previous value: -"Total annual compensation earned while working outside the US in USD ($). Must be positive."New value: +"Foreign earned income for the tax year, in USD."
      • addedInput schema / properties / foreignEarnedIncome / example
        Added value: +120000
      • addedInput schema / properties / foreignEarnedIncome / exclusiveMinimum
        Added value: +0
      • addedInput schema / properties / qualifyingDaysInTaxYear
        Added value: +{
        +  "description": "Qualifying days that fall in the tax year; the exclusion is prorated by these (26 U.S.C. 911(b)(2)(A)). Required - never assumed.",
        +  "example": 365,
        +  "maximum": 366,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / taxYear
        Removed value: -{
        -  "default": 2025,
        -  "description": "Applicable US federal tax filing year (2024, 2025, or 2026).",
        -  "type": "number"
        -}
    • Changedgold7 fields changed
      • removedInput schema / properties / purity_karat / default
        Removed value: -22
      • changedInput schema / properties / purity_karat / description
        Previous value: -"Purity in Karats (24K pure, 22K standard jewellery 916, 18K 750, 14K 585)."New value: +"Purity in Karats (24K pure, 22K standard jewellery 916, 18K 750, 14K 585). Required - the engine never assumes a hallmark."
      • changedInput schema / properties / rate_per_gram_24k / description
        Previous value: -"Current market price of 24K gold per gram in INR (₹)."New value: +"Current market price of 24K gold per gram in INR (₹), as a string with exactly 2 decimal places (money is never a float)."
      • addedInput schema / properties / rate_per_gram_24k / example
        Added value: +"7500.00"
      • addedInput schema / properties / rate_per_gram_24k / pattern
        Added value: +"^\\d+\\.\\d{2}$"
      • changedInput schema / properties / rate_per_gram_24k / type
        Previous value: -"number"New value: +"string"
      • changedInput schema / required
        Previous value: -[
        -  "weight_grams",
        -  "rate_per_gram_24k"
        -]New value: +[
        +  "weight_grams",
        +  "rate_per_gram_24k",
        +  "purity_karat"
        +]
    • Changedgst_composition5 fields changed
      • addedInput schema / properties / preceding_fy_turnover
        Added value: +{
        +  "description": "Aggregate turnover of the preceding financial year in INR, as a string with exactly 2 decimal places. Required to check the Section 10 threshold.",
        +  "example": "12000000.00",
        +  "pattern": "^\\d+\\.\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / quarter_turnover / example
        Added value: +"250000.00"
      • addedInput schema / properties / quarter_turnover / pattern
        Added value: +"^\\d+\\.\\d{2}$"
      • changedInput schema / properties / quarter_turnover / type
        Previous value: -"number"New value: +"string"
      • changedInput schema / required
        Previous value: -[
        -  "quarter_turnover"
        -]New value: +[
        +  "quarter_turnover",
        +  "preceding_fy_turnover"
        +]
    • Changedhome_loan_emi7 fields changed
      • changedInput schema / properties / interestRatePercent / description
        Previous value: -"Annual interest rate percentage (e.g. 8.5 for 8.5%). Must be positive."New value: +"Annual interest rate in percent, as a decimal string (e.g. 8.50)."
      • addedInput schema / properties / interestRatePercent / example
        Added value: +"8.50"
      • addedInput schema / properties / interestRatePercent / pattern
        Added value: +"^\\d+(\\.\\d+)?$"
      • changedInput schema / properties / interestRatePercent / type
        Previous value: -"number"New value: +"string"
      • addedInput schema / properties / principal / example
        Added value: +"5000000.00"
      • addedInput schema / properties / principal / pattern
        Added value: +"^\\d+\\.\\d{2}$"
      • changedInput schema / properties / principal / type
        Previous value: -"number"New value: +"string"
    • Changedland_units8 fields changed
      • changedInput schema / properties / area / description
        Previous value: -"Numeric area string to convert (e.g. '1.0', '3.875', '100'). Must be positive."New value: +"Area to convert, in from_unit. Must be greater than 0."
      • addedInput schema / properties / area / example
        Added value: +2.5
      • addedInput schema / properties / area / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / area / type
        Previous value: -"string"New value: +"number"
      • changedInput schema / properties / from_unit / description
        Previous value: -"Source land area unit (e.g. 'bigha', 'acre', 'sqft', 'sqm', 'guntha', 'katha', 'marla', 'kanal', 'cent')."New value: +"Unit of area. Regional units (bigha, biswa, katha ...) need state."
      • addedInput schema / properties / from_unit / enum
        Added value: +[
        +  "sqft",
        +  "sqm",
        +  "gaj",
        +  "sqyd",
        +  "acre",
        +  "hectare",
        +  "guntha",
        +  "cent",
        +  "ground",
        +  "ankanam",
        +  "bigha",
        +  "bigha_pucca",
        +  "bigha_kaccha",
        +  "biswa",
        +  "katha"
        +]
      • changedInput schema / properties / to_unit / description
        Previous value: -"Optional specific target unit (e.g. 'sqft', 'acre', 'guntha', 'sqm', 'biswa'). If omitted, returns full standard breakdown."New value: +"Unit to convert into."
      • addedInput schema / properties / to_unit / enum
        Added value: +[
        +  "sqft",
        +  "sqm",
        +  "gaj",
        +  "sqyd",
        +  "acre",
        +  "hectare",
        +  "guntha",
        +  "cent",
        +  "ground",
        +  "ankanam"
        +]
    • Changedmortgage_piti7 fields changed
      • addedInput schema / properties / homePrice / example
        Added value: +"400000.00"
      • addedInput schema / properties / homePrice / pattern
        Added value: +"^\\d+\\.\\d{2}$"
      • changedInput schema / properties / homePrice / type
        Previous value: -"number"New value: +"string"
      • changedInput schema / properties / interestRate / description
        Previous value: -"Annual mortgage interest rate percentage (e.g. 6.8 for 6.8%). Must be positive."New value: +"Annual interest rate in percent, as a decimal string (e.g. 6.75)."
      • addedInput schema / properties / interestRate / example
        Added value: +"6.75"
      • addedInput schema / properties / interestRate / pattern
        Added value: +"^\\d+(\\.\\d+)?$"
      • changedInput schema / properties / interestRate / type
        Previous value: -"number"New value: +"string"
    • Changedsip_investment4 fields changed
      • changedInput schema / properties / monthlyInvestment / description
        Previous value: -"Initial monthly investment installment amount in currency units (e.g. 5000). Must be positive."New value: +"Monthly SIP amount in INR as a string with exactly 2 decimal places."
      • addedInput schema / properties / monthlyInvestment / example
        Added value: +"5000.00"
      • addedInput schema / properties / monthlyInvestment / pattern
        Added value: +"^\\d+\\.\\d{2}$"
      • changedInput schema / properties / monthlyInvestment / type
        Previous value: -"number"New value: +"string"
    • Changedsolo_401k_shield2 fields changed
      • addedInput schema / properties / participant_age
        Added value: +{
        +  "description": "Participant age in years. Required: it decides catch-up eligibility (IRC s.414(v), SECURE 2.0 s.109).",
        +  "example": 45,
        +  "maximum": 100,
        +  "minimum": 18,
        +  "type": "integer"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "netEarnings"
        -]New value: +[
        +  "netEarnings",
        +  "participant_age"
        +]
    • Changedtcs3 fields changed
      • addedInput schema / properties / amount / example
        Added value: +"100000.00"
      • addedInput schema / properties / amount / pattern
        Added value: +"^\\d+\\.\\d{2}$"
      • changedInput schema / properties / amount / type
        Previous value: -"number"New value: +"string"
    • Changedtds6 fields changed
      • addedInput schema / properties / amount / example
        Added value: +"50000.00"
      • addedInput schema / properties / amount / pattern
        Added value: +"^\\d+\\.\\d{2}$"
      • changedInput schema / properties / amount / type
        Previous value: -"number"New value: +"string"
      • changedInput schema / properties / pan_available / description
        Previous value: -"Whether the payee has furnished a valid PAN. false triggers the s.206AA higher rate of 20%."New value: +"Whether the payee has furnished a PAN. Required: without a PAN, Section 206AA applies the higher rate, so it is never assumed."
      • addedInput schema / properties / pan_operative
        Added value: +{
        +  "description": "Whether the furnished PAN is operative (linked to Aadhaar). Required when pan_available is true: an inoperative PAN is treated as no PAN under Section 206AA.",
        +  "type": "boolean"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "amount",
        -  "as_of_date",
        -  "payment_type",
        -  "payee_type",
        -  "resident"
        -]New value: +[
        +  "amount",
        +  "as_of_date",
        +  "payment_type",
        +  "payee_type",
        +  "resident",
        +  "pan_available",
        +  "pan_operative"
        +]
    • Changedvat_sales_tax4 fields changed
      • changedInput schema / properties / vatRatePercent / description
        Previous value: -"Tax rate in percent (e.g. 20 for UK/France, 19 for Germany, 21 for Spain, 8.25 for US state/local)."New value: +"VAT or sales tax rate in percent (0-100)."
      • addedInput schema / properties / vatRatePercent / example
        Added value: +20
      • addedInput schema / properties / vatRatePercent / maximum
        Added value: +100
      • addedInput schema / properties / vatRatePercent / minimum
        Added value: +0

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to compute US take-home pay, self-employment taxes, and capital gains taxes for the 2026 tax year using the engine from statetakehome.com.
    3
    49 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables models to query real US government data (BLS, BEA, Census, IRS 2026) to calculate 2026 take-home pay across all 50 states plus DC, compare cost-of-living-adjusted salaries between 50 US metros, retrieve tax bracket ladders, and look up occupation-level salary percentiles. Exposes five read-only tools over a free, keyless remote Streamable HTTP endpoint.
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to perform accurate local computations including arbitrary-precision math, date handling, unit conversion, subnet calculations, encoding, hashing, and text analysis, all without network calls or API keys.
    27
    128 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Open-source, accountant-verified tax computation skills for AI agents. 261+ skills across 172+ jurisdictions covering income tax, VAT/GST, payroll, corporate tax, crypto, and cross-border planning. Every skill is verified section-by-section by licensed CPAs and chartered accountants. 3 tools (list_skills, get_skill, get_skill_sections) and 1 prompt (skill-review).
    12
    3
    446
    AGPL 3.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources