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 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.5/5.0

Scored across 35 tools

Disambiguation2/5

Several tools overlap heavily: indian_income_tax, tax_in, and tax_in_new all compute Indian personal income tax, with the first two appearing to perform nearly identical dual-regime comparisons. Although many other calculators include cross-references that help, the duplicates plus a generic `compute` dispatcher create real misselection risk.

Naming Consistency3/5

Tool names are uniformly lowercase and snake_case, but they mix verb-led names (advance_tax, context_sanitizer_verify_scope), bare nouns (gold, fd, ppf), and noun-phrase domain labels (mortgage_piti, startup_runway_dilution). The names remain readable, but there is no consistent verb_noun or single domain-prefix convention.

Tool Count2/5

At 35 tools, the surface is well above the 25+ threshold where a tool set starts to feel heavy. Many entries are narrow variants or redundant tax engines, and meta/utility tools like compute, pack_status, and the context_sanitizer pair further bloat the calculator-focused collection.

Completeness3/5

The set covers a wide range of tax, investment, loan, and business finance calculations, so it is not severely incomplete. However, the domain is muddled by non-calculator tools and duplicate Indian income-tax engines, while notable gaps remain for common financial scenarios like capital gains tax or corporate income tax.

Available Tools

35 tools
advance_taxIndia advance tax instalmentsA
Read-onlyIdempotent
Inspect

Calculate statutory quarterly advance tax installments and interest penalties under Sections 208, 209, 211, 234B, and 234C of the Indian Income-tax Act. Determines exact installment deadlines (15% June 15, 45% Sept 15, 75% Dec 15, 100% March 15) and statutory shortfall interest.

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_taxYesEstimated total annual net tax liability after TDS/TCS credits in INR (₹). Advance tax mandatory if >= ₹10,000.

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the description only needs to add substantive context. It does so by disclosing the exact statutory basis (Sections 208, 209, 211, 234B, 234C), the quarterly percentages, and deadlines, making the calculation behavior predictable. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences, front-loaded with the core verb and object, and every clause adds information: the legal sections, the quarterly percentages/deadlines, and the shortfall-interest behavior. It is compact without sacrificing specificity.

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 two-parameter, read-only calculator, the description covers the purpose, legal basis, and key outputs (deadlines and shortfall interest). The main gap is the absence of explicit output-structure details, but the schema fully documents the inputs and the behavior is simple enough to infer.

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 clear descriptions, examples, and patterns for both assessed_tax and as_of_date, so the schema carries the burden. The description does not add parameter-specific meaning beyond implying they feed the statutory calculation, which matches the 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?

The description names a specific verb (Calculate), a precise resource (statutory quarterly advance tax installments and interest penalties), and cites the governing statutory sections. It is immediately distinguishable from sibling tax tools like tds, tcs, and indian_income_tax because it is explicitly about advance tax instalments.

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 its use case: computing advance tax installments and related interest. However, it gives no explicit when-to-use/when-not-to-use guidance or alternatives, and with many sibling tax tools an agent must infer that this tool is not for TDS/TCS or general income-tax computation.

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.

TDQS

A4.4/5.0
Behavior4/5

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

Even with readOnlyHint and idempotentHint annotations, the description adds behavioral context: deterministic calculation with zero external side effects, official provider pricing cards as data source, cache/batch discount mechanics, and freshness categories. No statement contradicts the annotations.

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

Conciseness4/5

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

The definition is organized into Description, Behavior, and Usage Guidelines with the main purpose front-loaded. It is slightly verbose and contains a distracting 'pack age' phrase, but every section carries useful selection and invocation information.

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

Completeness5/5

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

For a deterministic calculation with no output schema, the description adequately names the return products (cost matrix, arbitrage analysis, cache savings, monthly projections), key pricing assumptions, and the routing alternative. Combined with the thorough input schema, an agent can select and invoke this tool 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?

The schema covers all 10 parameters with types, defaults, aliases, and constraints, so the baseline is 3. The description complements this by explaining the cost mechanics (95% cache discount, 50% batch discount, cache hit ratio) but does not add per-parameter syntax 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 opens with a specific verb ('Calculate') and a precise resource ('multi-provider LLM API inference token costs'), then enumerates covered economics: caching, batch discounts, and cross-model cost disparity. This clearly differentiates it from financial/egress siblings and gives an agent an unambiguous purpose.

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 provides explicit when-to-use scenarios ('budgeting AI agent inference costs', 'evaluating LLM providers', 'deciding whether to implement prompt caching or batch inference') and explicitly says 'Do not use for cloud network egress; use cloud_egress_finops instead'. This is model guidance for selection.

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

b2b_withholding_riskB2B cross-border withholding riskA
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 cross-border B2B consulting/software invoice tax gross-up, statutory vs DTAA bilateral tax treaty withholding rates (Form W-8BEN/W-8BEN-E), and Permanent Establishment (183-day) tax audit exposure.

Behavior: Deterministic, idempotent calculation with zero external side effects. Computes required gross invoice amount: Gross = Net / (1 - WHT_rate). Analyzes treaty tax relief savings (Statutory WHT vs Treaty WHT) and triggers high-risk Permanent Establishment alert if physical presence exceeds the 183-day international treaty threshold.

Usage Guidelines: Use when exporting services cross-border or structuring international client contracts subject to foreign withholding tax. Do not use for digital nomad individual income tax exclusion; use feie_nomad_tracker instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysInCountryNoCumulative physical days spent in client jurisdiction over a rolling 12-month period. Values over 183 trigger Permanent Establishment audit risk.
treatyRatePercentNoReduced withholding tax rate percentage under applicable bilateral Double Tax Avoidance Agreement (DTAA) (e.g. 0, 10, 15%).
invoiceNetRequiredNoNet spendable cash amount required to be landed in exporter account in USD ($). Must be positive.
statutoryRatePercentNoForeign client country statutory withholding tax rate percentage (e.g. 30 for 30%). Default is 30.0.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint and idempotentHint annotations, the description discloses that the tool is 'Deterministic, idempotent calculation with zero external side effects' and warns that it 'uses ordinary floating-point arithmetic, keeps no dated table of official rates, and has not yet passed our full reference-test suite.' It also reveals the core formula and PE threshold behavior, providing meaningful context beyond structured data.

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 dense but organized into purpose, behavior, and usage paragraphs, with no filler. The only minor structural weakness is that the precision caveat appears before the main purpose statement, which slightly delays the agent's understanding of what the tool does.

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 tax calculator with zero required parameters, all inputs defaulted, and full schema descriptions, the description covers the computation formula, the PE threshold, the gross-up mechanism, and the recommended alternative tool. It does not explicitly describe the output structure, but the computed results—gross amount, treaty savings, and PE alert—are strongly implied.

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 adds value on top by explaining how the parameters relate: 'Gross = Net / (1 - WHT_rate)' and by framing daysInCountry and treaty versus statutory rates in terms of PE alerts and treaty relief savings. It does not need to repeat every parameter's schema description.

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 precise verb and resource: 'Calculate cross-border B2B consulting/software invoice tax gross-up, statutory vs DTAA bilateral tax treaty withholding rates... and Permanent Establishment (183-day) tax audit exposure.' This clearly differentiates it from sibling tax tools, especially because it explicitly invokes feie_nomad_tracker as the alternative 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?

The 'Usage Guidelines' paragraph is explicit and actionable: 'Use when exporting services cross-border or structuring international client contracts subject to foreign withholding tax. Do not use for digital nomad individual income tax exclusion; use feie_nomad_tracker instead.' This gives both a positive trigger and a named alternative.

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.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, and non-destructive behavior; the description echoes that but adds real value by stating the exact equation Gross - Expenses - Health - SECA Tax - Income Tax = Target Net Cash and explaining how billable hours are derived from vacation weeks and non-billable percentage. No contradiction with annotations.

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

Conciseness5/5

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

Organized into three efficient sections: overview, behavior, and usage. Every sentence contributes either to understanding the calculation, clarifying side effects, or distinguishing the tool from contractor_parity. No filler or redundant restatement of schema details.

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

Completeness5/5

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

For a deterministic calculation tool with fully documented parameters and annotations, the description is complete: it gives the computational model, output definition, required date rule-pack behavior, usage context, and sibling exclusion. Even without an output schema, the return value ('hourly billable floor') is unambiguous.

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 beyond individual field descriptions by showing how targetNetCash, annualExpenses, healthInsuranceAnnual, vacationWeeks, and nonBillablePercent interact in a single calculation, clarifying the relationship between parameters and the derived hourly floor.

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 and resource: 'Solve the exact minimum billable hourly rate required to achieve a target net spendable cash income' and enumerates the contributing factors. It also names the sibling alternative (contractor_parity), so an agent can distinguish this tool without opening its 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?

Provides explicit 'Use when' context for freelancers/consultants/agency owners setting a baseline rate and explicit 'Do not use when' guidance directing the agent to contractor_parity for W-2 salary comparisons. This is clear routing between siblings.

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.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses the precision caveat: ordinary floating-point arithmetic, no dated official-rate table, and not yet passed the full reference-test suite. It also explicitly states zero external side effects and provides the exact formulas used.

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-organized into Precision, Behavior, and Usage Guidelines sections, and each sentence contributes meaningful information. The precision caveat is placed first, which slightly delays the main purpose statement, but the formula detail and routing guidance justify the length overall.

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

Completeness5/5

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

For a 4-parameter calculator with no output schema, the description is complete: it covers purpose, formulas, expected behavior, precision limitations, and usage boundaries. The annotations and schema cover side-effect safety and parameter constraints, and 'Returns detailed breakdown' plus the named metrics is sufficient for correct invocation.

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

Parameters5/5

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

Even though schema coverage is 100%, the description adds real semantic value by defining the relationships between parameters: Unit Contribution Margin = unitPrice - unitVariableCost, Break-Even Units = fixedCosts / CM, and how expectedUnitsSold triggers margin-of-safety and DOL computation.

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 ('Calculate') and a precise resource: cost-volume-profit break-even thresholds in units and revenue, contribution margin ratio, margin of safety, and DOL. It also distinguishes itself from the sibling billable_floor by explicitly excluding hourly freelance billing rate minimums.

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 contexts: pricing strategy, manufacturing and SaaS unit economics, and operational risk appraisal. It also names the alternative tool (billable_floor) for the excluded use case, leaving no ambiguity about routing.

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

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.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description reinforces these with 'deterministic, idempotent calculation with zero external side effects' and adds the exact formulas and output values. While it doesn't disclose anything beyond annotations, it does add context on computation and returns, which is valuable.

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 well-structured with clear sections for purpose, behavior, and usage guidelines. It front-loads the primary function and keeps each sentence informative without redundancy. The length is justified by the tool's complexity.

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 description explains the return values (nominal CAGR %, real CAGR %, total gains, doubling years) and provides usage boundaries. However, it does not explicitly explain the 'mode' parameter (HISTORICAL_CAGR vs PROJECTION) or when to use PROJECTION mode. Since the schema covers the parameter, this is a minor gap, but for a tool with multiple modes, an explicit mention would improve completeness.

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 schema fully documents all parameters. The description adds meaning by showing how parameters are used in formulas (e.g., finalValue/initialValue, periodsYears, inflationRatePercent), which clarifies their role beyond the schema's field-level descriptions. This is a modest enhancement over the baseline of 3.

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 explicitly states what the tool does: calculates CAGR, real inflation-adjusted growth, and doubling time, with a clear verb and resource. It also differentiates from siblings by naming compound_wealth and sip_investment as alternatives for different use cases.

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

Usage Guidelines5/5

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

It provides explicit when-to-use scenarios (historical portfolio track records, business revenue growth, inflation drag analysis) and when-not-to-use (forward-looking recurring monthly projections), naming the exact alternative tools. This fully satisfies the requirement for usage guidance.

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.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark readOnly/idempotent/non-destructive; the description adds meaningful behavior beyond that: deterministic calculation, zero side effects, specific pricing tiers, modeling of cache offload, and the exact return categories. No contradiction with annotations exists.

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

Conciseness4/5

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

The description is well structured: a purpose sentence, a Behavior block, and a Usage block. It is slightly wordy in the opening phrase, but each sentence serves a distinct function and the key scoping/usage guidance is visible early.

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

Completeness5/5

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

For a read-only calculation tool with no output schema, it fully covers what an agent needs: inputs are schema-documented, behavior is deterministic, outputs are itemized (gross costs, post-cache costs, net savings), and usage vs alternatives is explicit.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description reinforces broad calculation context (tiered rates, cache reduction) but does not add much per-parameter meaning beyond what the schema already provides for as_of_date, cacheHitRatio, and monthlyEgressGB.

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 ('analyze') tied to a precise resource: AWS/GCP egress pricing versus Cloudflare zero-egress, and states what it produces (monthly/annual savings). It also distinguishes itself from the financial/FinOps sibling cluster, especially via the explicit token-pricing exclusion.

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 use cases (cloud architecture budgeting, FinOps reviews, CDN/Cloudflare migration evaluation) and an explicit when-not-to-use rule with the alternative named (ai_token_arbitrage). This is above the typical bar.

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).

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds valuable context beyond these: '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.' It also confirms 'Deterministic, idempotent calculation with zero external side effects.' This discloses reliability caveats and confirms behavior without contradicting annotations.

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 structured with a front-loaded caveat, followed by purpose, behavior, and usage. Every sentence adds value: the precision warning is critical, the formula is essential, and the usage exclusion prevents misuse. It is appropriately sized for a tool with 5 parameters and no output schema, with no redundant 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?

Given the tool's complexity (5 parameters, no output schema) and rich annotations, the description fully covers what an agent needs. It explains the return values ('final accumulated balance, total principal contributed, total compound interest earned, and annual wealth progression milestone table'), provides the formula, and sets expectations on precision. Nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 100% and each parameter has a clear description (e.g., annualRatePercent: 'Expected annualized investment return rate percentage'), so the baseline is 3. The tool description adds the exact compound interest formula, which clarifies how parameters interact (e.g., n for compoundFrequency, PMT for monthlyDeposit). This goes beyond the schema's individual parameter descriptions and earns a 4.

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 clearly states the tool's purpose: '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.' It uses a specific verb (simulate) and resource (compound interest growth), and differentiates from the sibling sip_investment by explicitly excluding Indian SIPs with step-up. This makes it unambiguous which tool to choose.

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?

The description provides explicit usage guidance: '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.' This clearly states when to use and when not to, and names the alternative tool, leaving nothing to inference.

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

computeUniversal compute (route to any engine)A
Read-onlyIdempotent
Inspect

Universal calculation entrypoint across all 30 TrueCalci engines. Dispatches execution to the specified engine with validated inputs, returning exact deterministic results.

ParametersJSON Schema
NameRequiredDescriptionDefault
engineYesThe engine to run, by tool name (e.g. tds, fd, gst_composition).
inputsYesThe engine's own inputs, exactly as its tool schema defines them.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, and non-destructive behavior. The description adds genuinely useful context beyond that: inputs are validated before dispatch, and results are 'exact deterministic' — a determinism claim not present in the annotations. No contradiction with annotations, and the additive behavioral traits are meaningful for an agent deciding whether repeated calls are safe and reliable.

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?

A single sentence of roughly 20 words with zero filler. The core concept (universal entrypoint, engine routing) is front-loaded, and the deterministic-results payoff is stated last. Every clause 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?

For a dispatcher that routes to 30 engines, the description handles complexity by deferring input details to each engine's schema, and the sibling list supplies valid engine names. It covers the return promise ('exact deterministic results') despite having no output schema. Minor gaps: no mention of error behavior for invalid engine names or unknown inputs, but this is acceptable for a routing tool whose contract lives in the target engines.

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

Parameters3/5

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

Schema coverage is 100% and both parameters (engine, inputs) are already well documented, including the nested structure and example for inputs. The description reinforces with 'validated inputs' and 'specified engine' but adds no format, syntax, or constraint detail beyond what the schema provides. At full coverage the baseline of 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?

The description states a clear purpose: a universal calculation entrypoint that dispatches to any of 30 TrueCalci engines and returns deterministic results. It implicitly distinguishes itself from the 31 sibling tools (tds, fd, gst_composition) by being the universal router rather than a specific engine. The name 'compute' is generic, but the title and description recover it with a specific verb (dispatches) and resource (engines).

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 — you route to a named engine rather than calling it directly — but it never explicitly says when to choose this universal entrypoint versus the specific engine tools, nor does it state any exclusion conditions. The 'route to any engine' title and the engine parameter hint at the decision, but there is no direct guidance on selection criteria.

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

context_sanitizer_get_dsiContext Sanitizer: documentation stability indexA
Read-onlyIdempotent
Inspect

ContextSanitizer Drift Score Index (DSI) inspector. Returns repository health score (0.0 to 100.0), active contradiction list, and cryptographic Merkle proof receipt.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoOptional in-memory file map to compute immediate DSI score.
repoIdNoRepository identifier (e.g. 'truecalci-official/truecalci').

TDQS

A3.8/5.0
Behavior4/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 safety profile is covered. The description adds behavioral context by specifying the returned data (health score, contradiction list, Merkle proof), which goes beyond the annotations. However, it doesn't disclose any potential limitations or edge cases, but for a read-only operation this is acceptable.

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 a single, information-dense sentence that front-loads the tool's purpose and outputs. There is zero waste; every word adds value. It names the tool, its function, and the exact return types without elaboration.

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 simple read-only inspector with no output schema, the description adequately conveys what it returns. It does not explain the relationship between the optional 'files' and 'repoId' parameters, but the schema descriptions cover that. The tool is simple enough that nothing critical is missing, though a note on when to use each parameter would improve completeness.

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% (both 'files' and 'repoId' have descriptions), so the schema fully documents the parameters. The description adds no additional meaning about these parameters, such as how they interact or which takes precedence. Baseline 3 is appropriate given high schema coverage.

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 clearly states the tool is an inspector for the Drift Score Index, and specifies the exact outputs: health score (0.0-100.0), contradiction list, and Merkle proof receipt. This is specific and distinguishes it from the sibling context_sanitizer_verify_scope, which likely handles verification rather than inspection.

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 gives no guidance on when to use this tool versus alternatives. There is no mention of when to choose it over context_sanitizer_verify_scope or any other sibling, nor any context about prerequisites or typical scenarios. The tool's name and description imply usage for getting a DSI, but explicit usage guidance is absent.

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

context_sanitizer_verify_scopeContext Sanitizer: verify repository scopeA
Read-onlyIdempotent
Inspect

ContextSanitizer (DocTruth) pre-commit semantic contradiction validator. Pre-validates proposed code and documentation edits against repository knowledge graph before files are written, detecting semantic contradictions, zombie routes, and drift.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesMap of relative file paths to content strings (e.g. { 'server.ts': '...', 'docs/api.md': '...' }).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds behavioral specifics: it consults a repository knowledge graph and detects semantic contradictions, zombie routes, and drift. This supplements the annotations without contradicting them.

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 a single compact sentence that conveys the tool's role and inputs. There is minor redundancy between 'pre-commit semantic contradiction validator' and 'detecting semantic contradictions', but overall it is well-sized and front-loaded for an agent to parse.

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?

The input side is complete: the agent knows to pass a map of relative file paths to content strings. However, there is no output schema and the description does not explain what the tool returns or how to interpret the validation result, which is a meaningful gap for a validator 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 fully describes the single 'files' parameter with an example, so schema_description_coverage is 100%. The tool description adds no additional parameter-level meaning, so it remains at the baseline of 3.

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

Purpose4/5

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

The description states a specific action: it pre-validates proposed code and documentation edits against a repository knowledge graph before files are written, detecting semantic contradictions, zombie routes, and drift. This clearly identifies the tool's purpose and resource. However, it does not explicitly differentiate itself from the sibling tool context_sanitizer_get_dsi, so it stops short of a 5.

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

Usage Guidelines4/5

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

The description gives clear usage context through 'pre-commit' and 'before files are written', telling the agent this is a pre-write validation step. It does not mention when not to use it or compare it to alternatives, but the timing guidance is concrete and actionable.

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.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover readOnly/idempotent/destructive false, but the description adds substantial detail: deterministic, zero external side effects, lists all computed tax items, and specifies exact return contents (net spendable cash, tax breakdowns, effective rates, breakeven hourly rate). This exceeds the annotation-based baseline and fully discloses behavior.

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 moderately long but well-structured: a clear purpose sentence, a behavior paragraph listing computes and returns, and a usage guideline paragraph. It is front-loaded with the core purpose. Each sentence carries information; there is little waste.

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

Completeness5/5

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

With 12 parameters, 4 required, and no output schema, the description compensates by specifying all return outputs and behavior. It also gives usage conditions. The as_of_date param is explained in the schema, and the description confirms rule-pack selection implicitly. No critical omission 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 description coverage is 100%, so the baseline is 3. The description does not restate individual parameters but frames them as inputs to a breakeven calculation, adding aggregate context. This is acceptable but does not add per-parameter meaning beyond the schema's comprehensive descriptions.

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

Purpose5/5

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

States a specific verb ('Calculate') and resource ('tax liabilities, statutory benefits, and net take-home cash') distinguishing W-2 vs 1099 and solving the exact breakeven rate. It also names a sibling (billable_floor) as the alternative context, clarifying its unique purpose.

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

Usage Guidelines5/5

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

Explicitly states when to use ('deciding between a W-2 salaried offer and a 1099 contractor contract') and when not to ('solo freelancer baseline rate setting without a W-2 benchmark'), pointing to a specific alternative tool. This is direct and actionable guidance.

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

fdFixed deposit maturityA
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.

TDQS

A4.4/5.0
Behavior4/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 safety profile is covered. The description adds meaningful behavioral context: it discloses that compounding is fixed by statutory rule pack, that TDS thresholds are analyzed, and that the computation is rule-based. The schema's compounding_convention parameter also reinforces the fixed-convention behavior. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences with zero waste. The first sentence states the core function and the second adds the key statutory context. Every clause earns its place, and the most important information (what it calculates) is front-loaded.

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 read-only calculation tool with 100% schema coverage and no output schema, the description is nearly complete. It covers the product scope, compounding conventions, and TDS analysis. The only minor gap is that it doesn't describe the return value shape, but since there is no output schema and the tool is a calculator, the agent can infer a numeric result. The statutory context provided is sufficient for correct invocation.

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 schema already documents all parameters thoroughly. The description adds value by explaining the statutory basis (RBI Master Direction, Section 194A) and clarifying that compounding_convention is read-only and fixed. This goes beyond the schema's own descriptions, which already note the statutory constraints. A 4 is appropriate because the description reinforces and contextualizes the parameter semantics without needing to repeat schema details.

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 ('Bank and Corporate Fixed Deposit maturity amount and interest returns'), and enumerates the compounding conventions and TDS threshold analysis. This clearly distinguishes it from sibling tools like home_loan_emi or sip_investment, which address different financial products.

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 implies when to use this tool: when an agent needs FD maturity or interest calculations, including TDS threshold analysis. It doesn't explicitly name alternatives or exclusions, but the specificity of the FD domain and the mention of statutory thresholds provides clear context. A small gap is the lack of explicit 'use this instead of X' guidance.

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.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint), the description states the calculation is deterministic and side-effect free, evaluates the 330-day threshold, applies the statutory cap, computes tax liability on excess income, and flags aggressive state domicile rules. The annotations already cover safety, so this additional operational detail is genuinely valuable.

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 organized into three labeled sections (overview, behavior, usage guidelines), with no filler. Some redundancy exists between the overview's $130,000 for 2025 and the behavior section's repeated cap values, but otherwise every sentence earns its place given the tool's complexity.

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 tool with six parameters and no output schema, the description conveys the core computation, eligibility threshold, caps, and state-risk flagging. It does not describe the exact output shape or the interplay of qualifyingDaysInTaxYear with proration, but the schema covers those fields and the description gives enough context for correct invocation.

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 adds meaning to key parameters: it specifies the 330-day threshold for daysOutsideUSInRollingPeriod, the statutory cap values for 2024 and 2025, and the high-audit states for stateDomicile. It does not discuss filingStatus or qualifyingDaysInTaxYear explicitly, but the schema already covers those well.

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 and resource: it tracks IRS Form 2555 FEIE eligibility, the 330-day Physical Presence Test, the statutory exclusion cap, and sticky domicile audit risks. This clearly distinguishes it from sibling tools, especially because the usage guidelines explicitly name b2b_withholding_risk as the alternative for foreign corporate withholding tax.

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?

The Usage Guidelines section explicitly states when to use the tool (US citizen digital nomads and expats evaluating Section 911 exemptions) and when not to use it, naming the sibling tool b2b_withholding_risk for foreign corporate withholding tax. This gives the agent a decisive routing rule with no ambiguity.

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

Quantify cross-border payment fee drag and calculate net landed local currency across 6 global payout rails (Wise, Deel, Stripe, Payoneer, PayPal, and SWIFT wire) against mid-market FX benchmark rates.

Behavior: Deterministic, idempotent calculation with zero external side effects. Models fixed per-transaction wire fees, percentage platform fees, and hidden foreign exchange percentage spreads for each provider. Returns ranked table with landed payout amounts, total drag percentage, hidden FX markup, and savings versus worst-case rail.

Usage Guidelines: Use when an international freelancer, remote worker, or cross-border vendor needs to determine the cheapest payout rail or invoice amount in USD. Do not use for domestic US employee vs contractor parity; 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.
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

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description correctly reinforces these with 'Deterministic, idempotent calculation with zero external side effects.' It adds useful behavioral context beyond annotations: what fee components are modeled and what the returned ranked table contains. No contradiction exists.

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 appropriately structured into purpose, behavior, and usage guidelines. Every sentence earns its place: the first gives the high-level result, the second defines deterministic behavior and output, and the third routes the agent to or away from the tool. 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?

For a read-only, idempotent calculator with a fully described 3-parameter schema, the description is complete. It explains what is modeled, which providers are included, what the returned ranked table contains, and when to prefer an alternative. Even without an output schema, an agent has enough to select and invoke the tool 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%: invoiceUsd, as_of_date, and targetCurrency already have clear descriptions, defaults, and an enum. The tool description does not need to repeat parameter-level details, so baseline 3 applies; it adds no specific parameter meaning beyond the schema, but nothing is missing.

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 pair: 'Quantify cross-border payment fee drag and calculate net landed local currency across 6 global payout rails.' It names the rails explicitly and contrasts with contractor_parity, so an agent can distinguish this tool from its siblings 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?

The 'Usage Guidelines' section states exactly when to use the tool (international freelancers, remote workers, cross-border vendors choosing a payout rail or invoicing in USD) and explicitly says when not to use it (domestic US employee vs contractor parity), naming the alternative tool. This is model guidance.

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

goldGold valuationA
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.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, and non-destructive behavior; the description adds the exact calculation components: hallmark adjustments (24K/22K/18K/14K), statutory GST 3%, making charges, and regional unit conversions. This goes beyond annotations but stops short of describing output shape or the silver-input discrepancy.

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 the main purpose and packs the feature list without fluff. The comma-separated list is efficient, though it reads slightly like a feature dump rather than structured guidance.

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 rich schema descriptions and annotations, the agent has the parameter and safety context to invoke the tool. The description's calculation scope fills the behavioral gap, but the unbacked 'Silver' claim and absence of any output-format hint leave minor gaps.

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 covers 100% of parameters, including examples, patterns, enums, and defaults, so the baseline is 3. The description adds domain context (GST 3%, making charges, conversions) but no parameter-specific detail beyond what the schema already provides.

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

Purpose4/5

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

The description opens with 'Calculate Gold and Silver commodity valuation' and enumerates specific sub-computations (purity, GST, making charges, conversions), which is a clear verb+resource statement. It distinguishes this tool from the tax and investment siblings by subject matter, though no sibling is named. The mention of 'Silver' is unsupported by the input schema, which only includes gold-specific parameters, slightly diluting clarity.

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 use for gold valuation calculations, and the sibling list contains no other gold-specific valuation tool, so the agent can infer applicability. However, there is no explicit when-to-use or when-not-to-use guidance, no alternative tool references, and the unsupported 'Silver' claim muddies the boundaries.

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.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, and the description consistently supports that by saying the tool 'calculates' and 'computes' rather than mutating anything. It adds beyond the annotations by disclosing the rate schedule and that it 'enforces statutory turnover thresholds,' which tells an agent the tool will apply eligibility limits during calculation. The only omission is the precise failure mode when a threshold is exceeded.

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 compact sentences front-load the core action and resource, then pack the differentiating category rates and threshold behavior into the second sentence. There is no filler or repetition of the title.

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 calculation-only tool with no output schema, the description makes the output concept ('quarterly tax liabilities') clear and covers the input categories and thresholds that determine the computation. It would be slightly more complete if it described the output shape (e.g., total liability or per-category breakdown), but the core invocation contract is present.

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 adequate, but the description adds extra meaning by mapping category values to concrete rates (trader/manufacturer 1%, restaurant 5%) and by clarifying that turnover parameters feed statutory threshold enforcement. It does not fully spell out how 'as_of_date' behaves beyond the schema's rule-pack note, but the added mapping is genuinely useful.

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 ('Calculate') and a well-defined resource ('statutory GST quarterly tax liabilities under the Composition Scheme'), and immediately distinguishes itself from the sibling 'gst_regular' by naming Section 10 of the CGST Act. It also names the three supported categories and their rates, so an agent cannot mistake it for a generic GST 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?

The phrase 'under the Composition Scheme (Section 10 of CGST Act)' provides clear context for when this tool is appropriate, and the turnover-threshold mention signals the main eligibility constraint. It does not explicitly name 'gst_regular' as the alternative or state when not to use it, so it stops short of a 5.

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

gst_regularIndia GST (regular scheme: CGST, SGST, IGST)A
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

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses deterministic, idempotent behavior with no side effects, which aligns with the idempotentHint and destructiveHint annotations. It further adds what a plain annotation can't: the engine refuses unknown rates, exclusive vs inclusive mode adds or extracts tax, and lists the return fields. This is rich behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is structured with a purpose sentence followed by clear 'Behavior' and 'Usage Guidelines' sections. Every sentence earns its place—no fluff, and the purpose is front-loaded before behavioral and usage details.

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 10 parameters, 100% schema coverage, and no output schema, the description compensates by listing the return fields (taxable value, CGST, SGST, IGST, cess, total tax, invoice total). It also clarifies the rate-rule-pack constraint and mode semantics, so an agent has everything needed to 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 all 10 parameters are already documented in the input schema. The description adds only marginal value (e.g., explaining exclusive/inclusive mode, which the schema already covers for calculation_mode). Since the schema does the heavy lifting, the 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 states a specific verb (calculate) and resource (Indian GST under the regular scheme), and immediately distinguishes intra-state (CGST+SGST) from inter-state/export/SEZ (IGST) supplies. It names the sibling gst_composition, which disambiguates it from other tools without needing to inspect 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?

The description explicitly states when to use it (registered person under the regular scheme) and when not to (composition-scheme taxpayer), and names the alternative gst_composition. This is clear routing guidance that leaves no inference to the agent.

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

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).

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, so the description's statement about deterministic, side-effect-free behavior adds little beyond annotations. However, it does disclose the return fields (monthly EMI, total payment, total interest percentage, first-year amortization breakdown) and the exact formula used, which are not covered by annotations or schema.

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

Conciseness4/5

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

The description is organized into three focused paragraphs: purpose, behavior, and usage guidelines. It is front-loaded with the core action and includes the formula for transparency without being verbose. It could be slightly more compact by omitting the formula, but 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 no output schema, the description adequately explains the return values (monthly EMI, total payment, total interest percentage, first-year amortization breakdown) and the calculation formula. It also names the alternative for edge cases. It does not mention potential errors or edge conditions, but for a deterministic calculation tool, the provided information is sufficient 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 description coverage is 100%, and each parameter is well-documented in the schema (e.g., principal pattern, interestRatePercent decimal string, as_of_date selection of rule pack, tenureYears default). The description does not add significant parameter-level meaning beyond what the schema 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.

Purpose5/5

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

The description opens with the verb 'Calculate' and names the specific resource: reducing-balance monthly EMI, total interest payable, and amortization schedule for home, auto, or personal loans. It clearly distinguishes from the sibling mortgage_piti by specifying that US residential mortgages are out of scope, so an agent can differentiate without inspecting other tools.

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

Usage Guidelines5/5

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

Explicitly states when to use ('general global reducing-balance loans and consumer debt') and when not to ('US residential mortgages requiring property tax, hazard insurance, and PMI escrow'), and names the alternative tool (mortgage_piti). This leaves no ambiguity about selection criteria.

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

indian_income_taxIndia income tax (regime comparison)A
Read-onlyIdempotent
Inspect

Compute Indian personal income tax liability comparing the Union Budget 2025-26 New Tax Regime (with Section 87A rebate and ₹75,000 standard deduction) against the Old Tax Regime.

Behavior: Deterministic, idempotent calculation with zero external side effects. Applies statutory slab rates for FY 2025-26 (AY 2026-27): ₹0-4L Nil, ₹4-8L 5%, ₹8-12L 10%, ₹12-16L 15%, ₹16-20L 20%, ₹20-24L 25%, above ₹24L 30%. Applies full Section 87A rebate if taxable income is up to ₹12 Lakhs, adds 4% Health & Education Cess, and returns side-by-side comparison of old vs new regime, and states which one gives the lower tax for the inputs given.

Usage Guidelines: Use when computing personal income tax or payroll deductions for Indian residents and salaried professionals. Do not use for US federal/state taxes; use contractor_parity or solo_401k_shield instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
ctcYesAnnual Cost-to-Company (CTC) / Gross taxable salary in Indian Rupees (INR ₹). 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.
isSalariedNoWhether the taxpayer is a salaried employee (eligible for statutory ₹75,000 standard deduction under the New Regime).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark readOnly, idempotent, and non-destructive, and the description reinforces this with 'Deterministic, idempotent calculation with zero external side effects.' It goes beyond annotations by disclosing exact slab rates, the 87A rebate threshold, the 4% cess, and that it returns a side-by-side comparison plus a lower-tax determination.

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 well-structured with clear purpose, Behavior, and Usage Guidelines sections. It is front-loaded with the main purpose, and the slab-rate detail is dense but earns its place as necessary behavioral transparency. There is 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?

For a complex tax-comparison tool with no output schema, the description is remarkably complete: it specifies the assessment year, slab rates, rebate, standard deduction, cess, output behavior, and excluded use cases. An agent has enough information to invoke the tool correctly and interpret what it will return.

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 parameters are already well documented in the schema. The description adds useful tax context but does not provide additional parameter-specific meaning beyond what the schema already states for ctc, as_of_date, and isSalaried.

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 action and resource: 'Compute Indian personal income tax liability comparing... the New Tax Regime ... against the Old Tax Regime.' It names concrete statutory details (Section 87A rebate, ₹75,000 standard deduction, FY 2025-26 slabs), clearly differentiating it from tax siblings like tds, advance_tax, and tax_in.

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 provides explicit 'Use when computing personal income tax or payroll deductions for Indian residents and salaried professionals' guidance. It also gives a clear exclusion and alternative: 'Do not use for US federal/state taxes; use contractor_parity or solo_401k_shield instead.' This leaves little ambiguity about when to invoke the tool.

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.
from_unitYesUnit of area. Regional units (bigha, biswa, katha ...) need state.
as_of_dateYesStatutory rule reference date (YYYY-MM-DD).

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly and idempotent annotations, the description adds valuable behavioral context: it is deterministic, refuses rather than guesses when state is missing, and explains that regional units have state-dependent sizes. It also discloses the return structure (target value, square foot baseline, and 7-unit standard breakdown), which annotations do not provide.

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-organized into labeled sections with the core action front-loaded. It is concise overall, though the requirement to specify state for regional units is stated in both the Behavior and Usage Guidelines sections, creating minor redundancy.

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 description covers the central complexity of state-dependent regional units and the refusal behavior, and explains return values despite no output schema. However, it offers little context about the required 'as_of_date' parameter beyond the schema's terse 'statutory rule reference date' text, so an agent unsure how to choose that date gets limited guidance.

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 meaningful semantics by explaining why 'state' is conditionally required and that universal units resolve nationally, which helps the agent understand the relationship between from_unit and state. This goes just beyond the schema without fully documenting every conditional combination.

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 and resource: 'Convert Indian regional and universal land measurement units', and further scopes it by legal framework and states. This clearly differentiates it from the finance/tax-focused sibling tools and leaves no doubt about what the tool does.

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?

There is an explicit 'Usage Guidelines' section instructing to specify 'state' for traditional units like bigha or katha to avoid ambiguous multi-fold variance. It gives clear context but does not name alternative tools or enumerate when not to use this tool; however, the sibling set is unrelated enough that this is a minor gap.

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%).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds substantial behavioral detail beyond that: 'Deterministic, idempotent calculation with zero external side effects', explains the calculation formula, conditional PMI logic (under 20% down until 78% LTV), and lists the return components. This goes far beyond the annotations and no contradiction exists.

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 efficient and well-structured: purpose, behavior, and usage guidelines are separated. It is front-loaded with the main purpose and then adds necessary detail. Every sentence earns its place without redundancy.

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

Completeness4/5

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

For a complex tool with 8 parameters, no output schema, and conditional PMI, the description covers the core functionality, returns, and usage context. It mentions the amortization schedule, lifetime interest, and PMI thresholds. It does not explicitly mention edge cases like negative values or currency handling, but these are likely covered by schema validation. Overall, it is quite complete.

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 baseline is 3. The description does not repeat parameter meanings but does add context about how they interact, e.g., 'down payment is under 20%' and '78% LTV threshold', which aids understanding. However, it does not provide per-parameter details beyond the schema, so it stays at 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?

The description clearly states the tool's purpose: 'Calculate monthly US mortgage payments broken down into PITI...' with a specific verb (calculate) and resource (US mortgage payments). It also distinguishes from sibling home_loan_emi by specifying 'US mortgage' and later naming the alternative for international loans.

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?

The description contains an explicit 'Usage Guidelines' section: '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.' This provides clear when-to-use, when-not-to-use, and names the alternative tool.

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%).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint; the description adds meaningful context beyond that: deterministic behavior, zero external side effects, the Newton-Raphson iteration count/tolerance, and the warning about standard precision and unpassed reference tests. 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.

Conciseness5/5

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

Three tight paragraphs: caveat first, then behavior/formula, then usage. Every sentence carries information (precision warning, algorithm detail, return values, sibling exclusions) with no filler. Efficient for the tool's complexity.

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

Completeness5/5

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

For a tool with no output schema, the description explicitly lists returned values (NPV, IRR percentage, PI, payback period) and explains input meaning. Combined with 100% schema coverage, it covers what an agent needs to call and interpret results.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented. The description repeats the NPV formula but adds no new parameter semantics beyond the schema. Baseline 3 applies because 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?

States a specific verb ('Compute') and resource (NPV, IRR, discounted payback period), and explicitly differentiates from the sibling compound_wealth by naming the alternative use case. An agent can tell this is for capital budgeting rather than simple interest compounding without opening other 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?

Provides explicit when-to-use scenarios ('capital investments, M&A valuations...') and a direct when-not-to-use directive ('Do not use for simple compound interest projections... use compound_wealth instead'). No inference needed.

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.

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, covering the safety profile. The description adds valuable behavioral context beyond annotations: it states the operation is 'free, no credits', which is a cost behavior, and lists the specific data returned (checksums, citations). It does not contradict annotations and provides meaningful supplemental disclosure.

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

Conciseness5/5

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

Two sentences with no fluff: the first states the primary function and cost, the second details the output contents. The most important information is front-loaded, and every phrase earns its place. Structure is clean and easily scannable.

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 a single optional parameter, no output schema, and read-only annotations, the description adequately covers what an agent needs: what the tool does, cost, and what data will be returned. It does not describe pagination or error cases, but for a simple metadata-listing tool this is a minor gap. The presence of a broad sibling list does not add complexity that this description fails to address.

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 fully documents the single optional engineId parameter, including example values and purpose. The description does not add any extra meaning about the parameter—it focuses on the tool's overall output. With the schema carrying the weight, a baseline of 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 states a specific verb ('Lists') and resource ('official rate tables each calculator uses'), making the tool's purpose immediately clear. It also differentiates this from sibling calculator tools by framing it as a metadata/status tool, not a computation tool. The mention of concrete contents (hash checksums, citations) further sharpens the scope.

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 ('Lists the official rate tables each calculator uses') but does not explicitly state when to choose this over sibling calculators or when not to use it. There is no mention of alternatives or a decision context, leaving the agent to infer that this is for inspecting rate tables before running calculations. This is adequate but lacks explicit guidance.

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).

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already mark the tool read-only and idempotent, and the description adds independently valuable behavioral constraints: the ₹1,50,000 deposit ceiling, the 7.1% p.a. rate, monthly 5th-day balance compounding, and Section 80C tax-exempt treatment. An agent can predict the simulation rules precisely.

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 entire description is one dense, front-loaded sentence that begins with the core action and packs each subsequent clause with a binding rule. There is no filler or repetition of the title.

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?

Between the annotations, the fully documented schema, and the description's statutory rules, the agent has almost everything needed to call the tool correctly. The only real gap is the absence of an output schema or any statement of the return shape, so the returned value (maturity corpus vs. schedule) remains slightly ambiguous.

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 input schema already documents all three parameters at 100% coverage with clear descriptions, including the ceiling and default tenure. The prose description enriches the domain context (rate, compounding, tax status) but does not add per-parameter meaning on top of the schema, so the baseline of 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 names the action ('Simulate'), the exact instrument ('Public Provident Fund'), and the scope ('15-year statutory compound wealth accumulation under Ministry of Finance notifications'). This is specific enough to distinguish PPF from finance siblings like fd, sukanya, and sip without needing to open their schemas.

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?

When to use the tool is implied by the resource-specific language—PPF, sovereign, Section 80C—so an agent can infer the use case. However, the description never states explicit conditions, exclusions, or alternatives, e.g., when to prefer sukanya or fd instead.

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 salary optimizerA
Read-onlyIdempotent
Inspect

Evaluate S-Corporation tax election viability by calculating reasonable officer salary split, SECA/FICA payroll tax shield, administrative overhead costs, and net tax savings under IRS Rev. Rul. 74-44.

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 15.3% 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).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral detail beyond those: it explains the deterministic calculation flow (splitting profit into W-2 wages and K-1 distributions, applying 15.3% FICA to salary only, deducting employer-half FICA, subtracting CPA and payroll fees, computing breakeven). This gives the agent a clear model of what the tool computes without contradicting any annotation.

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 into Purpose, Behavior, and Usage Guidelines, front-loading the core purpose. It is somewhat verbose but every sentence contributes meaning—no filler. The length is justified by the tool's complexity, and the structure aids scanning.

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

Completeness4/5

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

For a calculation tool with no output schema, the description explains the key outputs (net tax savings, breakeven threshold) and the input context. It covers the legal basis, calculation steps, and usage boundaries. It could be slightly more explicit about the exact output fields, but overall it is complete enough for an agent to 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 each parameter is already documented with type, default, and description. The tool description does not add direct parameter-level semantics beyond what the schema provides, though it gives context for netProfit and as_of_date indirectly (e.g., 'net business profit' and 'rule pack'). Baseline of 3 is appropriate given the high schema coverage.

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 and resource: 'Evaluate S-Corporation tax election viability' and enumerates the concrete outputs (reasonable officer salary split, SECA/FICA payroll tax shield, administrative overhead costs, net tax savings). It explicitly references IRS Rev. Rul. 74-44, anchoring its domain. It differentiates from siblings by naming solo_401k_shield as the alternative for retirement contribution limits, so an agent can 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?

The Usage Guidelines section explicitly states when to use ('US small business owner, single-member LLC, or high-earning freelancer considering electing S-Corp status to reduce self-employment taxes') and when not to ('Do not use for retirement account contribution limits; use solo_401k_shield instead'). This leaves no ambiguity about selection among the large sibling set.

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

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.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying the exact compounding formula, the monthly compounding model, the step-up behavior ('dynamically increases monthly installment each 12-month cycle'), and the return values (maturity amount, invested capital, capital gains, year-by-year accumulation). No contradictions with annotations.

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

Conciseness4/5

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

The description is well-structured with labeled 'Behavior' and 'Usage Guidelines' sections, and the purpose is front-loaded. It is efficient, though the phrase 'Deterministic, idempotent calculation with zero external side effects' partially repeats annotations already present, which prevents a top 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?

For a read-only, idempotent calculator with 100% schema parameter coverage, the description provides complete usage context, an explicit formula, step-up behavior, and return output description. There is no output schema, but the description compensates by listing what is returned. No significant gaps remain.

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?

Input schema covers all 5 parameters with descriptions, achieving 100% coverage, so the baseline is 3. The description adds meaningful context for stepUpPercent by clarifying it takes effect per 12-month cycle, and it defines the overall calculation context around the parameters. This goes slightly 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 opens with a specific verb and resource: 'Calculate Systematic Investment Plan (SIP) mutual fund maturity wealth' with an optional annual percentage step-up. It clearly distinguishes from sibling compound_wealth by naming what this tool is not for (lump sum US 401(k)/Roth IRA compounding).

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

Usage Guidelines5/5

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

Explicitly states when to use: 'Use for mutual fund SIP investments, recurring deposits, and goal-based financial planning' and when not to: 'Do not use for US 401(k) / Roth IRA compounding with lump sum; use compound_wealth instead.' This routes the agent to the correct tool without ambiguity.

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

Maximize tax-deferred retirement sheltering by comparing Solo 401(k) vs. SEP-IRA contribution limits and calculating immediate cash tax savings under statutory IRS Notice 2023-75 caps ($69,000 / $76,500).

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.
isAge50PlusNoWhether the account holder is age 50 or older, unlocking the statutory $7,500 catch-up contribution.
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%).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description reinforces this ('Deterministic, idempotent calculation with zero external side effects'). It adds substantial behavioral context beyond annotations: the exact calculation steps (employee elective deferral limits, employer profit-sharing percentages for different entity types, statutory caps, and marginal tax rate multiplication), and even clarifies a common pitfall (the rejected 'llc' entityType). This is exactly the kind of additional context that helps an agent trust and correctly use the tool.

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

Conciseness4/5

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

The description is structured with clear labels ('Behavior:', 'Usage Guidelines:') and the primary purpose is front-loaded in the first sentence. It is a bit long, but every sentence contributes: the calculation logic, statutory caps, entity type caveat, and usage alternative all earn their place. It avoids fluff and maintains focus, though it could be tightened by removing the redundant 'zero external side effects' phrase that duplicates annotations.

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 complex financial calculation with six parameters and no output schema, so the description carries the burden of explaining the return value. It does state that it 'returns net cash saved' and describes the computation pipeline, which is sufficient for an agent to understand the output. It also covers statutory limits, entity type rules, and catch-up eligibility, addressing the main edge cases. Minor gaps: it doesn't specify the exact output format (e.g., a single number vs. an object), and it doesn't mention error handling for invalid inputs, but these are not critical given the schema's explicit requirements.

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 goes beyond the schema by explaining how parameters interact: it specifies that entityType changes the profit-sharing percentage (20% for sole prop/LLC, 25% for S-Corp), that isAge50Plus unlocks the $7,500 catch-up, and that marginalTaxRatePercent is used to compute the cash tax savings. This adds meaningful semantic value, though the schema descriptions are already quite detailed. A 4 is appropriate—not a 5 because the schema already covers the basics, but the description enriches understanding of parameter relationships.

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 ('Maximize tax-deferred retirement sheltering') and resource ('Solo 401(k) vs. SEP-IRA contribution limits'), then details the exact computation (elective deferral + profit-sharing, capped at IRS Notice 2023-75 limits) and the output (net cash saved). This clearly distinguishes it from siblings like compound_wealth, which is explicitly named as the alternative for investment growth modeling. No ambiguity remains about what the tool does.

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?

The description states precisely when to use it ('Use when an owner-only business, independent contractor, or partner wants to optimize pre-tax retirement deductions') and when not to ('Do not use for multi-year exponential compound investment growth modeling'), naming the specific sibling tool to use instead (compound_wealth). This leaves no inference to the agent.

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%).

TDQS

A4.9/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing the exact calculation formulas (net burn = grossBurn - revenue, runway months = cashOnHand / netBurn, SAFE equity % = safeInvestment / postMoneyCap) and the deterministic, side-effect-free behavior, which aligns with readOnlyHint and idempotentHint. It fully explains what happens internally.

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 three-paragraph structure is efficient: the first paragraph lists core outputs, the second explains the math and safety, the third gives usage boundaries. Every sentence adds new information; no fluff or repetition. It is front-loaded with the purposes and then details the mechanics.

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 (9 parameters, no output schema), the description is quite thorough: it covers purpose, formulas, usage, and even mentions the 'shuffle waterfall'. The only minor gap is that it does not explicitly describe the exact output format (e.g., whether it returns a single JSON object with multiple fields), but this is implied by the listed calculations. The description is still strong overall.

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

Parameters5/5

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

While the input schema provides descriptions for every parameter (100% coverage), the description adds crucial semantic context by explicitly connecting parameters through formulas (e.g., how cashOnHand and monthlyGrossBurn combine to yield runway). This helps the agent understand the relationships and intent behind each field, far beyond a bare listing.

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 precise list of three distinct calculations (runway exhaustion date, SAFE conversion dilution, and option pool shuffle waterfall), naming specific resources and formulas. It clearly distinguishes this tool from financial cousins like npv_irr, so an agent can immediately recognize its scope.

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

Usage Guidelines5/5

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

Explicitly states when to use it ('venture capital fundraising planning, startup cash runway tracking, and cap table dilution modeling') and when not to ('Do not use for discounted cash flow or IRR project appraisal'), and directs the agent to the correct sibling (npv_irr). This is textbook guidance.

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

sukanyaIndia Sukanya Samriddhi YojanaA
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).

TDQS

A4/5.0
Behavior4/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 safety is covered. The description adds behavioral specifics beyond the schema: compounding at 8.2% p.a., a 21-year maturity schedule, Section 80C EEE tax exemption, and adherence to Government of India statutory guidelines. This gives the agent useful context about how the calculation behaves without contradicting annotations.

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 concise, well-structured sentences. The first front-loads the verb and scheme; the second packs the key calculation parameters. No filler or redundant phrases beyond minor contextual color.

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 read-only, idempotent annotations and 100% schema coverage, the description provides sufficient context: it names the scheme, the rate, the maturity, and the tax benefit. It slightly lacks an explicit statement of output format (e.g., whether it returns a maturity schedule or a single value), but the phrase '21-year maturity schedule' implies the output shape. An agent can call it correctly without major gaps.

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 three parameters (girl_age, as_of_date, yearly_deposit) already have meaningful descriptions. The tool description adds context about the computation (rate, maturity, tax exemption) but does not add new meaning to the parameters themselves. 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 uses a specific verb ('Simulate'/'Computes') with a specific resource ('Sukanya Samriddhi Yojana') and includes distinguishing details (girl child education, Section 80C EEE exemption, 21-year maturity) that separate it from sibling calculators like compound_wealth, ppf, or fd. No ambiguity about what the tool does.

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 usage context is implied: this is the tool for SSY simulation. However, the description provides no explicit when-to-use guidance, no exclusions, and no mention of alternative sibling tools (e.g., ppf, compound_wealth) that might also be relevant to small savings or compounding queries.

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 (old regime)B
Read-onlyIdempotent
Inspect

Compute Indian Personal Income Tax under Union Budget 2025-26 and Finance Act 2024. Performs dual-regime side-by-side comparison between the New Concessional Regime (Section 115BAC with ₹75,000 standard deduction and ₹12 lakh / ₹12.75 lakh Section 87A rebate) and the Old Tax Regime with Chapter VI-A deductions.

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.

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, so safety is covered. The description adds useful context about the specific tax law sections, standard deduction, and rebate thresholds, which goes beyond the annotations. However, it does not disclose any additional behavioral traits such as output format or potential external dependencies.

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 two sentences and front-loads the purpose. It packs specific statutory details efficiently without wasted words. It is slightly dense but remains clear and focused.

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?

The tool has 5 parameters and no output schema. The description explains the computation and mentions the dual-regime comparison, implying the output likely includes both results. However, it does not specify the exact return format or how the as_of_date parameter affects the computation. Given the complexity and lack of output schema, more detail would improve completeness.

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 parameters are documented in the schema. The description adds context about Chapter VI-A deductions (mapping to 80C/80D) and the dual-regime nature, but it does not add syntax or format details beyond what the schema provides. The baseline of 3 is appropriate when the schema carries the parameter documentation.

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 clearly states the tool computes Indian personal income tax under specific acts and performs a dual-regime comparison. It is specific about the verb and resource, but it does not explicitly differentiate from the sibling 'indian_income_tax' or 'tax_in_new'. The title 'old regime' conflicts with the dual-regime description, but the description itself is unambiguous.

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 provides no guidance on when to use this tool versus alternatives like 'tax_in_new' or 'indian_income_tax'. It does not state conditions or exclusions, leaving the agent to infer usage from the description alone.

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

tax_in_newIndia income tax (new regime)A
Read-onlyIdempotent
Inspect

Compute Indian Personal Income Tax under Section 115BAC New Concessional Regime with standard deduction and Section 87A rebate.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateYesStatutory as-of date (YYYY-MM-DD).
is_salariedNoWhether individual is a salaried employee (eligible for standard deduction).
gross_incomeYesGross annual income from all sources in INR (₹).

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, so the safety profile is covered. The description adds meaningful behavioral context by specifying the statutory regime and the included deductions/rebate, which tells the agent what the computation will incorporate.

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 a single sentence that front-loads the core action and resource, then adds the key statutory details. Every part earns its place, with no filler or redundant restatement of the tool name.

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

Completeness4/5

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

For a computation tool with no output schema, the description gives enough context to invoke it correctly: the regime, the included deductions, and the input scope are clear. It does not explicitly describe the return value or mention exclusions like surcharge/cess, but the schema and annotations cover most operational needs.

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. The description mentions standard deduction and Section 87A rebate, which loosely relates to is_salaried and gross_income, but it does not add parameter-level detail beyond what the schema provides.

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

Purpose5/5

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

The description uses a specific verb ('Compute') and names the exact resource: Indian Personal Income Tax under Section 115BAC New Concessional Regime. It also identifies the key calculation components (standard deduction and Section 87A rebate), which clearly distinguishes it from generic tax siblings like indian_income_tax or tax_in.

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 phrase 'New Concessional Regime' and 'Section 115BAC' imply this tool is for the new regime, but the description does not explicitly state when to use it versus sibling tools like indian_income_tax or tax_in. There is clear context but no explicit exclusions or alternative routing.

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.

TDQS

A3.8/5.0
Behavior4/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 safety profile is covered. The definition adds meaningful behavioral context beyond this: the nature parameter discloses that there is no default 'because a default would choose a section on the caller's behalf,' as_of_date selects 'the rule pack in force on that date,' and buyer_pan_status discloses that missing/invalid PAN returns INSUFFICIENT rather than an understated number. No contradiction exists between the read-only annotations and the pure-calculation behavior.

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-load the core purpose ('Calculate statutory TCS under Section 206C') before the scope detail, with no filler or redundancy that fails to earn its place. Given the 16-value enum and multi-section statutory complexity, the word count is efficient and well ordered, though the double mention of 206C is slightly repetitive.

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 high-complexity tool — 16 nature enums, date-dependent rate packs, and a refusal edge case — the definition covers statutory scope, both required parameters, and the buyer_pan_status edge behavior. With no output schema present, the one meaningful gap is that the return format is never described, so an agent cannot predict whether the result is a single number or a structured breakdown.

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 already carries the load. The parameter descriptions are unusually rich — amount is pinned to INR with a pattern, nature explains section-selection and no-default semantics, as_of_date explains rule-pack selection, and buyer_pan_status discloses the refusal behavior. The main description adds value beyond the schema by mapping the enum space back to statutory context (the ₹50 lakh threshold, the 206CC higher-rate mention), justifying a score above baseline.

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

Purpose4/5

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

The description opens with a specific verb ('Calculate') and a precise resource: statutory Tax Collected at Source under Section 206C of the Income-tax Act, 1961, and it pins the applicable period (AY 2025-26 / FY 2024-25). It further enumerates the exact coverage scope (goods above ₹50 lakh, scrap, timber, liquor, minerals, LRS, overseas tours), which sharply distinguishes it from a generic tax calculator. It stops short of a 5 because it never explicitly names the closest confusable sibling (tds), so differentiation relies on statutory terminology rather than an explicit exclusion.

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 covered-category list and the 206C/206CC statutory citations strongly imply when the tool applies, and the nature parameter's 'State it exactly; it is not inferred' gives the agent a clear invocation instruction. However, there is no explicit when/when-not statement, no named alternative (e.g., routing TDS matters to the tds tool), and no exclusion scenarios, so an agent must infer routing from statutory context rather than explicit 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.

TDQS

A3.9/5.0
Behavior4/5

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

The description goes beyond the annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) by disclosing specific behavioral traits: it supports higher deduction rates under Section 206AA for missing PAN and evaluates precedence between 194Q and 206C(1H). These are concrete behaviors that an agent needs to know. It does not contradict any annotation, and the added detail enriches the safety and scope profile beyond what the structured hints convey.

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 a single, information-dense sentence that front-loads the core purpose ('Calculate statutory TDS') and then efficiently lists the supported sections and specific behaviors. Every phrase earns its place; there is no filler. The structure allows an agent to quickly grasp scope without wading through redundant detail.

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 tool with 7 required parameters and no output schema, the description covers the statutory scope and key behaviors but omits the return format (e.g., whether it returns a rate or an amount) and does not explicitly mention edge-case refusals (e.g., non-resident payments) that are documented only in the schema. Given the complex statutory context and the absence of an output schema, the description is adequate but not fully complete—it leaves an agent to infer the call's outcome.

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 input schema already covers all parameters with detailed descriptions at 100% coverage, so the baseline is 3. The description adds only marginal parameter-related meaning: it mentions sections that map to payment_type (e.g., 194C for contract) and the PAN-related sections (206AA) that tie to pan_available, but it does not elaborate on parameter syntax or interactions beyond what the schema already states. It does not meaningfully compensate for any gap, but none exists.

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 ('Calculate') and a precise resource ('statutory Tax Deducted at Source (TDS) under the Indian Income-tax Act, 1961'), then enumerates the exact statutory sections supported (194C, 194J, 194Q, 194H, 194I, 206AA, 206C(1H)). This unambiguously identifies the tool's function and distinguishes it from other tax tools in the sibling list (e.g., tcs, advance_tax, gst_composition).

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 clearly implies usage for TDS calculations by naming the supported sections, but it does not explicitly state when to use this tool versus alternatives like tcs, advance_tax, or indian_income_tax. There is no mention of exclusions (e.g., 'for TCS use tcs') or conditions that would route an agent to a sibling. The guidance is implicit rather than explicit, so it meets a baseline but not the bar for clear differentiation.

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).

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 the safety profile is known. The description adds value by spelling out deterministic behavior, zero external side effects, the exact formulas for both modes, and the rounding to 2 decimals. It does not contradict annotations, though it could further clarify what 'statutory rate verification' means in practice.

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-organized into purpose, behavior, and usage sections without repetition. It is slightly verbose with the formula details, but every sentence serves a functional role (modes, formulas, output, usage boundaries). It could be trimmed, but it remains efficient and front-loaded with the main purpose.

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

Completeness4/5

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

For a tool with 4 parameters and no output schema, the description explains the expected return values (net, tax, gross rounded to 2 decimals), the modes, and the input date requirement. It omits error handling or edge cases, but for a deterministic calculator with schema coverage, it is adequately complete to guide 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 description coverage is 100% and each parameter already has a clear description (mode enum semantics, amount meaning per mode, date pattern, rate bounds). The description reinforces the meaning of amount and mode via formulas but does not add genuinely new parameter-level semantics beyond the schema. 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 clearly states a specific verb+resource ('Calculate European Value Added Tax and global sales taxes') and elaborates with two modes (add/remove) and rate verification. It distinguishes the tool from tax siblings by specifying European VAT and global sales tax scope, and even names tip_splitter as the tool to use for tipping scenarios, making differentiation explicit.

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?

Explicit use cases are listed ('e-commerce, international invoicing, retail pricing, and VAT compliance calculations') and a clear exclusion is given ('Do not use for restaurant tipping and bill splits') with a named alternative ('use tip_splitter instead'). This is exactly the when-to-use and when-not-to-use guidance the rubric rewards.

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. 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"
        +]
  2. 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
  3. 17 tool updates
    • Changedai_token_arbitrage2 fields changed
      • removedInput schema / properties / completion_tokens / default
        Removed value: -1000
      • removedInput schema / properties / prompt_tokens / default
        Removed value: -5000
    • Changedbillable_floor1 field changed
      • removedInput schema / properties / targetNetCash / default
        Removed value: -120000
    • Changedbreakeven_margin3 fields changed
      • removedInput schema / properties / fixedCosts / default
        Removed value: -10000
      • removedInput schema / properties / unitPrice / default
        Removed value: -50
      • removedInput schema / properties / unitVariableCost / default
        Removed value: -20
    • Changedcagr_inflation3 fields changed
      • removedInput schema / properties / finalValue / default
        Removed value: -100000
      • removedInput schema / properties / initialValue / default
        Removed value: -50000
      • removedInput schema / properties / periodsYears / default
        Removed value: -5
    • Changedcompound_wealth2 fields changed
      • removedInput schema / properties / annualRatePercent / default
        Removed value: -8
      • removedInput schema / properties / tenureYears / default
        Removed value: -15
    • Changedcontractor_parity1 field changed
      • removedInput schema / properties / contractorHourlyRate / default
        Removed value: -85
    • Changedfd2 fields changed
      • addedInput schema / properties / compounding_convention
        Added value: +{
        +  "description": "Read-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.",
        +  "enum": [
        +    "quarterly_compounding"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / compounding_frequency
        Removed value: -{
        -  "default": "quarterly",
        -  "description": "Interest compounding frequency.",
        -  "enum": [
        -    "quarterly",
        -    "monthly",
        -    "half_yearly",
        -    "annual",
        -    "simple"
        -  ],
        -  "type": "string"
        -}
    • Changedfx_invoicing1 field changed
      • removedInput schema / properties / invoiceUsd / default
        Removed value: -10000
    • Removedgst_regular
    • Changednpv_irr1 field changed
      • removedInput schema / properties / initialInvestment / default
        Removed value: -100000
    • Changedppf1 field changed
      • removedInput schema / properties / yearly_deposit / default
        Removed value: -150000
    • Changedscorp_optimizer1 field changed
      • removedInput schema / properties / netProfit / default
        Removed value: -150000
    • Changedsolo_401k_shield4 fields changed
      • removedInput schema / properties / entityType / default
        Removed value: -"llc"
      • changedInput schema / properties / entityType / description
        Previous value: -"Legal entity tax structure: 'llc' (sole proprietorship / single-member LLC using 20% adjusted SE earnings) or 'scorp' (corporation using 25% W-2 wage)."New value: +"Tax 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."
      • changedInput schema / properties / entityType / enum
        Previous value: -[
        -  "llc",
        -  "scorp"
        -]New value: +[
        +  "sole_prop",
        +  "scorp"
        +]
      • removedInput schema / properties / netEarnings / default
        Removed value: -120000
    • Changedsukanya1 field changed
      • removedInput schema / properties / yearly_deposit / default
        Removed value: -150000
    • Changedtcs9 fields changed
      • removedInput schema / properties / buyer_pan_status / default
        Removed value: -"valid"
      • changedInput schema / properties / buyer_pan_status / description
        Previous value: -"PAN status of the buyer. Missing PAN invokes Section 206CC (higher of 5% or twice statutory rate)."New value: +"Whether 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."
      • changedInput schema / properties / buyer_pan_status / enum
        Previous value: -[
        -  "valid",
        -  "missing"
        -]New value: +[
        +  "valid",
        +  "missing_or_invalid"
        +]
      • addedInput schema / properties / is_interstate
        Added value: +{
        +  "default": false,
        +  "description": "True for interstate supply (IGST), false for intrastate supply (CGST + SGST).",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / is_reverse_charge
        Added value: +{
        +  "default": false,
        +  "description": "Whether transaction is subject to Reverse Charge Mechanism (RCM).",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / nature / default
        Removed value: -"goods_sale_206c1h"
      • changedInput schema / properties / nature / description
        Previous value: -"Statutory classification of transaction under Section 206C."New value: +"Statutory 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."
      • changedInput schema / properties / nature / enum
        Previous value: -[
        -  "goods_sale_206c1h",
        -  "scrap_sale",
        -  "timber",
        -  "minerals",
        -  "parking_toll",
        -  "lrs_education",
        -  "lrs_medical",
        -  "lrs_other",
        -  "overseas_tour",
        -  "motor_vehicle"
        -]New value: +[
        +  "sale_of_goods_tcs",
        +  "scrap_tcs",
        +  "timber_forest_lease_tcs",
        +  "timber_other_tcs",
        +  "forest_produce_other_tcs",
        +  "tendu_leaves_tcs",
        +  "minerals_tcs",
        +  "mining_quarrying_tcs",
        +  "alcoholic_liquor_tcs",
        +  "parking_lot_tcs",
        +  "toll_plaza_tcs",
        +  "motor_vehicle_tcs",
        +  "lrs_education_loan",
        +  "lrs_education_medical",
        +  "lrs_other",
        +  "lrs_overseas_tour"
        +]
      • addedInput schema / properties / rate
        Added value: +{
        +  "default": 18,
        +  "description": "Statutory GST percentage slab.",
        +  "enum": [
        +    0,
        +    5,
        +    12,
        +    18,
        +    28
        +  ],
        +  "type": "number"
        +}
    • Changedtds12 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Civil date YYYY-MM-DD. Selects the statutory rate pack in force on that date. Required: the engine will not assume a date.",
        +  "type": "string"
        +}
      • addedInput schema / properties / pan_available
        Added value: +{
        +  "description": "Whether the payee has furnished a valid PAN. false triggers the s.206AA higher rate of 20%.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / pan_status
        Removed value: -{
        -  "default": "valid",
        -  "description": "Status of payee PAN. 'missing_or_invalid' triggers Section 206AA higher withholding rate (20%).",
        -  "enum": [
        -    "valid",
        -    "missing_or_invalid"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / payee_type / default
        Removed value: -"individual"
      • changedInput schema / properties / payee_type / description
        Previous value: -"Legal entity classification of the payee."New value: +"Payee 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."
      • changedInput schema / properties / payee_type / enum
        Previous value: -[
        -  "individual",
        -  "company"
        -]New value: +[
        +  "individual_or_huf",
        +  "domestic_company"
        +]
      • removedInput schema / properties / payment_type / default
        Removed value: -"contract"
      • changedInput schema / properties / payment_type / description
        Previous value: -"Statutory nature of payment under the Income-tax Act."New value: +"Statutory 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."
      • changedInput schema / properties / payment_type / enum
        Previous value: -[
        -  "contract",
        -  "technical_professional",
        -  "goods_purchase",
        -  "commission_brokerage",
        -  "rent_land_building",
        -  "rent_plant_machinery"
        -]New value: +[
        +  "contract",
        +  "professional_services",
        +  "technical_services",
        +  "purchase_of_goods",
        +  "royalty",
        +  "director_fees",
        +  "non_compete_fees",
        +  "call_centre"
        +]
      • addedInput schema / properties / resident
        Added value: +{
        +  "description": "Whether 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.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / resident_status
        Removed value: -{
        -  "default": "resident",
        -  "description": "Residential status of the payee under Section 6.",
        -  "enum": [
        -    "resident",
        -    "non_resident"
        -  ],
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "amount"
        -]New value: +[
        +  "amount",
        +  "as_of_date",
        +  "payment_type",
        +  "payee_type",
        +  "resident"
        +]
    • Changedvat_sales_tax1 field changed
      • removedInput schema / properties / vatRatePercent / default
        Removed value: -20
  4. 2 tool updates
    • Changedtax_in2 fields changed
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "Statutory as-of date in ISO YYYY-MM-DD format.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "gross_income"
        -]New value: +[
        +  "gross_income",
        +  "as_of_date"
        +]
    • Addedtax_in_new
  5. 2 tool updates
    • Addedcontext_sanitizer_get_dsi
    • Addedcontext_sanitizer_verify_scope
  6. 22 tool updates
    • Addedadvance_tax
    • Removedbeam_bending
    • Removedblack_scholes
    • Removedcasio_991_solve
    • Addedcompute
    • Addedfd
    • Addedgold
    • Addedgst_composition
    • Addedgst_regular
    • Removedlinear_regression
    • Addedpack_status
    • Removedpipe_flow
    • Addedppf
    • Removedprogrammer_calculator
    • Removedprojectile_motion
    • Removedrlc_circuit
    • Removedrocket_deltav
    • Addedsukanya
    • Addedtax_in
    • Addedtcs
    • Addedtds
    • Removedtip_splitter
  7. 3 tool updates
    • Changedai_token_arbitrage15 fields changed
      • addedInput schema / properties / asOfDate
        Added value: +{
        +  "description": "CamelCase alias for as_of_date.",
        +  "type": "string"
        +}
      • addedInput schema / properties / as_of_date
        Added value: +{
        +  "description": "ISO 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.",
        +  "type": "string"
        +}
      • removedInput schema / properties / cacheHitRatio / default
        Removed value: -0.8
      • changedInput schema / properties / cacheHitRatio / description
        Previous value: -"Proportion of input prompt tokens served from cache (0.0 to 1.0 or 0 to 100%). Default is 0.80 (80%)."New value: +"CamelCase alias for cache_hit_ratio."
      • addedInput schema / properties / cache_hit_ratio
        Added value: +{
        +  "default": 0.8,
        +  "description": "Proportion of input prompt tokens served from cache (0.0 to 1.0 or 0% to 100%). Default is 0.80 (80%). Alias: cacheHitRatio.",
        +  "type": "number"
        +}
      • removedInput schema / properties / completionTokens / default
        Removed value: -1000
      • changedInput schema / properties / completionTokens / description
        Previous value: -"Number of generated output completion tokens per API call. Must be an integer >= 0."New value: +"CamelCase alias for completion_tokens."
      • addedInput schema / properties / completion_tokens
        Added value: +{
        +  "default": 1000,
        +  "description": "Number of generated output completion tokens per API call. Must be a non-negative integer. Alias: completionTokens.",
        +  "type": "number"
        +}
      • removedInput schema / properties / isBatch / default
        Removed value: -false
      • changedInput schema / properties / isBatch / description
        Previous value: -"Whether the 50% asynchronous batch processing discount applies."New value: +"CamelCase alias for is_batch."
      • addedInput schema / properties / is_batch
        Added value: +{
        +  "default": false,
        +  "description": "Whether asynchronous batch processing discount (50%) applies. Alias: isBatch.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / promptTokens / default
        Removed value: -5000
      • changedInput schema / properties / promptTokens / description
        Previous value: -"Number of input prompt tokens per API call. Must be an integer >= 0."New value: +"CamelCase alias for prompt_tokens."
      • addedInput schema / properties / prompt_tokens
        Added value: +{
        +  "default": 5000,
        +  "description": "Number of input prompt tokens per API call. Must be a non-negative integer. Alias: promptTokens.",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "prompt_tokens",
        +  "completion_tokens"
        +]
    • Changedbeam_bending9 fields changed
      • addedInput schema / properties / distanceFromNeutralAxisMm / default
        Added value: +50
      • changedInput schema / properties / distanceFromNeutralAxisMm / description
        Previous value: -"Perpendicular distance y from the neutral axis to the outermost extreme fiber in millimeters (mm). Must be positive."New value: +"Perpendicular distance y from the neutral axis to the outermost extreme fiber in millimeters (mm). Must be positive. (Alias: distance_from_neutral_axis_mm)."
      • changedInput schema / properties / elasticModulusGpa / description
        Previous value: -"Material Young's Modulus of Elasticity E in Gigapascals (GPa) (e.g. 200 for structural steel, 69 for aluminum)."New value: +"Material Young's Modulus of Elasticity E in Gigapascals (GPa) (e.g. 200 for structural steel, 69 for aluminum). (Alias: elastic_modulus_gpa)."
      • changedInput schema / properties / lengthMeters / description
        Previous value: -"Unsupported beam span length L between supports in meters (m). Must be positive."New value: +"Unsupported beam span length L between supports in meters (m). Must be positive. (Alias: length_meters)."
      • changedInput schema / properties / loadNewtons / description
        Previous value: -"Concentrated point load P applied at the beam center in Newtons (N). Must be positive."New value: +"Applied load P in Newtons (N) (point load or total uniform load W = w*L). Must be positive. (Alias: load_newtons)."
      • addedInput schema / properties / momentOfInertiaCm4 / default
        Added value: +800
      • changedInput schema / properties / momentOfInertiaCm4 / description
        Previous value: -"Cross-sectional second moment of area (area moment of inertia) I in cm^4 (e.g. 8640 for W8x31 I-beam). Must be positive."New value: +"Cross-sectional second moment of area (area moment of inertia) I in cm^4 (e.g. 800 for standard steel channel, 8640 for W8x31 I-beam). Must be positive. (Alias: moment_of_inertia_cm4)."
      • addedInput schema / properties / supportType
        Added value: +{
        +  "default": "SIMPLY_SUPPORTED_CENTER_POINT",
        +  "description": "Structural boundary support configuration: 'SIMPLY_SUPPORTED_CENTER_POINT' (default midspan point load), 'CANTILEVER_END_POINT' (fixed at one end, free point load at tip), or 'SIMPLY_SUPPORTED_UNIFORMLY_DISTRIBUTED' (simply supported with total load W uniformly distributed). (Alias: support_type).",
        +  "enum": [
        +    "SIMPLY_SUPPORTED_CENTER_POINT",
        +    "CANTILEVER_END_POINT",
        +    "SIMPLY_SUPPORTED_UNIFORMLY_DISTRIBUTED"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "loadNewtons",
        -  "lengthMeters",
        -  "momentOfInertiaCm4",
        -  "distanceFromNeutralAxisMm"
        -]New value: +[
        +  "loadNewtons",
        +  "lengthMeters"
        +]
    • Changedblack_scholes8 fields changed
      • addedInput schema / properties / dividendYieldPercent
        Added value: +{
        +  "default": 0,
        +  "description": "Continuous annual dividend yield q in percentage (e.g. 3 for 3%) or decimal fraction. Must be non-negative. (Aliases: dividend_yield_percent, dividend_yield, dividendYield, q).",
        +  "type": "number"
        +}
      • removedInput schema / properties / riskFreeRate
        Removed value: -{
        -  "default": 0.045,
        -  "description": "Annualized risk-free interest rate r expressed as decimal (0.045) or percentage (4.5).",
        -  "type": "number"
        -}
      • addedInput schema / properties / riskFreeRatePercent
        Added value: +{
        +  "default": 4.5,
        +  "description": "Annual continuously compounded risk-free interest rate r in percentage (e.g. 4.5 for 4.5%, 10 for 10%) or decimal fraction. (Aliases: risk_free_rate_percent, riskFreeRate, risk_free_rate).",
        +  "type": "number"
        +}
      • changedInput schema / properties / spotPrice / description
        Previous value: -"Current market spot price of the underlying asset S in currency units. Must be positive."New value: +"Current market spot price of the underlying asset S in currency units. Must be strictly positive. (Aliases: spot_price, stockPrice, stock_price, S)."
      • changedInput schema / properties / strikePrice / description
        Previous value: -"Agreed option strike exercise price K in currency units. Must be positive."New value: +"Option strike exercise price K in currency units. Must be strictly positive. (Aliases: strike_price, strike, K)."
      • changedInput schema / properties / timeToExpiryYears / description
        Previous value: -"Time remaining until contract expiration T in years (e.g. 0.5 for 6 months, 1 for 1 year). Must be positive."New value: +"Time remaining until contract expiration T in years (e.g. 0.5 for 6 months, 1 for 1 year). Must be strictly positive. (Aliases: time_to_expiry_years, expiryYears, T)."
      • removedInput schema / properties / volatility
        Removed value: -{
        -  "default": 0.25,
        -  "description": "Annualized implied volatility sigma expressed as decimal (0.25) or percentage (25). Must be positive.",
        -  "type": "number"
        -}
      • addedInput schema / properties / volatilityPercent
        Added value: +{
        +  "default": 20,
        +  "description": "Annualized implied volatility sigma in percentage (e.g. 20 for 20%, 25 for 25%) or decimal fraction. Must be strictly positive. (Aliases: volatility_percent, volatility, vol).",
        +  "type": "number"
        +}
  8. 1 tool update
    • Addedprogrammer_calculator
  9. 1 tool update
    • Addedland_units
  10. 28 tool updates
    • Changedai_token_arbitrage4 fields changed
      • changedInput schema / properties / cacheHitRatio / description
        Previous value: -"Prompt cache hit ratio (0.0 to 1.0 or 0 to 100%)"New value: +"Proportion of input prompt tokens served from cache (0.0 to 1.0 or 0 to 100%). Default is 0.80 (80%)."
      • changedInput schema / properties / completionTokens / description
        Previous value: -"Output completion token count per API request"New value: +"Number of generated output completion tokens per API call. Must be an integer >= 0."
      • changedInput schema / properties / isBatch / description
        Previous value: -"Whether asynchronous batch API 50% discount applies"New value: +"Whether the 50% asynchronous batch processing discount applies."
      • changedInput schema / properties / promptTokens / description
        Previous value: -"Input prompt token count per API request"New value: +"Number of input prompt tokens per API call. Must be an integer >= 0."
    • Changedb2b_withholding_risk4 fields changed
      • changedInput schema / properties / daysInCountry / description
        Previous value: -"Cumulative physical presence days in client country over 12 months"New value: +"Cumulative physical days spent in client jurisdiction over a rolling 12-month period. Values over 183 trigger Permanent Establishment audit risk."
      • changedInput schema / properties / invoiceNetRequired / description
        Previous value: -"Net spendable cash payout required by exporter ($)"New value: +"Net spendable cash amount required to be landed in exporter account in USD ($). Must be positive."
      • changedInput schema / properties / statutoryRatePercent / description
        Previous value: -"Source country statutory withholding tax % (default 30%)"New value: +"Foreign client country statutory withholding tax rate percentage (e.g. 30 for 30%). Default is 30.0."
      • changedInput schema / properties / treatyRatePercent / description
        Previous value: -"Bilateral tax treaty reduced WHT rate % (e.g. 15% or 0%)"New value: +"Reduced withholding tax rate percentage under applicable bilateral Double Tax Avoidance Agreement (DTAA) (e.g. 0, 10, 15%)."
    • Changedbeam_bending5 fields changed
      • changedInput schema / properties / distanceFromNeutralAxisMm / description
        Previous value: -"Distance y to extreme fiber in mm"New value: +"Perpendicular distance y from the neutral axis to the outermost extreme fiber in millimeters (mm). Must be positive."
      • changedInput schema / properties / elasticModulusGpa / description
        Previous value: -"Young's Modulus E in GPa (e.g. 200 for structural steel)"New value: +"Material Young's Modulus of Elasticity E in Gigapascals (GPa) (e.g. 200 for structural steel, 69 for aluminum)."
      • changedInput schema / properties / lengthMeters / description
        Previous value: -"Beam span L in meters (m)"New value: +"Unsupported beam span length L between supports in meters (m). Must be positive."
      • changedInput schema / properties / loadNewtons / description
        Previous value: -"Point load P in Newtons (N)"New value: +"Concentrated point load P applied at the beam center in Newtons (N). Must be positive."
      • changedInput schema / properties / momentOfInertiaCm4 / description
        Previous value: -"Area moment of inertia I in cm^4"New value: +"Cross-sectional second moment of area (area moment of inertia) I in cm^4 (e.g. 8640 for W8x31 I-beam). Must be positive."
    • Changedbillable_floor6 fields changed
      • changedInput schema / properties / annualExpenses / description
        Previous value: -"Annual business operating expenses ($/yr)"New value: +"Annual tax-deductible business operating expenses in USD ($/yr) (software, office, hardware, insurance)."
      • addedInput schema / properties / filingStatus / description
        Added value: +"IRS income tax filing status: 'single' for unmarried individual or 'mfj' for married filing jointly."
      • changedInput schema / properties / healthInsuranceAnnual / description
        Previous value: -"Annual out-of-pocket health insurance premium ($/yr)"New value: +"Annual out-of-pocket health insurance premium in USD ($/yr) paid directly by the freelancer."
      • changedInput schema / properties / nonBillablePercent / description
        Previous value: -"Percentage of working hours lost to admin, sales, and invoicing %"New value: +"Percentage of total working hours lost to non-billable business activities like admin, sales, and invoicing (e.g. 28 for 28%)."
      • changedInput schema / properties / targetNetCash / description
        Previous value: -"Target annual net spendable cash take-home ($/yr)"New value: +"Desired annual net spendable cash take-home after all taxes and business expenses in USD ($/yr). Must be positive."
      • changedInput schema / properties / vacationWeeks / description
        Previous value: -"Planned vacation weeks off per year"New value: +"Number of unpaid vacation, holiday, and sick weeks off planned per year (e.g. 4 for 4 weeks)."
    • Changedblack_scholes5 fields changed
      • changedInput schema / properties / riskFreeRate / description
        Previous value: -"Risk-free interest rate r (decimal or %)"New value: +"Annualized risk-free interest rate r expressed as decimal (0.045) or percentage (4.5)."
      • changedInput schema / properties / spotPrice / description
        Previous value: -"Underlying stock/asset spot price S"New value: +"Current market spot price of the underlying asset S in currency units. Must be positive."
      • changedInput schema / properties / strikePrice / description
        Previous value: -"Strike price K"New value: +"Agreed option strike exercise price K in currency units. Must be positive."
      • changedInput schema / properties / timeToExpiryYears / description
        Previous value: -"Time to expiration T in years"New value: +"Time remaining until contract expiration T in years (e.g. 0.5 for 6 months, 1 for 1 year). Must be positive."
      • changedInput schema / properties / volatility / description
        Previous value: -"Annualized implied volatility sigma (decimal or %)"New value: +"Annualized implied volatility sigma expressed as decimal (0.25) or percentage (25). Must be positive."
    • Changedbreakeven_margin4 fields changed
      • changedInput schema / properties / expectedUnitsSold / description
        Previous value: -"Projected unit sales volume for margin of safety analysis"New value: +"Projected sales volume in units to evaluate operational margin of safety and operating leverage."
      • changedInput schema / properties / fixedCosts / description
        Previous value: -"Total fixed periodic operating costs ($)"New value: +"Total periodic fixed operating overhead costs in currency units (rent, salaries, software). Must be positive."
      • changedInput schema / properties / unitPrice / description
        Previous value: -"Selling price per unit ($)"New value: +"Selling price per individual product or service unit in currency units. Must be greater than unitVariableCost."
      • changedInput schema / properties / unitVariableCost / description
        Previous value: -"Variable cost incurred per unit ($)"New value: +"Direct variable cost incurred per unit produced or delivered in currency units. Must be non-negative."
    • Changedcagr_inflation4 fields changed
      • changedInput schema / properties / finalValue / description
        Previous value: -"Ending portfolio / asset valuation ($)"New value: +"Ending portfolio, asset, or revenue valuation in currency units. Must be positive."
      • changedInput schema / properties / inflationRatePercent / description
        Previous value: -"Annualized expected inflation rate %"New value: +"Annualized inflation rate percentage over the period (e.g. 2.5 for 2.5%)."
      • changedInput schema / properties / initialValue / description
        Previous value: -"Beginning portfolio / asset valuation ($)"New value: +"Beginning portfolio, asset, or revenue valuation in currency units. Must be positive."
      • changedInput schema / properties / periodsYears / description
        Previous value: -"Duration in years"New value: +"Total elapsed duration in years (can be fractional, e.g. 2.5 or 5). Must be greater than 0."
    • Changedcasio_991_solve7 fields changed
      • addedInput schema / properties / a / description
        Added value: +"First coefficient: quadratic coefficient a (for a*x^2, must be non-zero) or first linear equation x-coefficient a1."
      • addedInput schema / properties / a2 / description
        Added value: +"Second linear equation x-coefficient a2 (required when type is 'simultaneous2', a2*x + b2*y = c2)."
      • addedInput schema / properties / b / description
        Added value: +"Second coefficient: linear coefficient b (for b*x) or first linear equation y-coefficient b1."
      • addedInput schema / properties / b2 / description
        Added value: +"Second linear equation y-coefficient b2 (required when type is 'simultaneous2', a2*x + b2*y = c2)."
      • addedInput schema / properties / c / description
        Added value: +"Constant term: constant c (for + c = 0) or first linear equation constant c1 (a1*x + b1*y = c1)."
      • addedInput schema / properties / c2 / description
        Added value: +"Second linear equation constant term c2 (required when type is 'simultaneous2', a2*x + b2*y = c2)."
      • addedInput schema / properties / type / description
        Added value: +"Equation solver mode: 'quadratic' (solve single quadratic equation a*x^2 + b*x + c = 0) or 'simultaneous2' (solve system of 2 linear equations with 2 unknowns)."
    • Changedcloud_egress_finops2 fields changed
      • changedInput schema / properties / cacheHitRatio / description
        Previous value: -"Projected CDN edge cache hit ratio (0.0 to 1.0 or 0 to 100%)"New value: +"Expected CDN edge caching hit ratio as a decimal (0.0 to 1.0) or percentage (0 to 100%). Default is 0.85 (85%)."
      • changedInput schema / properties / monthlyEgressGB / description
        Previous value: -"Monthly internet outbound data transfer in GB (e.g. 50,000 for 50TB)"New value: +"Monthly public internet outbound data transfer volume in Gigabytes (GB) (e.g. 50000 for 50 TB). Must be positive."
    • Changedcompound_wealth5 fields changed
      • changedInput schema / properties / annualRatePercent / description
        Previous value: -"Expected annual return in %"New value: +"Expected annualized investment return rate percentage (e.g. 8 for 8%). Must be positive."
      • changedInput schema / properties / compoundFrequency / description
        Previous value: -"Compounding frequency per year (12 = monthly)"New value: +"Number of compounding periods per year (1 for annual, 4 for quarterly, 12 for monthly)."
      • changedInput schema / properties / monthlyDeposit / description
        Previous value: -"Monthly recurring contribution"New value: +"Recurring monthly contribution added to the account. Must be non-negative."
      • changedInput schema / properties / principal / description
        Previous value: -"Initial principal deposit"New value: +"Initial lump-sum deposit or starting balance in currency units. Must be non-negative."
      • changedInput schema / properties / tenureYears / description
        Previous value: -"Duration in years"New value: +"Investment horizon in years (e.g. 10, 20, 30). Must be an integer >= 1."
    • Changedcontractor_parity13 fields changed
      • changedInput schema / properties / annualExpenses / description
        Previous value: -"1099 deductible business expenses ($/yr)"New value: +"Annual tax-deductible business operating expenses in USD ($/yr) (software, hardware, insurance)."
      • changedInput schema / properties / contractorHourlyRate / description
        Previous value: -"1099 contractor hourly billing rate in USD ($/hr)"New value: +"1099 contractor hourly billing rate in USD ($/hr). Must be a positive number."
      • changedInput schema / properties / eligibleQBI / description
        Previous value: -"Eligible for Section 199A 20% QBI deduction"New value: +"Whether the 1099 contractor business qualifies for the Section 199A 20% Qualified Business Income deduction."
      • changedInput schema / properties / filingStatus / description
        Previous value: -"Tax filing status"New value: +"IRS income tax filing status: 'single' for unmarried individual or 'mfj' for married filing jointly."
      • changedInput schema / properties / healthSubsidyAnnual / description
        Previous value: -"Annual W-2 employer health insurance subsidy ($/yr)"New value: +"Annual W-2 employer-paid health insurance subsidy in USD ($/yr)."
      • changedInput schema / properties / hoursPerWeek / description
        Previous value: -"1099 billable hours per week"New value: +"Expected billable client hours per week as a 1099 contractor. Must be greater than 0."
      • changedInput schema / properties / match401kPercent / description
        Previous value: -"W-2 employer 401(k) match %"New value: +"W-2 employer 401(k) retirement match as a percentage of gross salary (e.g. 4.0 for 4%)."
      • changedInput schema / properties / ptoDays / description
        Previous value: -"W-2 paid time off days"New value: +"Annual W-2 paid time off days (combined vacation and sick leave)."
      • addedInput schema / properties / selectedRail / description
        Added value: +"Payment rail provider for international contractor payout: 'wise', 'deel', 'payoneer', 'stripe', 'paypal', or 'wire'."
      • changedInput schema / properties / stateTaxRatePercent / description
        Previous value: -"State income tax rate %"New value: +"Effective or statutory state income tax rate in percent (e.g. 5.0 for 5%). Set to 0 for states without income tax."
      • changedInput schema / properties / targetCurrency / description
        Previous value: -"Target currency for international cross-border FX drag"New value: +"Target fiat currency code for international cross-border conversion drag (e.g. EUR, GBP, CAD)."
      • changedInput schema / properties / w2Salary / description
        Previous value: -"W-2 gross annual salary in USD ($/yr)"New value: +"W-2 gross annual salary in USD ($/yr). Must be a positive number."
      • changedInput schema / properties / weeksPerYear / description
        Previous value: -"1099 billable weeks per year"New value: +"Active billable working weeks per year as a 1099 contractor (52 minus unpaid vacation and bench time)."
    • Changedfeie_nomad_tracker5 fields changed
      • changedInput schema / properties / daysOutsideUSInRollingPeriod / description
        Previous value: -"Full 24-hour days outside the US in rolling 365-day window"New value: +"Number of full 24-hour qualifying foreign days spent outside the US within any rolling 365-day period. Must be >= 330 to qualify."
      • changedInput schema / properties / effectiveTaxBracketPercent / description
        Previous value: -"Estimated federal marginal tax rate %"New value: +"Estimated federal marginal tax rate percentage applied to income exceeding the statutory cap (e.g. 24 for 24%)."
      • changedInput schema / properties / foreignEarnedIncome / description
        Previous value: -"Annual foreign earned compensation in USD ($)"New value: +"Total annual compensation earned while working outside the US in USD ($). Must be positive."
      • changedInput schema / properties / stateDomicile / description
        Previous value: -"State of former/current US domicile (e.g. CA, NY, TX, FL)"New value: +"Two-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."
      • changedInput schema / properties / taxYear / description
        Previous value: -"Applicable tax year (2024, 2025, or 2026)"New value: +"Applicable US federal tax filing year (2024, 2025, or 2026)."
    • Changedfx_invoicing2 fields changed
      • changedInput schema / properties / invoiceUsd / description
        Previous value: -"Gross invoice amount in USD ($)"New value: +"Gross billed invoice amount in USD ($). Must be a positive number greater than 0."
      • changedInput schema / properties / targetCurrency / description
        Previous value: -"Target local payout currency code"New value: +"Payout 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)."
    • Changedhome_loan_emi3 fields changed
      • changedInput schema / properties / interestRatePercent / description
        Previous value: -"Annual interest rate %"New value: +"Annual interest rate percentage (e.g. 8.5 for 8.5%). Must be positive."
      • changedInput schema / properties / principal / description
        Previous value: -"Loan amount"New value: +"Total borrowed principal loan amount in currency units. Must be a positive number."
      • changedInput schema / properties / tenureYears / description
        Previous value: -"Loan term in years"New value: +"Total loan repayment duration in years (e.g. 15, 20, 30). Must be an integer >= 1."
    • Changedindian_income_tax2 fields changed
      • changedInput schema / properties / ctc / description
        Previous value: -"Annual Cost-to-Company / Gross Salary in INR (₹)"New value: +"Annual Cost-to-Company (CTC) / Gross taxable salary in Indian Rupees (INR ₹). Must be a positive number."
      • changedInput schema / properties / isSalaried / description
        Previous value: -"Whether taxpayer is salaried (eligible for ₹75k standard deduction)"New value: +"Whether the taxpayer is a salaried employee (eligible for statutory ₹75,000 standard deduction under the New Regime)."
    • Changedlinear_regression3 fields changed
      • changedInput schema / properties / points / description
        Previous value: -"Array of {x, y} coordinate pairs (minimum 2 points)"New value: +"Array of {x, y} coordinate objects representing bivariate observations. Minimum 2 points required."
      • addedInput schema / properties / points / items / properties / x / description
        Added value: +"Independent variable X coordinate value."
      • addedInput schema / properties / points / items / properties / y / description
        Added value: +"Dependent variable Y coordinate value."
    • Changedmortgage_piti8 fields changed
      • changedInput schema / properties / annualHomeInsurance / description
        Previous value: -"Annual hazard insurance premium"New value: +"Annual hazard/homeowners insurance premium in currency units (e.g. 1400)."
      • changedInput schema / properties / annualPmiPercent / description
        Previous value: -"Annual PMI % if down payment < 20%"New value: +"Annual Private Mortgage Insurance premium percentage (e.g. 0.75 for 0.75% of original loan amount)."
      • changedInput schema / properties / downPaymentPercent / description
        Previous value: -"Down payment percentage (e.g. 20 for 20%)"New value: +"Down payment as a percentage of purchase price (e.g. 20 for 20%). Values below 20 automatically trigger PMI calculations."
      • changedInput schema / properties / homePrice / description
        Previous value: -"Purchase price of the home in currency units (e.g. 450000)"New value: +"Total purchase price or appraised property value in currency units (e.g. 450000). Must be positive."
      • changedInput schema / properties / interestRate / description
        Previous value: -"Annual interest rate in % (e.g. 6.8)"New value: +"Annual mortgage interest rate percentage (e.g. 6.8 for 6.8%). Must be positive."
      • changedInput schema / properties / loanTermYears / description
        Previous value: -"Loan duration in years (standard US alias for tenureYears)"New value: +"Standard US alias for tenureYears (loan term in years)."
      • changedInput schema / properties / propertyTaxRatePercent / description
        Previous value: -"Annual property tax rate %"New value: +"Annual local property tax rate as a percentage of home value (e.g. 1.2 for 1.2%)."
      • changedInput schema / properties / tenureYears / description
        Previous value: -"Loan duration in years (e.g. 15, 20, 30)"New value: +"Loan duration in years (typically 15, 20, or 30)."
    • Changednpv_irr4 fields changed
      • changedInput schema / properties / cashflows / description
        Previous value: -"Series of sequential cash inflows ($)"New value: +"Series of sequential periodic net cash inflows starting from period 1 onwards. Minimum 1 cash flow required."
      • addedInput schema / properties / cashflows / items / description
        Added value: +"Net cash inflow amount for this sequential period in currency units."
      • changedInput schema / properties / discountRatePercent / description
        Previous value: -"Annual hurdle / discount rate %"New value: +"Annual cost of capital or hurdle discount rate percentage (e.g. 10.0 for 10%)."
      • changedInput schema / properties / initialInvestment / description
        Previous value: -"Initial capital outlay / outflow at period 0 ($)"New value: +"Upfront initial capital outlay at period 0 in currency units. Entered as a positive number (treated as cash outflow). Must be positive."
    • Changedpipe_flow6 fields changed
      • changedInput schema / properties / dynamicViscosityPaS / description
        Previous value: -"Dynamic viscosity (Pa·s)"New value: +"Dynamic fluid viscosity mu in Pascal-seconds (Pa·s) (e.g. 0.001 for water)."
      • changedInput schema / properties / flowRateM3s / description
        Previous value: -"Volumetric flow rate Q in m^3/s"New value: +"Volumetric fluid flow rate Q in cubic meters per second (m^3/s). Must be positive."
      • changedInput schema / properties / fluidDensityKgM3 / description
        Previous value: -"Fluid density (kg/m^3)"New value: +"Fluid mass density rho in kg/m^3 (e.g. 1000 for water at 20°C)."
      • changedInput schema / properties / pipeDiameterM / description
        Previous value: -"Internal pipe diameter D in meters"New value: +"Internal pipe diameter D in meters (m). Must be positive."
      • changedInput schema / properties / pipeLengthM / description
        Previous value: -"Total pipe run length L in meters"New value: +"Total linear pipe run length L in meters (m). Must be positive."
      • changedInput schema / properties / pipeRoughnessM / description
        Previous value: -"Absolute pipe surface roughness (m)"New value: +"Absolute internal pipe wall surface roughness epsilon in meters (e.g. 0.000045 for commercial steel)."
    • Changedprojectile_motion3 fields changed
      • changedInput schema / properties / gravityMs2 / description
        Previous value: -"Gravitational acceleration in m/s^2"New value: +"Local gravitational acceleration constant g in m/s^2. Default is 9.80665 (standard Earth gravity)."
      • changedInput schema / properties / initialVelocityMs / description
        Previous value: -"Initial launch velocity v0 in m/s"New value: +"Initial launch velocity magnitude v0 in meters per second (m/s). Must be positive."
      • changedInput schema / properties / launchAngleDegrees / description
        Previous value: -"Launch angle in degrees (0 to 90)"New value: +"Launch elevation angle theta relative to the horizontal plane in degrees (0 to 90 inclusive)."
    • Changedrlc_circuit4 fields changed
      • changedInput schema / properties / capacitanceFarads / description
        Previous value: -"Capacitance C in Farads (F)"New value: +"Circuit capacitance C in Farads (F). Must be positive."
      • changedInput schema / properties / frequencyHz / description
        Previous value: -"Operating frequency f in Hz (optional)"New value: +"Optional operating AC frequency f in Hertz (Hz) to evaluate AC impedance magnitude and phase angle."
      • changedInput schema / properties / inductanceHenrys / description
        Previous value: -"Inductance L in Henrys (H)"New value: +"Circuit inductance L in Henrys (H). Must be positive."
      • changedInput schema / properties / resistanceOhms / description
        Previous value: -"Resistance R in Ohms (Ω)"New value: +"Circuit series electrical resistance R in Ohms (Ω). Must be positive."
    • Changedrocket_deltav4 fields changed
      • changedInput schema / properties / finalMassKg / description
        Previous value: -"Dry burnout mass mf in kg"New value: +"Dry burnout mass mf after propellant exhaustion in kilograms (kg). Must be positive."
      • changedInput schema / properties / gravityMs2 / description
        Previous value: -"Standard gravity g0 in m/s^2"New value: +"Standard gravitational acceleration constant g0 in m/s^2. Default is 9.80665."
      • changedInput schema / properties / initialMassKg / description
        Previous value: -"Wet launch mass m0 in kg"New value: +"Wet launch mass m0 including propellant, structure, and payload in kilograms (kg). Must be greater than finalMassKg."
      • changedInput schema / properties / specificImpulseSeconds / description
        Previous value: -"Engine specific impulse Isp in seconds"New value: +"Rocket engine effective specific impulse Isp in seconds (e.g. 311 for Merlin 1D sea level, 450 for RL10 vacuum). Must be positive."
    • Changedscorp_optimizer5 fields changed
      • changedInput schema / properties / cpaAnnualFee / description
        Previous value: -"Annual CPA corporate Form 1120-S filing fee ($/yr)"New value: +"Annual CPA accounting fee for corporate Form 1120-S preparation and filing in USD ($/yr)."
      • changedInput schema / properties / netProfit / description
        Previous value: -"Annual net business profit in USD ($/yr)"New value: +"Annual net business profit before owner compensation in USD ($/yr). Must be a positive number."
      • changedInput schema / properties / payrollAnnualFee / description
        Previous value: -"Annual payroll provider fee ($/yr)"New value: +"Annual software and compliance fee for running compliant W-2 payroll in USD ($/yr) (e.g. Gusto, Rippling)."
      • changedInput schema / properties / salaryPercent / description
        Previous value: -"Reasonable salary percentage % (e.g. 50, 55, 60)"New value: +"Officer W-2 reasonable compensation percentage of net profit (e.g. 50, 55, 60%). Must comply with IRS Rev. Rul. 74-44 industry benchmarks."
      • changedInput schema / properties / stateAnnualFee / description
        Previous value: -"Annual state franchise tax / report fee ($/yr)"New value: +"Annual state franchise tax or corporate filing fee in USD ($/yr) (e.g. $800 in CA, $200 in DE)."
    • Changedsip_investment4 fields changed
      • changedInput schema / properties / annualReturnRate / description
        Previous value: -"Expected annual return rate in %"New value: +"Expected annualized return rate percentage (e.g. 12 for 12% equity CAGR)."
      • changedInput schema / properties / monthlyInvestment / description
        Previous value: -"Monthly SIP amount"New value: +"Initial monthly investment installment amount in currency units (e.g. 5000). Must be positive."
      • changedInput schema / properties / stepUpPercent / description
        Previous value: -"Annual step-up percentage (e.g. 10 for 10% annual increase)"New value: +"Annual percentage increase in monthly contribution (e.g. 10 for 10% annual hike)."
      • changedInput schema / properties / tenureYears / description
        Previous value: -"Investment duration in years"New value: +"Total investment duration in years (e.g. 5, 10, 20). Must be an integer >= 1."
    • Changedsolo_401k_shield4 fields changed
      • changedInput schema / properties / entityType / description
        Previous value: -"Entity structure: 'llc' or 'scorp'"New value: +"Legal entity tax structure: 'llc' (sole proprietorship / single-member LLC using 20% adjusted SE earnings) or 'scorp' (corporation using 25% W-2 wage)."
      • changedInput schema / properties / isAge50Plus / description
        Previous value: -"Eligible for $7,500 age 50+ catch-up"New value: +"Whether the account holder is age 50 or older, unlocking the statutory $7,500 catch-up contribution."
      • changedInput schema / properties / marginalTaxRatePercent / description
        Previous value: -"Combined federal and state marginal tax bracket %"New value: +"Combined federal and state marginal income tax bracket percentage (e.g. 28 for 28%)."
      • changedInput schema / properties / netEarnings / description
        Previous value: -"Annual net business profit or W-2 salary ($/yr)"New value: +"Annual net business profit (Schedule C) or W-2 officer salary (S-Corp) in USD ($/yr). Must be a positive number."
    • Changedstartup_runway_dilution8 fields changed
      • changedInput schema / properties / cashOnHand / description
        Previous value: -"Current cash in bank in USD ($)"New value: +"Current cash reserves in bank in USD ($). Must be positive."
      • changedInput schema / properties / monthlyGrossBurn / description
        Previous value: -"Monthly operating cash outflows ($/mo)"New value: +"Total monthly cash operating expenses in USD ($/mo). Must be positive."
      • changedInput schema / properties / monthlyRevenue / description
        Previous value: -"Monthly recurring revenue MRR ($/mo)"New value: +"Monthly recurring revenue (MRR) or cash collections in USD ($/mo). Default is 15000."
      • changedInput schema / properties / optionPoolExpansionPercent / description
        Previous value: -"Required unallocated post-close option pool %"New value: +"Required post-closing unallocated employee stock option pool percentage (e.g. 10 for 10%)."
      • changedInput schema / properties / postMoneyCap / description
        Previous value: -"Post-money valuation cap ($)"New value: +"Agreed valuation cap on the Post-Money SAFEs in USD ($)."
      • changedInput schema / properties / safeInvestment / description
        Previous value: -"Post-money SAFE investment amount ($)"New value: +"Total capital raised via Post-Money SAFE notes in USD ($)."
      • changedInput schema / properties / seriesAInvestment / description
        Previous value: -"Series A new lead investment amount ($)"New value: +"New equity capital invested by Series A lead investors in USD ($)."
      • changedInput schema / properties / seriesAPreMoney / description
        Previous value: -"Series A pre-money agreed valuation ($)"New value: +"Agreed Series A pre-money company valuation in USD ($)."
    • Changedtip_splitter3 fields changed
      • changedInput schema / properties / billAmount / description
        Previous value: -"Subtotal or total bill before tip"New value: +"Pre-tip subtotal or total food and beverage bill in monetary units. Must be positive."
      • changedInput schema / properties / numPeople / description
        Previous value: -"Number of guests dining"New value: +"Total number of guests sharing the bill. Must be an integer greater than or equal to 1."
      • changedInput schema / properties / tipPercent / description
        Previous value: -"Tip percentage (e.g. 15, 18, 20, 25)"New value: +"Gratuity percentage to add (e.g. 15, 18, 20, 25%)."
    • Changedvat_sales_tax3 fields changed
      • changedInput schema / properties / amount / description
        Previous value: -"Monetary amount"New value: +"Base monetary amount to calculate tax on (net amount in 'add' mode, gross price in 'remove' mode). Must be positive."
      • changedInput schema / properties / mode / description
        Previous value: -"'add' to add VAT to net price, 'remove' to extract VAT from gross"New value: +"Calculation mode: 'add' to append tax to net amount, or 'remove' to extract embedded tax from gross amount."
      • changedInput schema / properties / vatRatePercent / description
        Previous value: -"Tax rate in % (e.g. 20 for UK/France, 19 for Germany)"New value: +"Tax rate in percent (e.g. 20 for UK/France, 19 for Germany, 21 for Spain, 8.25 for US state/local)."
  11. 3 tool updates
    • Addedbreakeven_margin
    • Addedcagr_inflation
    • Addednpv_irr
  12. 25 tool updates
    • First observedai_token_arbitrage
    • First observedb2b_withholding_risk
    • First observedbeam_bending
    • First observedbillable_floor
    • First observedblack_scholes
    • First observedcasio_991_solve
    • First observedcloud_egress_finops
    • First observedcompound_wealth
    • First observedcontractor_parity
    • First observedfeie_nomad_tracker
    • First observedfx_invoicing
    • First observedhome_loan_emi
    • First observedindian_income_tax
    • First observedlinear_regression
    • First observedmortgage_piti
    • First observedpipe_flow
    • First observedprojectile_motion
    • First observedrlc_circuit
    • First observedrocket_deltav
    • First observedscorp_optimizer
    • First observedsip_investment
    • First observedsolo_401k_shield
    • First observedstartup_runway_dilution
    • First observedtip_splitter
    • First observedvat_sales_tax

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    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
    73 npm
    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
    426 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).
    3
    407
    AGPL 3.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    A public, no-auth remote MCP server that exposes Arc & Ledger's free tax calculators and intake funnel as tools inside AI assistants. Provides tools for IRS notice explanation, FBAR/FATCA, LLC vs S-Corp comparison, quarterly tax estimates, and more.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources