TrueCalci
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
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 35 tools
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.
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.
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.
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 toolsadvance_taxIndia advance tax instalmentsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| assessed_tax | Yes | Estimated total annual net tax liability after TDS/TCS credits in INR (₹). Advance tax mandatory if >= ₹10,000. |
TDQS
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.
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.
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.
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.
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.
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 arbitrageARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| isBatch | No | CamelCase alias for is_batch. | |
| asOfDate | No | CamelCase alias for as_of_date. | |
| is_batch | No | Whether asynchronous batch processing discount (50%) applies. Alias: isBatch. | |
| as_of_date | Yes | 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. | |
| promptTokens | No | CamelCase alias for prompt_tokens. | |
| cacheHitRatio | No | CamelCase alias for cache_hit_ratio. | |
| prompt_tokens | Yes | Number of input prompt tokens per API call. Must be a non-negative integer. Alias: promptTokens. | |
| cache_hit_ratio | No | Proportion of input prompt tokens served from cache (0.0 to 1.0 or 0% to 100%). Default is 0.80 (80%). Alias: cacheHitRatio. | |
| completionTokens | No | CamelCase alias for completion_tokens. | |
| completion_tokens | Yes | Number of generated output completion tokens per API call. Must be a non-negative integer. Alias: completionTokens. |
TDQS
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.
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.
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.
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.
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.
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 riskARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| daysInCountry | No | Cumulative physical days spent in client jurisdiction over a rolling 12-month period. Values over 183 trigger Permanent Establishment audit risk. | |
| treatyRatePercent | No | Reduced withholding tax rate percentage under applicable bilateral Double Tax Avoidance Agreement (DTAA) (e.g. 0, 10, 15%). | |
| invoiceNetRequired | No | Net spendable cash amount required to be landed in exporter account in USD ($). Must be positive. | |
| statutoryRatePercent | No | Foreign client country statutory withholding tax rate percentage (e.g. 30 for 30%). Default is 30.0. |
TDQS
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.
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.
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.
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.
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.
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 floorARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| filingStatus | No | IRS income tax filing status: 'single' for unmarried individual or 'mfj' for married filing jointly. | single |
| targetNetCash | Yes | Desired annual net spendable cash take-home after all taxes and business expenses in USD ($/yr). Must be positive. | |
| vacationWeeks | No | Number of unpaid vacation, holiday, and sick weeks off planned per year (e.g. 4 for 4 weeks). | |
| annualExpenses | No | Annual tax-deductible business operating expenses in USD ($/yr) (software, office, hardware, insurance). | |
| nonBillablePercent | No | Percentage of total working hours lost to non-billable business activities like admin, sales, and invoicing (e.g. 28 for 28%). | |
| healthInsuranceAnnual | No | Annual out-of-pocket health insurance premium in USD ($/yr) paid directly by the freelancer. |
TDQS
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.
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.
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.
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.
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.
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 marginARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| unitPrice | Yes | Selling price per individual product or service unit in currency units. Must be greater than unitVariableCost. | |
| fixedCosts | Yes | Total periodic fixed operating overhead costs in currency units (rent, salaries, software). Must be positive. | |
| unitVariableCost | Yes | Direct variable cost incurred per unit produced or delivered in currency units. Must be non-negative. | |
| expectedUnitsSold | No | Projected sales volume in units to evaluate operational margin of safety and operating leverage. |
TDQS
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.
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.
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.
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.
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.
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 adjustmentARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | HISTORICAL_CAGR: growth from initialValue to finalValue. PROJECTION: grow initialValue at expected_annual_return_rate. | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| finalValue | Yes | Ending value (HISTORICAL_CAGR), as a string with exactly 2 decimal places. | |
| initialValue | Yes | Starting value, as a string with exactly 2 decimal places. | |
| periodsYears | Yes | Period in years, from 0.0833 (1 month) to 50. | |
| inflationRatePercent | No | Annualized inflation rate percentage over the period (e.g. 2.5 for 2.5%). | |
| expected_annual_return_rate | No | Expected annual return in percent, as a decimal string. Required for PROJECTION mode. |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Civil date YYYY-MM-DD selecting the monthly egress price pack. Required; only months with a published pack are answered (otherwise a structured refusal). | |
| cacheHitRatio | No | Expected CDN edge caching hit ratio as a decimal (0.0 to 1.0) or percentage (0 to 100%). Default is 0.85 (85%). | |
| monthlyEgressGB | No | Monthly public internet outbound data transfer volume in Gigabytes (GB) (e.g. 50000 for 50 TB). Must be positive. |
TDQS
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.
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.
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.
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.
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.
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 growthARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| principal | No | Initial lump-sum deposit or starting balance in currency units. Must be non-negative. | |
| tenureYears | Yes | Investment horizon in years (e.g. 10, 20, 30). Must be an integer >= 1. | |
| monthlyDeposit | No | Recurring monthly contribution added to the account. Must be non-negative. | |
| annualRatePercent | Yes | Expected annualized investment return rate percentage (e.g. 8 for 8%). Must be positive. | |
| compoundFrequency | No | Number of compounding periods per year (1 for annual, 4 for quarterly, 12 for monthly). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds 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.
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.
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.
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.
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.
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)ARead-onlyIdempotentInspect
Universal calculation entrypoint across all 30 TrueCalci engines. Dispatches execution to the specified engine with validated inputs, returning exact deterministic results.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | Yes | The engine to run, by tool name (e.g. tds, fd, gst_composition). | |
| inputs | Yes | The engine's own inputs, exactly as its tool schema defines them. |
TDQS
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.
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.
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.
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.
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.
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 indexARead-onlyIdempotentInspect
ContextSanitizer Drift Score Index (DSI) inspector. Returns repository health score (0.0 to 100.0), active contradiction list, and cryptographic Merkle proof receipt.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Optional in-memory file map to compute immediate DSI score. | |
| repoId | No | Repository identifier (e.g. 'truecalci-official/truecalci'). |
TDQS
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.
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.
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.
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.
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.
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 scopeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Map of relative file paths to content strings (e.g. { 'server.ts': '...', 'docs/api.md': '...' }). |
TDQS
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.
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.
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.
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.
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.
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 parityARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ptoDays | No | Annual W-2 paid time off days (combined vacation and sick leave). | |
| w2Salary | Yes | W-2 gross annual salary in USD ($/yr). Must be a positive number. | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| eligibleQBI | Yes | Whether the contractor income qualifies for the Section 199A qualified business income deduction. Required: it changes federal tax and is not assumed. | |
| filingStatus | No | IRS income tax filing status: 'single' for unmarried individual or 'mfj' for married filing jointly. | single |
| hoursPerWeek | No | Expected billable client hours per week as a 1099 contractor. Must be greater than 0. | |
| weeksPerYear | No | Active billable working weeks per year as a 1099 contractor (52 minus unpaid vacation and bench time). | |
| annualExpenses | No | Annual tax-deductible business operating expenses in USD ($/yr) (software, hardware, insurance). | |
| match401kPercent | No | W-2 employer 401(k) retirement match as a percentage of gross salary (e.g. 4.0 for 4%). | |
| healthSubsidyAnnual | No | Annual W-2 employer-paid health insurance subsidy in USD ($/yr). | |
| stateTaxRatePercent | No | Effective or statutory state income tax rate in percent (e.g. 5.0 for 5%). Set to 0 for states without income tax. | |
| contractorHourlyRate | Yes | 1099 contractor hourly billing rate in USD ($/hr). Must be a positive number. |
TDQS
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.
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.
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.
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.
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.
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 maturityARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| principal | Yes | Deposit amount in INR. At least 1,000 (statutory minimum FD principal, RBI Master Direction 2016). | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| interest_rate | Yes | Annual interest rate in percent, as a decimal string (e.g. 7.00). | |
| tenure_months | Yes | Deposit tenure in months (3 to 120, as the fixed deposit rule pack allows). | |
| compounding_convention | No | 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. |
TDQS
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.
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.
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.
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.
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.
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 trackerARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| filingStatus | No | IRS filing status: 'single' or 'mfj' (married filing jointly). | |
| stateDomicile | No | 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. | CA |
| foreignEarnedIncome | No | Foreign earned income for the tax year, in USD. | |
| qualifyingDaysInTaxYear | No | 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. | |
| daysOutsideUSInRollingPeriod | No | 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. |
TDQS
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.
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.
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.
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.
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.
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 conversionARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| invoiceUsd | Yes | Gross billed invoice amount in USD ($). Must be a positive number greater than 0. | |
| targetCurrency | No | 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). | EUR |
TDQS
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.
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.
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.
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.
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.
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 valuationARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| purity_karat | Yes | Purity in Karats (24K pure, 22K standard jewellery 916, 18K 750, 14K 585). Required - the engine never assumes a hallmark. | |
| weight_grams | Yes | Weight of gold in grams. | |
| rate_per_gram_24k | Yes | Current market price of 24K gold per gram in INR (₹), as a string with exactly 2 decimal places (money is never a float). | |
| making_charges_percent | No | Making charges as percentage of pure metal value. |
TDQS
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.
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.
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.
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.
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.
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 schemeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Composition scheme business category. | trader |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| quarter_turnover | Yes | Quarterly aggregate turnover in INR (₹). | |
| preceding_fy_turnover | Yes | Aggregate turnover of the preceding financial year in INR, as a string with exactly 2 decimal places. Required to check the Section 10 threshold. |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Supply value in INR (the taxable value in exclusive mode, the tax-inclusive total in inclusive mode). | |
| is_rcm | No | Tax payable by the recipient under reverse charge (Section 9(3)/9(4)). | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| supply_type | No | Intra-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_percent | No | Compensation cess in percent, where applicable. | 0 |
| itc_eligible | No | Whether the recipient may claim input tax credit (false for a Section 17(5) blocked credit). | |
| rate_percent | Yes | GST rate in percent. Must be a rate notified in the rule pack in force on as_of_date. | |
| supplier_state | No | Supplier's state: 2-digit GST state code or state name. | |
| place_of_supply | No | Place of supply: 2-digit GST state code or state name. | |
| calculation_mode | No | 'exclusive' adds GST to amount; 'inclusive' extracts GST from amount. | exclusive |
TDQS
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.
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.
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.
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.
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.
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 EMIARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| principal | Yes | Total borrowed principal loan amount in currency units. Must be a positive number. | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| tenureYears | No | Total loan repayment duration in years (e.g. 15, 20, 30). Must be an integer >= 1. | |
| interestRatePercent | Yes | Annual interest rate in percent, as a decimal string (e.g. 8.50). |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ctc | Yes | Annual Cost-to-Company (CTC) / Gross taxable salary in Indian Rupees (INR ₹). Must be a positive number. | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| isSalaried | No | Whether the taxpayer is a salaried employee (eligible for statutory ₹75,000 standard deduction under the New Regime). |
TDQS
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.
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.
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.
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.
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.
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 conversionARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes | Area to convert, in from_unit. Must be greater than 0. | |
| state | No | Indian 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_unit | No | Unit to convert into. | |
| from_unit | Yes | Unit of area. Regional units (bigha, biswa, katha ...) need state. | |
| as_of_date | Yes | Statutory rule reference date (YYYY-MM-DD). |
TDQS
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.
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.
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.
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.
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.
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 PITIARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| homePrice | Yes | Total purchase price or appraised property value in currency units (e.g. 450000). Must be positive. | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| interestRate | Yes | Annual interest rate in percent, as a decimal string (e.g. 6.75). | |
| loanTermYears | No | Standard US alias for tenureYears (loan term in years). | |
| annualPmiPercent | No | Annual Private Mortgage Insurance premium percentage (e.g. 0.75 for 0.75% of original loan amount). | |
| downPaymentPercent | No | Down payment as a percentage of purchase price (e.g. 20 for 20%). Values below 20 automatically trigger PMI calculations. | |
| annualHomeInsurance | No | Annual hazard/homeowners insurance premium in currency units (e.g. 1400). | |
| propertyTaxRatePercent | No | Annual local property tax rate as a percentage of home value (e.g. 1.2 for 1.2%). |
TDQS
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.
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.
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.
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.
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.
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 IRRARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cashflows | Yes | Series of sequential periodic net cash inflows starting from period 1 onwards. Minimum 1 cash flow required. | |
| initialInvestment | Yes | Upfront initial capital outlay at period 0 in currency units. Entered as a positive number (treated as cash outflow). Must be positive. | |
| discountRatePercent | No | Annual cost of capital or hurdle discount rate percentage (e.g. 10.0 for 10%). |
TDQS
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.
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.
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.
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.
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.
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 statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| engineId | No | Optional engine ID (e.g. 'tds', 'tcs', 'gst_regular', 'advance_tax', 'vat_sales_tax', 'tax_in') to query specific statutory pack metadata. |
TDQS
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.
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.
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.
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.
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.
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 FundARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| tenure_years | No | PPF tenure in years (initial 15 years, extendable in 5-year blocks). | |
| yearly_deposit | Yes | Annual deposit amount in INR (₹500 to ₹1,50,000). |
TDQS
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.
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.
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.
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.
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.
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 optimizerARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| netProfit | Yes | Annual net business profit before owner compensation in USD ($/yr). Must be a positive number. | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| cpaAnnualFee | No | Annual CPA accounting fee for corporate Form 1120-S preparation and filing in USD ($/yr). | |
| salaryPercent | No | Officer W-2 reasonable compensation percentage of net profit (e.g. 50, 55, 60%). Must comply with IRS Rev. Rul. 74-44 industry benchmarks. | |
| stateAnnualFee | No | Annual state franchise tax or corporate filing fee in USD ($/yr) (e.g. $800 in CA, $200 in DE). | |
| payrollAnnualFee | No | Annual software and compliance fee for running compliant W-2 payroll in USD ($/yr) (e.g. Gusto, Rippling). |
TDQS
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.
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.
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.
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.
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.
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 returnsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| tenureYears | No | Total investment duration in years (e.g. 5, 10, 20). Must be an integer >= 1. | |
| stepUpPercent | No | Annual percentage increase in monthly contribution (e.g. 10 for 10% annual hike). | |
| annualReturnRate | No | Expected annualized return rate percentage (e.g. 12 for 12% equity CAGR). | |
| monthlyInvestment | Yes | Monthly SIP amount in INR as a string with exactly 2 decimal places. |
TDQS
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.
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.
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.
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.
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.
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) contributionARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| entityType | No | 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. | |
| isAge50Plus | No | Whether the account holder is age 50 or older, unlocking the statutory $7,500 catch-up contribution. | |
| netEarnings | Yes | Annual net business profit (Schedule C) or W-2 officer salary (S-Corp) in USD ($/yr). Must be a positive number. | |
| participant_age | Yes | Participant age in years. Required: it decides catch-up eligibility (IRC s.414(v), SECURE 2.0 s.109). | |
| marginalTaxRatePercent | No | Combined federal and state marginal income tax bracket percentage (e.g. 28 for 28%). |
TDQS
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.
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.
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.
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.
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.
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 dilutionARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| cashOnHand | No | Current cash reserves in bank in USD ($). Must be positive. | |
| postMoneyCap | No | Agreed valuation cap on the Post-Money SAFEs in USD ($). | |
| monthlyRevenue | No | Monthly recurring revenue (MRR) or cash collections in USD ($/mo). Default is 15000. | |
| safeInvestment | No | Total capital raised via Post-Money SAFE notes in USD ($). | |
| seriesAPreMoney | No | Agreed Series A pre-money company valuation in USD ($). | |
| monthlyGrossBurn | No | Total monthly cash operating expenses in USD ($/mo). Must be positive. | |
| seriesAInvestment | No | New equity capital invested by Series A lead investors in USD ($). | |
| optionPoolExpansionPercent | No | Required post-closing unallocated employee stock option pool percentage (e.g. 10 for 10%). |
TDQS
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.
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.
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.
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.
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.
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 YojanaARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| girl_age | No | Current age of the girl child (must be under 10 years at account opening). | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| yearly_deposit | Yes | Annual deposit in INR (₹250 to ₹1,50,000, payable for 15 years). |
TDQS
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.
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.
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.
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.
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.
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)BRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| regime | No | Tax regime to compute: 'both' (dual comparison), 'new', or 'old'. | both |
| as_of_date | Yes | Statutory as-of date in ISO YYYY-MM-DD format. | |
| gross_income | Yes | Gross annual income from all sources in INR (₹). | |
| deductions_80c | No | Chapter VI-A Section 80C deductions (capped at ₹1,50,000 for Old Regime). | |
| deductions_80d | No | Section 80D health insurance premium deduction for Old Regime. |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyIdempotentInspect
Compute Indian Personal Income Tax under Section 115BAC New Concessional Regime with standard deduction and Section 87A rebate.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of_date | Yes | Statutory as-of date (YYYY-MM-DD). | |
| is_salaried | No | Whether individual is a salaried employee (eligible for standard deduction). | |
| gross_income | Yes | Gross annual income from all sources in INR (₹). |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Sale consideration / receipt amount in INR (₹). | |
| nature | No | 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. | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| buyer_pan_status | No | 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. |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Transaction payment or credit amount in INR (₹). | |
| resident | Yes | 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. | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the statutory rate pack in force on that date. Required: the engine will not assume a date. | |
| payee_type | Yes | 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. | |
| payment_type | Yes | 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. | |
| pan_available | Yes | Whether the payee has furnished a PAN. Required: without a PAN, Section 206AA applies the higher rate, so it is never assumed. | |
| pan_operative | Yes | 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. |
TDQS
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.
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.
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.
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.
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.
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 taxARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Calculation mode: 'add' to append tax to net amount, or 'remove' to extract embedded tax from gross amount. | add |
| amount | Yes | Base monetary amount to calculate tax on (net amount in 'add' mode, gross price in 'remove' mode). Must be positive. | |
| as_of_date | Yes | Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date. | |
| vatRatePercent | Yes | VAT or sales tax rate in percent (0-100). |
TDQS
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.
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.
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.
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.
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.
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.
24 tool updates
- Changed
advance_tax2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "assessed_tax" -]New value: +[ + "assessed_tax", + "as_of_date" +]
- Changed
ai_token_arbitrage1 field changed- changed
Input schema / requiredPrevious value: -[ - "prompt_tokens", - "completion_tokens" -]New value: +[ + "prompt_tokens", + "completion_tokens", + "as_of_date" +]
- Changed
billable_floor2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "targetNetCash" -]New value: +[ + "targetNetCash", + "as_of_date" +]
- Changed
cagr_inflation2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "initialValue", - "finalValue", - "periodsYears", - "mode" -]New value: +[ + "initialValue", + "finalValue", + "periodsYears", + "as_of_date" +]
- Changed
cloud_egress_finops1 field changed- added
Input schema / requiredAdded value: +[ + "as_of_date" +]
- Changed
contractor_parity6 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - removed
Input schema / properties / eligibleQBI / defaultRemoved value: -true - changed
Input schema / properties / eligibleQBI / descriptionPrevious 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." - removed
Input schema / properties / selectedRailRemoved 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" -} - removed
Input schema / properties / targetCurrencyRemoved value: -{ - "default": "EUR", - "description": "Target fiat currency code for international cross-border conversion drag (e.g. EUR, GBP, CAD).", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "w2Salary", - "contractorHourlyRate" -]New value: +[ + "w2Salary", + "contractorHourlyRate", + "eligibleQBI", + "as_of_date" +]
- Changed
fd6 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / properties / tenure_months / descriptionPrevious value: -"Deposit tenure in months."New value: +"Deposit tenure in months (3 to 120, as the fixed deposit rule pack allows)." - added
Input schema / properties / tenure_months / exampleAdded value: +12 - added
Input schema / properties / tenure_months / maximumAdded value: +120 - added
Input schema / properties / tenure_months / minimumAdded value: +3 - changed
Input schema / requiredPrevious value: -[ - "principal", - "interest_rate", - "tenure_months" -]New value: +[ + "principal", + "interest_rate", + "tenure_months", + "as_of_date" +]
- Changed
feie_nomad_tracker2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - added
Input schema / requiredAdded value: +[ + "as_of_date" +]
- Changed
fx_invoicing2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "invoiceUsd" -]New value: +[ + "invoiceUsd", + "as_of_date" +]
- Changed
gold2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "weight_grams", - "rate_per_gram_24k", - "purity_karat" -]New value: +[ + "weight_grams", + "rate_per_gram_24k", + "purity_karat", + "as_of_date" +]
- Changed
gst_composition2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "quarter_turnover", - "preceding_fy_turnover" -]New value: +[ + "quarter_turnover", + "preceding_fy_turnover", + "as_of_date" +]
- Added
gst_regular - Changed
home_loan_emi2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "principal", - "interestRatePercent" -]New value: +[ + "principal", + "interestRatePercent", + "as_of_date" +]
- Changed
indian_income_tax2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "ctc" -]New value: +[ + "ctc", + "as_of_date" +]
- Changed
land_units1 field changed- changed
Input schema / requiredPrevious value: -[ - "area", - "from_unit" -]New value: +[ + "area", + "from_unit", + "as_of_date" +]
- Changed
mortgage_piti3 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - removed
Input schema / properties / tenureYearsRemoved value: -{ - "default": 30, - "description": "Loan duration in years (typically 15, 20, or 30).", - "type": "integer" -} - changed
Input schema / requiredPrevious value: -[ - "homePrice", - "interestRate" -]New value: +[ + "homePrice", + "interestRate", + "as_of_date" +]
- Changed
ppf2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "yearly_deposit" -]New value: +[ + "yearly_deposit", + "as_of_date" +]
- Changed
scorp_optimizer2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "netProfit" -]New value: +[ + "netProfit", + "as_of_date" +]
- Changed
sip_investment2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "monthlyInvestment" -]New value: +[ + "monthlyInvestment", + "as_of_date" +]
- Changed
solo_401k_shield2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "netEarnings", - "participant_age" -]New value: +[ + "netEarnings", + "participant_age", + "as_of_date" +]
- Changed
startup_runway_dilution2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - added
Input schema / requiredAdded value: +[ + "as_of_date" +]
- Changed
sukanya2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "yearly_deposit" -]New value: +[ + "yearly_deposit", + "as_of_date" +]
- Changed
tcs5 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - removed
Input schema / properties / is_interstateRemoved value: -{ - "default": false, - "description": "True for interstate supply (IGST), false for intrastate supply (CGST + SGST).", - "type": "boolean" -} - removed
Input schema / properties / is_reverse_chargeRemoved value: -{ - "default": false, - "description": "Whether transaction is subject to Reverse Charge Mechanism (RCM).", - "type": "boolean" -} - removed
Input schema / properties / rateRemoved value: -{ - "default": 18, - "description": "Statutory GST percentage slab.", - "enum": [ - 0, - 5, - 12, - 18, - 28 - ], - "type": "number" -} - changed
Input schema / requiredPrevious value: -[ - "amount" -]New value: +[ + "amount", + "as_of_date" +]
- Changed
vat_sales_tax2 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "amount", - "vatRatePercent" -]New value: +[ + "amount", + "vatRatePercent", + "as_of_date" +]
16 tool updates
- Changed
advance_tax3 fields changed- added
Input schema / properties / assessed_tax / exampleAdded value: +"150000.00" - added
Input schema / properties / assessed_tax / patternAdded value: +"^\\d+\\.\\d{2}$" - changed
Input schema / properties / assessed_tax / typePrevious value: -"number"New value: +"string"
- Changed
cagr_inflation15 fields changed- added
Input schema / properties / expected_annual_return_rateAdded value: +{ + "description": "Expected annual return in percent, as a decimal string. Required for PROJECTION mode.", + "example": "12.00", + "pattern": "^\\d+(\\.\\d+)?$", + "type": "string" +} - changed
Input schema / properties / finalValue / descriptionPrevious 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." - added
Input schema / properties / finalValue / exampleAdded value: +"250000.00" - added
Input schema / properties / finalValue / patternAdded value: +"^\\d+\\.\\d{2}$" - changed
Input schema / properties / finalValue / typePrevious value: -"number"New value: +"string" - changed
Input schema / properties / initialValue / descriptionPrevious 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." - added
Input schema / properties / initialValue / exampleAdded value: +"100000.00" - added
Input schema / properties / initialValue / patternAdded value: +"^\\d+\\.\\d{2}$" - changed
Input schema / properties / initialValue / typePrevious value: -"number"New value: +"string" - added
Input schema / properties / modeAdded value: +{ + "description": "HISTORICAL_CAGR: growth from initialValue to finalValue. PROJECTION: grow initialValue at expected_annual_return_rate.", + "enum": [ + "HISTORICAL_CAGR", + "PROJECTION" + ], + "type": "string" +} - changed
Input schema / properties / periodsYears / descriptionPrevious 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." - added
Input schema / properties / periodsYears / exampleAdded value: +10 - added
Input schema / properties / periodsYears / maximumAdded value: +50 - added
Input schema / properties / periodsYears / minimumAdded value: +0.0833 - changed
Input schema / requiredPrevious value: -[ - "initialValue", - "finalValue", - "periodsYears" -]New value: +[ + "initialValue", + "finalValue", + "periodsYears", + "mode" +]
- Changed
cloud_egress_finops1 field changed- added
Input schema / properties / as_of_dateAdded 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" +}
- Changed
compute5 fields changed- changed
Input schema / properties / engine / descriptionPrevious 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)." - added
Input schema / properties / engine / exampleAdded value: +"tds" - removed
Input schema / properties / inputs / additionalPropertiesRemoved value: -true - changed
Input schema / properties / inputs / descriptionPrevious value: -"Input parameters matching the target engine's schema."New value: +"The engine's own inputs, exactly as its tool schema defines them." - added
Input schema / properties / inputs / exampleAdded 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 +}
- Changed
fd7 fields changed- changed
Input schema / properties / interest_rate / descriptionPrevious 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)." - added
Input schema / properties / interest_rate / exampleAdded value: +"7.00" - added
Input schema / properties / interest_rate / patternAdded value: +"^\\d+(\\.\\d+)?$" - changed
Input schema / properties / interest_rate / typePrevious value: -"number"New value: +"string" - changed
Input schema / properties / principal / descriptionPrevious value: -"Deposit principal amount in INR (₹)."New value: +"Deposit amount in INR. At least 1,000 (statutory minimum FD principal, RBI Master Direction 2016)." - added
Input schema / properties / principal / exampleAdded value: +250000 - added
Input schema / properties / principal / minimumAdded value: +1000
- Changed
feie_nomad_tracker14 fields changed- removed
Input schema / properties / daysOutsideUSInRollingPeriod / defaultRemoved value: -334 - changed
Input schema / properties / daysOutsideUSInRollingPeriod / descriptionPrevious 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." - added
Input schema / properties / daysOutsideUSInRollingPeriod / exampleAdded value: +340 - added
Input schema / properties / daysOutsideUSInRollingPeriod / maximumAdded value: +366 - added
Input schema / properties / daysOutsideUSInRollingPeriod / minimumAdded value: +0 - changed
Input schema / properties / daysOutsideUSInRollingPeriod / typePrevious value: -"number"New value: +"integer" - removed
Input schema / properties / effectiveTaxBracketPercentRemoved value: -{ - "default": 24, - "description": "Estimated federal marginal tax rate percentage applied to income exceeding the statutory cap (e.g. 24 for 24%).", - "type": "number" -} - added
Input schema / properties / filingStatusAdded value: +{ + "description": "IRS filing status: 'single' or 'mfj' (married filing jointly).", + "enum": [ + "single", + "mfj" + ], + "type": "string" +} - removed
Input schema / properties / foreignEarnedIncome / defaultRemoved value: -160000 - changed
Input schema / properties / foreignEarnedIncome / descriptionPrevious 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." - added
Input schema / properties / foreignEarnedIncome / exampleAdded value: +120000 - added
Input schema / properties / foreignEarnedIncome / exclusiveMinimumAdded value: +0 - added
Input schema / properties / qualifyingDaysInTaxYearAdded 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" +} - removed
Input schema / properties / taxYearRemoved value: -{ - "default": 2025, - "description": "Applicable US federal tax filing year (2024, 2025, or 2026).", - "type": "number" -}
- Changed
gold7 fields changed- removed
Input schema / properties / purity_karat / defaultRemoved value: -22 - changed
Input schema / properties / purity_karat / descriptionPrevious 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." - changed
Input schema / properties / rate_per_gram_24k / descriptionPrevious 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)." - added
Input schema / properties / rate_per_gram_24k / exampleAdded value: +"7500.00" - added
Input schema / properties / rate_per_gram_24k / patternAdded value: +"^\\d+\\.\\d{2}$" - changed
Input schema / properties / rate_per_gram_24k / typePrevious value: -"number"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "weight_grams", - "rate_per_gram_24k" -]New value: +[ + "weight_grams", + "rate_per_gram_24k", + "purity_karat" +]
- Changed
gst_composition5 fields changed- added
Input schema / properties / preceding_fy_turnoverAdded 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" +} - added
Input schema / properties / quarter_turnover / exampleAdded value: +"250000.00" - added
Input schema / properties / quarter_turnover / patternAdded value: +"^\\d+\\.\\d{2}$" - changed
Input schema / properties / quarter_turnover / typePrevious value: -"number"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "quarter_turnover" -]New value: +[ + "quarter_turnover", + "preceding_fy_turnover" +]
- Changed
home_loan_emi7 fields changed- changed
Input schema / properties / interestRatePercent / descriptionPrevious 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)." - added
Input schema / properties / interestRatePercent / exampleAdded value: +"8.50" - added
Input schema / properties / interestRatePercent / patternAdded value: +"^\\d+(\\.\\d+)?$" - changed
Input schema / properties / interestRatePercent / typePrevious value: -"number"New value: +"string" - added
Input schema / properties / principal / exampleAdded value: +"5000000.00" - added
Input schema / properties / principal / patternAdded value: +"^\\d+\\.\\d{2}$" - changed
Input schema / properties / principal / typePrevious value: -"number"New value: +"string"
- Changed
land_units8 fields changed- changed
Input schema / properties / area / descriptionPrevious 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." - added
Input schema / properties / area / exampleAdded value: +2.5 - added
Input schema / properties / area / exclusiveMinimumAdded value: +0 - changed
Input schema / properties / area / typePrevious value: -"string"New value: +"number" - changed
Input schema / properties / from_unit / descriptionPrevious 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." - added
Input schema / properties / from_unit / enumAdded value: +[ + "sqft", + "sqm", + "gaj", + "sqyd", + "acre", + "hectare", + "guntha", + "cent", + "ground", + "ankanam", + "bigha", + "bigha_pucca", + "bigha_kaccha", + "biswa", + "katha" +] - changed
Input schema / properties / to_unit / descriptionPrevious value: -"Optional specific target unit (e.g. 'sqft', 'acre', 'guntha', 'sqm', 'biswa'). If omitted, returns full standard breakdown."New value: +"Unit to convert into." - added
Input schema / properties / to_unit / enumAdded value: +[ + "sqft", + "sqm", + "gaj", + "sqyd", + "acre", + "hectare", + "guntha", + "cent", + "ground", + "ankanam" +]
- Changed
mortgage_piti7 fields changed- added
Input schema / properties / homePrice / exampleAdded value: +"400000.00" - added
Input schema / properties / homePrice / patternAdded value: +"^\\d+\\.\\d{2}$" - changed
Input schema / properties / homePrice / typePrevious value: -"number"New value: +"string" - changed
Input schema / properties / interestRate / descriptionPrevious 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)." - added
Input schema / properties / interestRate / exampleAdded value: +"6.75" - added
Input schema / properties / interestRate / patternAdded value: +"^\\d+(\\.\\d+)?$" - changed
Input schema / properties / interestRate / typePrevious value: -"number"New value: +"string"
- Changed
sip_investment4 fields changed- changed
Input schema / properties / monthlyInvestment / descriptionPrevious 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." - added
Input schema / properties / monthlyInvestment / exampleAdded value: +"5000.00" - added
Input schema / properties / monthlyInvestment / patternAdded value: +"^\\d+\\.\\d{2}$" - changed
Input schema / properties / monthlyInvestment / typePrevious value: -"number"New value: +"string"
- Changed
solo_401k_shield2 fields changed- added
Input schema / properties / participant_ageAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "netEarnings" -]New value: +[ + "netEarnings", + "participant_age" +]
- Changed
tcs3 fields changed- added
Input schema / properties / amount / exampleAdded value: +"100000.00" - added
Input schema / properties / amount / patternAdded value: +"^\\d+\\.\\d{2}$" - changed
Input schema / properties / amount / typePrevious value: -"number"New value: +"string"
- Changed
tds6 fields changed- added
Input schema / properties / amount / exampleAdded value: +"50000.00" - added
Input schema / properties / amount / patternAdded value: +"^\\d+\\.\\d{2}$" - changed
Input schema / properties / amount / typePrevious value: -"number"New value: +"string" - changed
Input schema / properties / pan_available / descriptionPrevious 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." - added
Input schema / properties / pan_operativeAdded 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" +} - changed
Input schema / requiredPrevious 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" +]
- Changed
vat_sales_tax4 fields changed- changed
Input schema / properties / vatRatePercent / descriptionPrevious 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)." - added
Input schema / properties / vatRatePercent / exampleAdded value: +20 - added
Input schema / properties / vatRatePercent / maximumAdded value: +100 - added
Input schema / properties / vatRatePercent / minimumAdded value: +0
17 tool updates
- Changed
ai_token_arbitrage2 fields changed- removed
Input schema / properties / completion_tokens / defaultRemoved value: -1000 - removed
Input schema / properties / prompt_tokens / defaultRemoved value: -5000
- Changed
billable_floor1 field changed- removed
Input schema / properties / targetNetCash / defaultRemoved value: -120000
- Changed
breakeven_margin3 fields changed- removed
Input schema / properties / fixedCosts / defaultRemoved value: -10000 - removed
Input schema / properties / unitPrice / defaultRemoved value: -50 - removed
Input schema / properties / unitVariableCost / defaultRemoved value: -20
- Changed
cagr_inflation3 fields changed- removed
Input schema / properties / finalValue / defaultRemoved value: -100000 - removed
Input schema / properties / initialValue / defaultRemoved value: -50000 - removed
Input schema / properties / periodsYears / defaultRemoved value: -5
- Changed
compound_wealth2 fields changed- removed
Input schema / properties / annualRatePercent / defaultRemoved value: -8 - removed
Input schema / properties / tenureYears / defaultRemoved value: -15
- Changed
contractor_parity1 field changed- removed
Input schema / properties / contractorHourlyRate / defaultRemoved value: -85
- Changed
fd2 fields changed- added
Input schema / properties / compounding_conventionAdded 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" +} - removed
Input schema / properties / compounding_frequencyRemoved value: -{ - "default": "quarterly", - "description": "Interest compounding frequency.", - "enum": [ - "quarterly", - "monthly", - "half_yearly", - "annual", - "simple" - ], - "type": "string" -}
- Changed
fx_invoicing1 field changed- removed
Input schema / properties / invoiceUsd / defaultRemoved value: -10000
- Removed
gst_regular - Changed
npv_irr1 field changed- removed
Input schema / properties / initialInvestment / defaultRemoved value: -100000
- Changed
ppf1 field changed- removed
Input schema / properties / yearly_deposit / defaultRemoved value: -150000
- Changed
scorp_optimizer1 field changed- removed
Input schema / properties / netProfit / defaultRemoved value: -150000
- Changed
solo_401k_shield4 fields changed- removed
Input schema / properties / entityType / defaultRemoved value: -"llc" - changed
Input schema / properties / entityType / descriptionPrevious 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." - changed
Input schema / properties / entityType / enumPrevious value: -[ - "llc", - "scorp" -]New value: +[ + "sole_prop", + "scorp" +] - removed
Input schema / properties / netEarnings / defaultRemoved value: -120000
- Changed
sukanya1 field changed- removed
Input schema / properties / yearly_deposit / defaultRemoved value: -150000
- Changed
tcs9 fields changed- removed
Input schema / properties / buyer_pan_status / defaultRemoved value: -"valid" - changed
Input schema / properties / buyer_pan_status / descriptionPrevious 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." - changed
Input schema / properties / buyer_pan_status / enumPrevious value: -[ - "valid", - "missing" -]New value: +[ + "valid", + "missing_or_invalid" +] - added
Input schema / properties / is_interstateAdded value: +{ + "default": false, + "description": "True for interstate supply (IGST), false for intrastate supply (CGST + SGST).", + "type": "boolean" +} - added
Input schema / properties / is_reverse_chargeAdded value: +{ + "default": false, + "description": "Whether transaction is subject to Reverse Charge Mechanism (RCM).", + "type": "boolean" +} - removed
Input schema / properties / nature / defaultRemoved value: -"goods_sale_206c1h" - changed
Input schema / properties / nature / descriptionPrevious 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." - changed
Input schema / properties / nature / enumPrevious 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" +] - added
Input schema / properties / rateAdded value: +{ + "default": 18, + "description": "Statutory GST percentage slab.", + "enum": [ + 0, + 5, + 12, + 18, + 28 + ], + "type": "number" +}
- Changed
tds12 fields changed- added
Input schema / properties / as_of_dateAdded 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" +} - added
Input schema / properties / pan_availableAdded value: +{ + "description": "Whether the payee has furnished a valid PAN. false triggers the s.206AA higher rate of 20%.", + "type": "boolean" +} - removed
Input schema / properties / pan_statusRemoved 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" -} - removed
Input schema / properties / payee_type / defaultRemoved value: -"individual" - changed
Input schema / properties / payee_type / descriptionPrevious 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." - changed
Input schema / properties / payee_type / enumPrevious value: -[ - "individual", - "company" -]New value: +[ + "individual_or_huf", + "domestic_company" +] - removed
Input schema / properties / payment_type / defaultRemoved value: -"contract" - changed
Input schema / properties / payment_type / descriptionPrevious 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." - changed
Input schema / properties / payment_type / enumPrevious 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" +] - added
Input schema / properties / residentAdded 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" +} - removed
Input schema / properties / resident_statusRemoved value: -{ - "default": "resident", - "description": "Residential status of the payee under Section 6.", - "enum": [ - "resident", - "non_resident" - ], - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "amount" -]New value: +[ + "amount", + "as_of_date", + "payment_type", + "payee_type", + "resident" +]
- Changed
vat_sales_tax1 field changed- removed
Input schema / properties / vatRatePercent / defaultRemoved value: -20
2 tool updates
- Changed
tax_in2 fields changed- added
Input schema / properties / as_of_dateAdded value: +{ + "description": "Statutory as-of date in ISO YYYY-MM-DD format.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "gross_income" -]New value: +[ + "gross_income", + "as_of_date" +]
- Added
tax_in_new
2 tool updates
- Added
context_sanitizer_get_dsi - Added
context_sanitizer_verify_scope
22 tool updates
- Added
advance_tax - Removed
beam_bending - Removed
black_scholes - Removed
casio_991_solve - Added
compute - Added
fd - Added
gold - Added
gst_composition - Added
gst_regular - Removed
linear_regression - Added
pack_status - Removed
pipe_flow - Added
ppf - Removed
programmer_calculator - Removed
projectile_motion - Removed
rlc_circuit - Removed
rocket_deltav - Added
sukanya - Added
tax_in - Added
tcs - Added
tds - Removed
tip_splitter
3 tool updates
- Changed
ai_token_arbitrage15 fields changed- added
Input schema / properties / asOfDateAdded value: +{ + "description": "CamelCase alias for as_of_date.", + "type": "string" +} - added
Input schema / properties / as_of_dateAdded 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" +} - removed
Input schema / properties / cacheHitRatio / defaultRemoved value: -0.8 - changed
Input schema / properties / cacheHitRatio / descriptionPrevious 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." - added
Input schema / properties / cache_hit_ratioAdded 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" +} - removed
Input schema / properties / completionTokens / defaultRemoved value: -1000 - changed
Input schema / properties / completionTokens / descriptionPrevious value: -"Number of generated output completion tokens per API call. Must be an integer >= 0."New value: +"CamelCase alias for completion_tokens." - added
Input schema / properties / completion_tokensAdded value: +{ + "default": 1000, + "description": "Number of generated output completion tokens per API call. Must be a non-negative integer. Alias: completionTokens.", + "type": "number" +} - removed
Input schema / properties / isBatch / defaultRemoved value: -false - changed
Input schema / properties / isBatch / descriptionPrevious value: -"Whether the 50% asynchronous batch processing discount applies."New value: +"CamelCase alias for is_batch." - added
Input schema / properties / is_batchAdded value: +{ + "default": false, + "description": "Whether asynchronous batch processing discount (50%) applies. Alias: isBatch.", + "type": "boolean" +} - removed
Input schema / properties / promptTokens / defaultRemoved value: -5000 - changed
Input schema / properties / promptTokens / descriptionPrevious value: -"Number of input prompt tokens per API call. Must be an integer >= 0."New value: +"CamelCase alias for prompt_tokens." - added
Input schema / properties / prompt_tokensAdded value: +{ + "default": 5000, + "description": "Number of input prompt tokens per API call. Must be a non-negative integer. Alias: promptTokens.", + "type": "number" +} - added
Input schema / requiredAdded value: +[ + "prompt_tokens", + "completion_tokens" +]
- Changed
beam_bending9 fields changed- added
Input schema / properties / distanceFromNeutralAxisMm / defaultAdded value: +50 - changed
Input schema / properties / distanceFromNeutralAxisMm / descriptionPrevious 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)." - changed
Input schema / properties / elasticModulusGpa / descriptionPrevious 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)." - changed
Input schema / properties / lengthMeters / descriptionPrevious 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)." - changed
Input schema / properties / loadNewtons / descriptionPrevious 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)." - added
Input schema / properties / momentOfInertiaCm4 / defaultAdded value: +800 - changed
Input schema / properties / momentOfInertiaCm4 / descriptionPrevious 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)." - added
Input schema / properties / supportTypeAdded 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" +} - changed
Input schema / requiredPrevious value: -[ - "loadNewtons", - "lengthMeters", - "momentOfInertiaCm4", - "distanceFromNeutralAxisMm" -]New value: +[ + "loadNewtons", + "lengthMeters" +]
- Changed
black_scholes8 fields changed- added
Input schema / properties / dividendYieldPercentAdded 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" +} - removed
Input schema / properties / riskFreeRateRemoved value: -{ - "default": 0.045, - "description": "Annualized risk-free interest rate r expressed as decimal (0.045) or percentage (4.5).", - "type": "number" -} - added
Input schema / properties / riskFreeRatePercentAdded 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" +} - changed
Input schema / properties / spotPrice / descriptionPrevious 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)." - changed
Input schema / properties / strikePrice / descriptionPrevious 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)." - changed
Input schema / properties / timeToExpiryYears / descriptionPrevious 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)." - removed
Input schema / properties / volatilityRemoved value: -{ - "default": 0.25, - "description": "Annualized implied volatility sigma expressed as decimal (0.25) or percentage (25). Must be positive.", - "type": "number" -} - added
Input schema / properties / volatilityPercentAdded 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" +}
1 tool update
- Added
programmer_calculator
1 tool update
- Added
land_units
28 tool updates
- Changed
ai_token_arbitrage4 fields changed- changed
Input schema / properties / cacheHitRatio / descriptionPrevious 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%)." - changed
Input schema / properties / completionTokens / descriptionPrevious value: -"Output completion token count per API request"New value: +"Number of generated output completion tokens per API call. Must be an integer >= 0." - changed
Input schema / properties / isBatch / descriptionPrevious value: -"Whether asynchronous batch API 50% discount applies"New value: +"Whether the 50% asynchronous batch processing discount applies." - changed
Input schema / properties / promptTokens / descriptionPrevious value: -"Input prompt token count per API request"New value: +"Number of input prompt tokens per API call. Must be an integer >= 0."
- Changed
b2b_withholding_risk4 fields changed- changed
Input schema / properties / daysInCountry / descriptionPrevious 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." - changed
Input schema / properties / invoiceNetRequired / descriptionPrevious 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." - changed
Input schema / properties / statutoryRatePercent / descriptionPrevious 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." - changed
Input schema / properties / treatyRatePercent / descriptionPrevious 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%)."
- Changed
beam_bending5 fields changed- changed
Input schema / properties / distanceFromNeutralAxisMm / descriptionPrevious 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." - changed
Input schema / properties / elasticModulusGpa / descriptionPrevious 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)." - changed
Input schema / properties / lengthMeters / descriptionPrevious value: -"Beam span L in meters (m)"New value: +"Unsupported beam span length L between supports in meters (m). Must be positive." - changed
Input schema / properties / loadNewtons / descriptionPrevious value: -"Point load P in Newtons (N)"New value: +"Concentrated point load P applied at the beam center in Newtons (N). Must be positive." - changed
Input schema / properties / momentOfInertiaCm4 / descriptionPrevious 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."
- Changed
billable_floor6 fields changed- changed
Input schema / properties / annualExpenses / descriptionPrevious value: -"Annual business operating expenses ($/yr)"New value: +"Annual tax-deductible business operating expenses in USD ($/yr) (software, office, hardware, insurance)." - added
Input schema / properties / filingStatus / descriptionAdded value: +"IRS income tax filing status: 'single' for unmarried individual or 'mfj' for married filing jointly." - changed
Input schema / properties / healthInsuranceAnnual / descriptionPrevious 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." - changed
Input schema / properties / nonBillablePercent / descriptionPrevious 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%)." - changed
Input schema / properties / targetNetCash / descriptionPrevious 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." - changed
Input schema / properties / vacationWeeks / descriptionPrevious 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)."
- Changed
black_scholes5 fields changed- changed
Input schema / properties / riskFreeRate / descriptionPrevious 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)." - changed
Input schema / properties / spotPrice / descriptionPrevious value: -"Underlying stock/asset spot price S"New value: +"Current market spot price of the underlying asset S in currency units. Must be positive." - changed
Input schema / properties / strikePrice / descriptionPrevious value: -"Strike price K"New value: +"Agreed option strike exercise price K in currency units. Must be positive." - changed
Input schema / properties / timeToExpiryYears / descriptionPrevious 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." - changed
Input schema / properties / volatility / descriptionPrevious value: -"Annualized implied volatility sigma (decimal or %)"New value: +"Annualized implied volatility sigma expressed as decimal (0.25) or percentage (25). Must be positive."
- Changed
breakeven_margin4 fields changed- changed
Input schema / properties / expectedUnitsSold / descriptionPrevious 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." - changed
Input schema / properties / fixedCosts / descriptionPrevious value: -"Total fixed periodic operating costs ($)"New value: +"Total periodic fixed operating overhead costs in currency units (rent, salaries, software). Must be positive." - changed
Input schema / properties / unitPrice / descriptionPrevious value: -"Selling price per unit ($)"New value: +"Selling price per individual product or service unit in currency units. Must be greater than unitVariableCost." - changed
Input schema / properties / unitVariableCost / descriptionPrevious value: -"Variable cost incurred per unit ($)"New value: +"Direct variable cost incurred per unit produced or delivered in currency units. Must be non-negative."
- Changed
cagr_inflation4 fields changed- changed
Input schema / properties / finalValue / descriptionPrevious value: -"Ending portfolio / asset valuation ($)"New value: +"Ending portfolio, asset, or revenue valuation in currency units. Must be positive." - changed
Input schema / properties / inflationRatePercent / descriptionPrevious value: -"Annualized expected inflation rate %"New value: +"Annualized inflation rate percentage over the period (e.g. 2.5 for 2.5%)." - changed
Input schema / properties / initialValue / descriptionPrevious value: -"Beginning portfolio / asset valuation ($)"New value: +"Beginning portfolio, asset, or revenue valuation in currency units. Must be positive." - changed
Input schema / properties / periodsYears / descriptionPrevious 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."
- Changed
casio_991_solve7 fields changed- added
Input schema / properties / a / descriptionAdded value: +"First coefficient: quadratic coefficient a (for a*x^2, must be non-zero) or first linear equation x-coefficient a1." - added
Input schema / properties / a2 / descriptionAdded value: +"Second linear equation x-coefficient a2 (required when type is 'simultaneous2', a2*x + b2*y = c2)." - added
Input schema / properties / b / descriptionAdded value: +"Second coefficient: linear coefficient b (for b*x) or first linear equation y-coefficient b1." - added
Input schema / properties / b2 / descriptionAdded value: +"Second linear equation y-coefficient b2 (required when type is 'simultaneous2', a2*x + b2*y = c2)." - added
Input schema / properties / c / descriptionAdded value: +"Constant term: constant c (for + c = 0) or first linear equation constant c1 (a1*x + b1*y = c1)." - added
Input schema / properties / c2 / descriptionAdded value: +"Second linear equation constant term c2 (required when type is 'simultaneous2', a2*x + b2*y = c2)." - added
Input schema / properties / type / descriptionAdded 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)."
- Changed
cloud_egress_finops2 fields changed- changed
Input schema / properties / cacheHitRatio / descriptionPrevious 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%)." - changed
Input schema / properties / monthlyEgressGB / descriptionPrevious 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."
- Changed
compound_wealth5 fields changed- changed
Input schema / properties / annualRatePercent / descriptionPrevious value: -"Expected annual return in %"New value: +"Expected annualized investment return rate percentage (e.g. 8 for 8%). Must be positive." - changed
Input schema / properties / compoundFrequency / descriptionPrevious value: -"Compounding frequency per year (12 = monthly)"New value: +"Number of compounding periods per year (1 for annual, 4 for quarterly, 12 for monthly)." - changed
Input schema / properties / monthlyDeposit / descriptionPrevious value: -"Monthly recurring contribution"New value: +"Recurring monthly contribution added to the account. Must be non-negative." - changed
Input schema / properties / principal / descriptionPrevious value: -"Initial principal deposit"New value: +"Initial lump-sum deposit or starting balance in currency units. Must be non-negative." - changed
Input schema / properties / tenureYears / descriptionPrevious value: -"Duration in years"New value: +"Investment horizon in years (e.g. 10, 20, 30). Must be an integer >= 1."
- Changed
contractor_parity13 fields changed- changed
Input schema / properties / annualExpenses / descriptionPrevious value: -"1099 deductible business expenses ($/yr)"New value: +"Annual tax-deductible business operating expenses in USD ($/yr) (software, hardware, insurance)." - changed
Input schema / properties / contractorHourlyRate / descriptionPrevious value: -"1099 contractor hourly billing rate in USD ($/hr)"New value: +"1099 contractor hourly billing rate in USD ($/hr). Must be a positive number." - changed
Input schema / properties / eligibleQBI / descriptionPrevious 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." - changed
Input schema / properties / filingStatus / descriptionPrevious value: -"Tax filing status"New value: +"IRS income tax filing status: 'single' for unmarried individual or 'mfj' for married filing jointly." - changed
Input schema / properties / healthSubsidyAnnual / descriptionPrevious value: -"Annual W-2 employer health insurance subsidy ($/yr)"New value: +"Annual W-2 employer-paid health insurance subsidy in USD ($/yr)." - changed
Input schema / properties / hoursPerWeek / descriptionPrevious value: -"1099 billable hours per week"New value: +"Expected billable client hours per week as a 1099 contractor. Must be greater than 0." - changed
Input schema / properties / match401kPercent / descriptionPrevious 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%)." - changed
Input schema / properties / ptoDays / descriptionPrevious value: -"W-2 paid time off days"New value: +"Annual W-2 paid time off days (combined vacation and sick leave)." - added
Input schema / properties / selectedRail / descriptionAdded value: +"Payment rail provider for international contractor payout: 'wise', 'deel', 'payoneer', 'stripe', 'paypal', or 'wire'." - changed
Input schema / properties / stateTaxRatePercent / descriptionPrevious 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." - changed
Input schema / properties / targetCurrency / descriptionPrevious 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)." - changed
Input schema / properties / w2Salary / descriptionPrevious value: -"W-2 gross annual salary in USD ($/yr)"New value: +"W-2 gross annual salary in USD ($/yr). Must be a positive number." - changed
Input schema / properties / weeksPerYear / descriptionPrevious 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)."
- Changed
feie_nomad_tracker5 fields changed- changed
Input schema / properties / daysOutsideUSInRollingPeriod / descriptionPrevious 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." - changed
Input schema / properties / effectiveTaxBracketPercent / descriptionPrevious 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%)." - changed
Input schema / properties / foreignEarnedIncome / descriptionPrevious value: -"Annual foreign earned compensation in USD ($)"New value: +"Total annual compensation earned while working outside the US in USD ($). Must be positive." - changed
Input schema / properties / stateDomicile / descriptionPrevious 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." - changed
Input schema / properties / taxYear / descriptionPrevious value: -"Applicable tax year (2024, 2025, or 2026)"New value: +"Applicable US federal tax filing year (2024, 2025, or 2026)."
- Changed
fx_invoicing2 fields changed- changed
Input schema / properties / invoiceUsd / descriptionPrevious value: -"Gross invoice amount in USD ($)"New value: +"Gross billed invoice amount in USD ($). Must be a positive number greater than 0." - changed
Input schema / properties / targetCurrency / descriptionPrevious 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)."
- Changed
home_loan_emi3 fields changed- changed
Input schema / properties / interestRatePercent / descriptionPrevious value: -"Annual interest rate %"New value: +"Annual interest rate percentage (e.g. 8.5 for 8.5%). Must be positive." - changed
Input schema / properties / principal / descriptionPrevious value: -"Loan amount"New value: +"Total borrowed principal loan amount in currency units. Must be a positive number." - changed
Input schema / properties / tenureYears / descriptionPrevious value: -"Loan term in years"New value: +"Total loan repayment duration in years (e.g. 15, 20, 30). Must be an integer >= 1."
- Changed
indian_income_tax2 fields changed- changed
Input schema / properties / ctc / descriptionPrevious 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." - changed
Input schema / properties / isSalaried / descriptionPrevious 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)."
- Changed
linear_regression3 fields changed- changed
Input schema / properties / points / descriptionPrevious 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." - added
Input schema / properties / points / items / properties / x / descriptionAdded value: +"Independent variable X coordinate value." - added
Input schema / properties / points / items / properties / y / descriptionAdded value: +"Dependent variable Y coordinate value."
- Changed
mortgage_piti8 fields changed- changed
Input schema / properties / annualHomeInsurance / descriptionPrevious value: -"Annual hazard insurance premium"New value: +"Annual hazard/homeowners insurance premium in currency units (e.g. 1400)." - changed
Input schema / properties / annualPmiPercent / descriptionPrevious 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)." - changed
Input schema / properties / downPaymentPercent / descriptionPrevious 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." - changed
Input schema / properties / homePrice / descriptionPrevious 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." - changed
Input schema / properties / interestRate / descriptionPrevious 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." - changed
Input schema / properties / loanTermYears / descriptionPrevious value: -"Loan duration in years (standard US alias for tenureYears)"New value: +"Standard US alias for tenureYears (loan term in years)." - changed
Input schema / properties / propertyTaxRatePercent / descriptionPrevious 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%)." - changed
Input schema / properties / tenureYears / descriptionPrevious value: -"Loan duration in years (e.g. 15, 20, 30)"New value: +"Loan duration in years (typically 15, 20, or 30)."
- Changed
npv_irr4 fields changed- changed
Input schema / properties / cashflows / descriptionPrevious 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." - added
Input schema / properties / cashflows / items / descriptionAdded value: +"Net cash inflow amount for this sequential period in currency units." - changed
Input schema / properties / discountRatePercent / descriptionPrevious value: -"Annual hurdle / discount rate %"New value: +"Annual cost of capital or hurdle discount rate percentage (e.g. 10.0 for 10%)." - changed
Input schema / properties / initialInvestment / descriptionPrevious 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."
- Changed
pipe_flow6 fields changed- changed
Input schema / properties / dynamicViscosityPaS / descriptionPrevious value: -"Dynamic viscosity (Pa·s)"New value: +"Dynamic fluid viscosity mu in Pascal-seconds (Pa·s) (e.g. 0.001 for water)." - changed
Input schema / properties / flowRateM3s / descriptionPrevious 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." - changed
Input schema / properties / fluidDensityKgM3 / descriptionPrevious value: -"Fluid density (kg/m^3)"New value: +"Fluid mass density rho in kg/m^3 (e.g. 1000 for water at 20°C)." - changed
Input schema / properties / pipeDiameterM / descriptionPrevious value: -"Internal pipe diameter D in meters"New value: +"Internal pipe diameter D in meters (m). Must be positive." - changed
Input schema / properties / pipeLengthM / descriptionPrevious value: -"Total pipe run length L in meters"New value: +"Total linear pipe run length L in meters (m). Must be positive." - changed
Input schema / properties / pipeRoughnessM / descriptionPrevious value: -"Absolute pipe surface roughness (m)"New value: +"Absolute internal pipe wall surface roughness epsilon in meters (e.g. 0.000045 for commercial steel)."
- Changed
projectile_motion3 fields changed- changed
Input schema / properties / gravityMs2 / descriptionPrevious 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)." - changed
Input schema / properties / initialVelocityMs / descriptionPrevious value: -"Initial launch velocity v0 in m/s"New value: +"Initial launch velocity magnitude v0 in meters per second (m/s). Must be positive." - changed
Input schema / properties / launchAngleDegrees / descriptionPrevious 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)."
- Changed
rlc_circuit4 fields changed- changed
Input schema / properties / capacitanceFarads / descriptionPrevious value: -"Capacitance C in Farads (F)"New value: +"Circuit capacitance C in Farads (F). Must be positive." - changed
Input schema / properties / frequencyHz / descriptionPrevious 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." - changed
Input schema / properties / inductanceHenrys / descriptionPrevious value: -"Inductance L in Henrys (H)"New value: +"Circuit inductance L in Henrys (H). Must be positive." - changed
Input schema / properties / resistanceOhms / descriptionPrevious value: -"Resistance R in Ohms (Ω)"New value: +"Circuit series electrical resistance R in Ohms (Ω). Must be positive."
- Changed
rocket_deltav4 fields changed- changed
Input schema / properties / finalMassKg / descriptionPrevious value: -"Dry burnout mass mf in kg"New value: +"Dry burnout mass mf after propellant exhaustion in kilograms (kg). Must be positive." - changed
Input schema / properties / gravityMs2 / descriptionPrevious value: -"Standard gravity g0 in m/s^2"New value: +"Standard gravitational acceleration constant g0 in m/s^2. Default is 9.80665." - changed
Input schema / properties / initialMassKg / descriptionPrevious 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." - changed
Input schema / properties / specificImpulseSeconds / descriptionPrevious 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."
- Changed
scorp_optimizer5 fields changed- changed
Input schema / properties / cpaAnnualFee / descriptionPrevious 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)." - changed
Input schema / properties / netProfit / descriptionPrevious 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." - changed
Input schema / properties / payrollAnnualFee / descriptionPrevious 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)." - changed
Input schema / properties / salaryPercent / descriptionPrevious 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." - changed
Input schema / properties / stateAnnualFee / descriptionPrevious 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)."
- Changed
sip_investment4 fields changed- changed
Input schema / properties / annualReturnRate / descriptionPrevious value: -"Expected annual return rate in %"New value: +"Expected annualized return rate percentage (e.g. 12 for 12% equity CAGR)." - changed
Input schema / properties / monthlyInvestment / descriptionPrevious value: -"Monthly SIP amount"New value: +"Initial monthly investment installment amount in currency units (e.g. 5000). Must be positive." - changed
Input schema / properties / stepUpPercent / descriptionPrevious 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)." - changed
Input schema / properties / tenureYears / descriptionPrevious value: -"Investment duration in years"New value: +"Total investment duration in years (e.g. 5, 10, 20). Must be an integer >= 1."
- Changed
solo_401k_shield4 fields changed- changed
Input schema / properties / entityType / descriptionPrevious 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)." - changed
Input schema / properties / isAge50Plus / descriptionPrevious 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." - changed
Input schema / properties / marginalTaxRatePercent / descriptionPrevious value: -"Combined federal and state marginal tax bracket %"New value: +"Combined federal and state marginal income tax bracket percentage (e.g. 28 for 28%)." - changed
Input schema / properties / netEarnings / descriptionPrevious 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."
- Changed
startup_runway_dilution8 fields changed- changed
Input schema / properties / cashOnHand / descriptionPrevious value: -"Current cash in bank in USD ($)"New value: +"Current cash reserves in bank in USD ($). Must be positive." - changed
Input schema / properties / monthlyGrossBurn / descriptionPrevious value: -"Monthly operating cash outflows ($/mo)"New value: +"Total monthly cash operating expenses in USD ($/mo). Must be positive." - changed
Input schema / properties / monthlyRevenue / descriptionPrevious value: -"Monthly recurring revenue MRR ($/mo)"New value: +"Monthly recurring revenue (MRR) or cash collections in USD ($/mo). Default is 15000." - changed
Input schema / properties / optionPoolExpansionPercent / descriptionPrevious value: -"Required unallocated post-close option pool %"New value: +"Required post-closing unallocated employee stock option pool percentage (e.g. 10 for 10%)." - changed
Input schema / properties / postMoneyCap / descriptionPrevious value: -"Post-money valuation cap ($)"New value: +"Agreed valuation cap on the Post-Money SAFEs in USD ($)." - changed
Input schema / properties / safeInvestment / descriptionPrevious value: -"Post-money SAFE investment amount ($)"New value: +"Total capital raised via Post-Money SAFE notes in USD ($)." - changed
Input schema / properties / seriesAInvestment / descriptionPrevious value: -"Series A new lead investment amount ($)"New value: +"New equity capital invested by Series A lead investors in USD ($)." - changed
Input schema / properties / seriesAPreMoney / descriptionPrevious value: -"Series A pre-money agreed valuation ($)"New value: +"Agreed Series A pre-money company valuation in USD ($)."
- Changed
tip_splitter3 fields changed- changed
Input schema / properties / billAmount / descriptionPrevious value: -"Subtotal or total bill before tip"New value: +"Pre-tip subtotal or total food and beverage bill in monetary units. Must be positive." - changed
Input schema / properties / numPeople / descriptionPrevious value: -"Number of guests dining"New value: +"Total number of guests sharing the bill. Must be an integer greater than or equal to 1." - changed
Input schema / properties / tipPercent / descriptionPrevious value: -"Tip percentage (e.g. 15, 18, 20, 25)"New value: +"Gratuity percentage to add (e.g. 15, 18, 20, 25%)."
- Changed
vat_sales_tax3 fields changed- changed
Input schema / properties / amount / descriptionPrevious 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." - changed
Input schema / properties / mode / descriptionPrevious 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." - changed
Input schema / properties / vatRatePercent / descriptionPrevious 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)."
3 tool updates
- Added
breakeven_margin - Added
cagr_inflation - Added
npv_irr
25 tool updates
- First observed
ai_token_arbitrage - First observed
b2b_withholding_risk - First observed
beam_bending - First observed
billable_floor - First observed
black_scholes - First observed
casio_991_solve - First observed
cloud_egress_finops - First observed
compound_wealth - First observed
contractor_parity - First observed
feie_nomad_tracker - First observed
fx_invoicing - First observed
home_loan_emi - First observed
indian_income_tax - First observed
linear_regression - First observed
mortgage_piti - First observed
pipe_flow - First observed
projectile_motion - First observed
rlc_circuit - First observed
rocket_deltav - First observed
scorp_optimizer - First observed
sip_investment - First observed
solo_401k_shield - First observed
startup_runway_dilution - First observed
tip_splitter - First observed
vat_sales_tax
Related MCP Connectors
44 calculators for AI agents: US tax, finance, business + an MCP engineering & security suite.
Precision math engine for AI agents. 203 exact methods. Zero hallucination.
Current source-cited 2026 US tax constants and calculators for AI agents; every answer cites IRS.
AI-callable calculators and engineering models with real formulas. No hallucinated math.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables 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.373 npmMIT
- AlicenseBqualityBmaintenanceEnables 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.27426 npmMIT

OpenAccountantsofficial
AlicenseAqualityAmaintenanceOpen-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).3407AGPL 3.0- FlicenseNot gradedqualityBmaintenanceA 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.-
Glama MCP Gateway
Add one secure layer between your agents and this server.