MCP-Server

AI2Fin (2Fin) Tax MCP

com.ai2fin/ai2fin-tax-mcp
Finanzen & Investieren Recht & Compliance Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Provides source-cited tax rate lookups, GST/VAT calculations, and personal, company, capital-gains, and Australia-specific tax estimates.

cgt_estimate
Capital gains tax estimate (AU, FI)
Estimate capital gains tax on one asset sale for a resident individual in Australia or Finland. AU (the default): the gain is taxed at the marginal rate on top of other income — pass income and heldMoreThan12Months; capital losses apply before the 50% discount for assets held over 12 months, per ATO ordering. FI: capital income tax of 30%, or 34% above 30 000 € of capital income, on the gain after the better of the actual cost or the deemed acquisition cost (hankintameno-olettama: 20% of the price, 40% after 10 years), with the 1 000 € small-disposals rule — pass yearsHeld, and otherCapitalIncome if there is any. Use it for share, property or crypto sales; for pay without an asset sale use income_tax_estimate. Other countries' CGT is not covered and returns an error. The main-residence exemptions and non-resident rules are out of scope.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['proceeds', 'costBase'], 'properties': {'income': {'type': 'number', 'minimum': 0, 'description': 'AU: other taxable income for the year in AUD (salary etc.) — sets the marginal rate the gain stacks on. Required for AU'}, 'country': {'enum': ['AU', 'FI'], 'type': 'string', 'default': 'AU', 'description': 'AU (Australia, the default) or FI (Finland)'}, 'taxYear': {'type': 'string', 'pattern': '^\\d{4}$', 'description': "FI: calendar tax year like '2026'; omit for the current year"}, 'costBase': {'type': 'number', 'minimum': 0, 'description': 'What the asset cost, in local currency. AU: the cost base including eligible incidental costs. FI: the acquisition price (pass buying and selling costs as saleExpenses)'}, 'proceeds': {'type': 'number', 'minimum': 0, 'description': 'Sale price of the asset, in local currency'}, 'yearsHeld': {'type': 'number', 'minimum': 0, 'description': 'FI: whole years owned — 10 or more raises the deemed acquisition cost from 20% to 40% of the price'}, 'saleExpenses': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'FI: brokerage, fees and other costs of buying and selling'}, 'capitalLosses': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Capital losses to offset — AU: before any discount; FI: from this year or carried forward (five years)'}, 'otherCapitalIncome': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'FI: other capital income this year (dividends, rent, other gains) — decides how much of the gain falls above the 30 000 € threshold'}, 'heldMoreThan12Months': {'type': 'boolean', 'description': 'AU: true when the asset was held over 12 months, which halves the taxable gain (the 50% CGT discount). Required for AU'}, 'totalProceedsThisYear': {'type': 'number', 'minimum': 0, 'description': "FI: the year's total sale prices, this sale included, for the 1 000 € small-disposals rule; omit when this is the only sale"}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['country', 'taxYear', 'grossGain', 'lossOffset', 'discountApplied', 'taxableGain', 'cgtPayable', 'source', 'dataVerifiedOn', 'mayBeStale', 'disclaimer'], 'properties': {'loss': {'type': 'number', 'description': 'FI: the loss on this sale, if any (only ever from the actual cost)'}, 'notes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'FI: rules that decided the answer, in plain words'}, 'method': {'enum': ['actual', 'deemed'], 'type': 'string', 'description': 'FI: whether the actual cost or the deemed acquisition cost was deducted'}, 'source': {'type': 'string', 'description': "The national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')"}, 'country': {'enum': ['AU', 'FI'], 'type': 'string', 'description': 'Country estimated'}, 'taxYear': {'type': 'string', 'description': 'Tax year whose rules were used'}, 'grossGain': {'type': 'number', 'description': 'AU: proceeds minus cost base. FI: proceeds minus the larger of actual or deemed cost. Floored at 0, local currency'}, 'sourceUrl': {'type': 'string', 'description': 'https link to the authority page the rate was verified against. Present only on rate answers backed by a verified ledger row — absent (never empty) otherwise, so its presence is itself the claim'}, 'cgtPayable': {'type': 'number', 'description': 'Extra tax caused by the gain, in local currency'}, 'disclaimer': {'type': 'string', 'description': 'General-information note that must accompany any figure shown to a person'}, 'lossOffset': {'type': 'number', 'description': 'Capital losses actually applied'}, 'mayBeStale': {'type': 'boolean', 'description': 'True once the verification date is over a year old — re-confirm with the authority'}, 'taxableGain': {'type': 'number', 'description': 'Gain the tax was charged on'}, 'costDeducted': {'type': 'number', 'description': 'FI: the cost deducted from the price'}, 'dataVerifiedOn': {'type': 'string', 'description': 'ISO date the rate data was last confirmed against the authority'}, 'lossDeductible': {'type': 'boolean', 'description': 'FI: whether that loss can be deducted'}, 'discountApplied': {'type': 'boolean', 'description': 'AU: whether the 50% discount halved the taxable gain. Always false for FI, which has no discount'}, 'smallDisposalsExempt': {'type': 'boolean', 'description': "FI: true when the year's sale prices total 1 000 € or less, making every gain tax-free"}}, 'additionalProperties': False}
company_tax_estimate
Company tax estimate (AU, US, GB, IN, CA, FI)
Estimate company/corporate income tax on an annual profit for Australia, the US, the UK, India, Canada or Finland — the six countries with source-verified company rates — applying the small-business/concessional rate where it covers all income. Use it for company profit questions in those countries; individuals belong to income_tax_estimate, and any other country’s headline rate to tax_rate_lookup. Headline-rate arithmetic only: US state tax, Canadian provincial tax, Indian surcharge/cess and UK marginal relief are flagged in the response note but not computed. Finland is a flat 20%; its proposed 18% for 2027 is noted, not applied, until it is law. A negative profit returns an explanation (losses carry forward), never a negative tax.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['country', 'profit'], 'properties': {'profit': {'type': 'number', 'description': 'Annual taxable profit in local currency; a negative value (a loss) returns an explanatory message instead of tax'}, 'country': {'enum': ['AU', 'US', 'GB', 'IN', 'CA', 'FI'], 'type': 'string', 'description': 'Country with source-verified company-tax data'}, 'smallBusiness': {'type': 'boolean', 'default': False, 'description': 'Apply the small-business/concessional rate — only honoured where it covers all income (AU base-rate entity, IN s.115BAA); GB/CA thresholds are noted instead'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['country', 'taxLabel', 'rateApplied', 'tax', 'afterTax', 'note', 'source', 'dataVerifiedOn', 'mayBeStale', 'disclaimer'], 'properties': {'tax': {'type': 'number', 'description': 'Company tax on the profit (local currency, rounded)'}, 'note': {'type': 'string', 'description': 'What the headline calculation excludes (state/provincial tax, surcharge/cess, marginal relief …)'}, 'source': {'type': 'string', 'description': "The national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')"}, 'country': {'enum': ['AU', 'US', 'GB', 'IN', 'CA', 'FI'], 'type': 'string', 'description': 'Country estimated'}, 'afterTax': {'type': 'number', 'description': 'Profit after tax'}, 'taxLabel': {'type': 'string', 'description': "The country's name for the tax, e.g. 'Corporation Tax'"}, 'sourceUrl': {'type': 'string', 'description': 'https link to the authority page the rate was verified against. Present only on rate answers backed by a verified ledger row — absent (never empty) otherwise, so its presence is itself the claim'}, 'disclaimer': {'type': 'string', 'description': 'General-information note that must accompany any figure shown to a person'}, 'mayBeStale': {'type': 'boolean', 'description': 'True once the verification date is over a year old — re-confirm with the authority'}, 'rateApplied': {'type': 'number', 'description': 'Rate actually applied, as a fraction'}, 'dataVerifiedOn': {'type': 'string', 'description': 'ISO date the rate data was last confirmed against the authority'}}, 'additionalProperties': False}
compare_countries
Multi-country tax comparison
Compare headline tax rates — GST/VAT, top personal income tax and company tax — across several countries at once. Use it to shortlist or contrast jurisdictions (relocation, expansion, pricing); for one country's full detail use tax_rate_lookup, and to apply a rate to an amount use compute_gst_vat. Codes the dataset does not cover are reported back in unmatchedCodes rather than silently dropped; every matched row cites its national tax authority.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['countries'], 'properties': {'countries': {'type': 'array', 'items': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'maxLength': 2, 'minLength': 2, 'description': '2-letter ISO 3166-1 country code (case-insensitive)'}, 'examples': [['AU', 'GB', 'SG']], 'maxItems': 60, 'minItems': 1, 'description': 'Countries to compare — two or more makes a meaningful comparison'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['rows', 'unmatchedCodes', 'source', 'dataVerifiedOn', 'mayBeStale', 'disclaimer'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['country', 'code', 'taxLocalName', 'standardRateDisplay', 'incomeTopRate', 'companyRate', 'source'], 'properties': {'code': {'type': 'string', 'description': '2-letter ISO country code'}, 'source': {'type': 'string', 'description': "Authority this country's GST/VAT rate was verified against — says 'citation pending — not verified' when it was not"}, 'country': {'type': 'string', 'description': 'Country name'}, 'sourceUrl': {'type': 'string', 'description': 'https link to the authority page for the GST/VAT rate — present only for verified rows'}, 'mayBeStale': {'type': 'boolean', 'description': 'True when that date is over a year old, or the row is unverified'}, 'companyRate': {'type': 'string', 'description': 'Headline company tax rate (display string)'}, 'taxLocalName': {'type': 'string', 'description': 'Local consumption-tax name'}, 'incomeTopRate': {'type': 'string', 'description': 'Top personal income tax rate (display string)'}, 'dataVerifiedOn': {'type': 'string', 'description': "ISO date this country's rate was last confirmed against the authority"}, 'standardRateDisplay': {'type': 'string', 'description': 'GST/VAT standard rate (display string)'}}, 'additionalProperties': False}, 'description': 'One row per matched country'}, 'source': {'type': 'string', 'description': "The national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')"}, 'sourceUrl': {'type': 'string', 'description': 'https link to the authority page the rate was verified against. Present only on rate answers backed by a verified ledger row — absent (never empty) otherwise, so its presence is itself the claim'}, 'disclaimer': {'type': 'string', 'description': 'General-information note that must accompany any figure shown to a person'}, 'mayBeStale': {'type': 'boolean', 'description': 'True once the verification date is over a year old — re-confirm with the authority'}, 'dataVerifiedOn': {'type': 'string', 'description': 'ISO date the rate data was last confirmed against the authority'}, 'unmatchedCodes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Requested codes with no data — nothing was guessed for these'}}, 'additionalProperties': False}
compute_gst_vat
GST/VAT add or remove calculator
Add or remove a country's GST/VAT on a monetary amount, returning the net / tax / gross split. Use it to convert between tax-exclusive and tax-inclusive prices (invoices, quotes, receipts); for the rates themselves use tax_rate_lookup. Pure arithmetic on the country's current standard rate, rounded to 2 decimals, in the country's local currency. Countries without a single national GST/VAT (e.g. the US) return an explanatory error instead of a wrong number.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['country', 'amount'], 'properties': {'mode': {'enum': ['add', 'remove'], 'type': 'string', 'default': 'add', 'description': "'add' puts tax on top of a net amount; 'remove' extracts the tax already inside a gross amount"}, 'amount': {'type': 'number', 'minimum': 0, 'description': 'The monetary amount in the local currency — tax-exclusive when mode=add, tax-inclusive when mode=remove'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'examples': ['AU', 'GB'], 'maxLength': 2, 'minLength': 2, 'description': '2-letter ISO 3166-1 code of the country whose GST/VAT rate applies (case-insensitive)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['country', 'code', 'taxLocalName', 'rate', 'mode', 'net', 'tax', 'gross', 'source', 'dataVerifiedOn', 'mayBeStale', 'disclaimer'], 'properties': {'net': {'type': 'number', 'description': 'Amount before tax (local currency, 2 dp)'}, 'tax': {'type': 'number', 'description': 'The GST/VAT portion (local currency, 2 dp)'}, 'code': {'type': 'string', 'description': '2-letter ISO country code'}, 'mode': {'enum': ['add', 'remove'], 'type': 'string', 'description': 'Which conversion was performed'}, 'rate': {'type': 'number', 'description': 'Standard rate applied, as a fraction'}, 'gross': {'type': 'number', 'description': 'Amount including tax (local currency, 2 dp)'}, 'source': {'type': 'string', 'description': "The national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')"}, 'country': {'type': 'string', 'description': 'Country name'}, 'sourceUrl': {'type': 'string', 'description': 'https link to the authority page the rate was verified against. Present only on rate answers backed by a verified ledger row — absent (never empty) otherwise, so its presence is itself the claim'}, 'disclaimer': {'type': 'string', 'description': 'General-information note that must accompany any figure shown to a person'}, 'mayBeStale': {'type': 'boolean', 'description': 'True once the verification date is over a year old — re-confirm with the authority'}, 'taxLocalName': {'type': 'string', 'description': "The tax's local name, e.g. 'GST', 'VAT'"}, 'dataVerifiedOn': {'type': 'string', 'description': 'ISO date the rate data was last confirmed against the authority'}}, 'additionalProperties': False}
income_tax_estimate
Income tax & take-home estimate (AU, NZ, GB, IN, US, FI)
Estimate personal income tax and take-home pay for Australia, New Zealand, the UK, India, the US or Finland from gross annual income, using effective-dated brackets that roll over automatically each tax year (AU: Medicare levy + LITO; UK: National Insurance + personal-allowance taper; IN: standard deduction + s.87A rebate + surcharge + cess; US: federal FICA; FI: state + municipal + church tax, YLE tax, the health-insurance and employee pension/unemployment contributions and the earned-income credit, with the tax-card rate (veroprosentti) Vero would set). Use it for individual salary and take-home questions in these six countries only — other countries return 'not available' rather than a guess; their headline consumption-tax rates live in tax_rate_lookup. For Finland pass `municipality` (Finnish or Swedish name, e.g. 'Tampere' or 'Helsingfors') for that municipality's own rate — otherwise the national average is used and the answer says so — plus `church` for a parish member and `age` where it changes the contributions. This is a resident-individual estimate, not a filing calculation: it excludes state/regional taxes (UK Scotland, US state tax), non-standard deductions, Åland, and — for AU — HELP/HECS repayments (use student_loan_repayment).
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['country', 'income'], 'properties': {'age': {'type': 'integer', 'maximum': 100, 'minimum': 15, 'description': 'Finland only: age at the end of the tax year. Changes the employee pension and unemployment contributions and, from 66, the earned-income credit; omit to assume a working age of 18–52'}, 'church': {'enum': ['none', 'evangelical-lutheran', 'orthodox'], 'type': 'string', 'default': 'none', 'description': 'Finland only: parish membership, for church tax. Needs `municipality`, because each parish sets its own rate'}, 'income': {'type': 'number', 'minimum': 0, 'description': 'Gross annual income in local currency, before tax'}, 'country': {'enum': ['AU', 'NZ', 'GB', 'IN', 'US', 'FI'], 'type': 'string', 'description': 'AU (Australia), NZ (New Zealand), GB (UK), IN (India), US or FI (Finland)'}, 'taxYear': {'type': 'string', 'description': "Tax-year label, e.g. '2025-26' (AU/NZ/GB/IN) or '2026' (US and FI, calendar year); omit to use the current tax year in that country's timezone"}, 'municipality': {'type': 'string', 'maxLength': 60, 'description': "Finland only: the municipality (kunta) of residence on 31 December of the previous year, in Finnish or Swedish, e.g. 'Helsinki', 'Espoo', 'Tampere', 'Åbo'. Sets the municipal and parish tax rates; omit to use the national average municipal rate"}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['country', 'currency', 'taxYear', 'gross', 'taxable', 'incomeTax', 'medicareLevy', 'lito', 'offsets', 'levies', 'totalTax', 'takeHome', 'source', 'dataVerifiedOn', 'mayBeStale', 'disclaimer'], 'properties': {'lito': {'type': 'number', 'description': 'Kept for compatibility: AU Low Income Tax Offset only, 0 for every other country. See `offsets` for the general figure (IN s.87A rebate).'}, 'gross': {'type': 'number', 'description': 'Gross annual income used'}, 'levies': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'amount'], 'properties': {'name': {'type': 'string'}, 'amount': {'type': 'number'}}}, 'description': 'Charges on top of the offset tax, by name — empty array when none apply'}, 'source': {'type': 'string', 'description': "The national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')"}, 'country': {'enum': ['AU', 'NZ', 'GB', 'IN', 'US', 'FI'], 'type': 'string', 'description': 'Country estimated'}, 'offsets': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'amount'], 'properties': {'name': {'type': 'string'}, 'amount': {'type': 'number'}}}, 'description': 'Credits that reduced the tax, by name — empty array when none apply'}, 'taxYear': {'type': 'string', 'description': 'Tax year the brackets belong to'}, 'taxable': {'type': 'number', 'description': 'Income after any pre-band deduction (UK personal allowance, IN standard deduction)'}, 'currency': {'type': 'string', 'description': 'Currency of every monetary field'}, 'takeHome': {'type': 'number', 'description': 'Gross minus total tax'}, 'totalTax': {'type': 'number', 'description': 'Total tax after levies and offsets'}, 'incomeTax': {'type': 'number', 'description': 'Income tax before levies and offsets'}, 'sourceUrl': {'type': 'string', 'description': 'https link to the authority page the rate was verified against. Present only on rate answers backed by a verified ledger row — absent (never empty) otherwise, so its presence is itself the claim'}, 'churchRate': {'type': 'number', 'description': 'Finland: church-tax rate applied, as a fraction (0 for a non-member)'}, 'disclaimer': {'type': 'string', 'description': 'General-information note that must accompany any figure shown to a person'}, 'mayBeStale': {'type': 'boolean', 'description': 'True once the verification date is over a year old — re-confirm with the authority'}, 'assumptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Assumptions the figures depend on — relay them with the numbers'}, 'taxCardRate': {'type': 'number', 'description': 'Finland: the withholding percentage (veroprosentti) Vero would put on the tax card — rounded up to the next half point. Employee pension and unemployment contributions are withheld on top of it'}, 'medicareLevy': {'type': 'number', 'description': 'Kept for compatibility: AU Medicare levy only, 0 for every other country. See `levies` for the general figure (UK National Insurance, IN surcharge + cess, US FICA).'}, 'municipality': {'type': 'string', 'description': 'Finland: the municipality whose rates were used, or "national average"'}, 'municipalRate': {'type': 'number', 'description': 'Finland: municipal income-tax rate applied, as a fraction'}, 'dataVerifiedOn': {'type': 'string', 'description': 'ISO date the rate data was last confirmed against the authority'}, 'taxCardWithheld': {'type': 'number', 'description': 'Finland: the tax the tax card covers for the year, to the cent (state, municipal, church, health insurance and YLE tax, less the credit)'}, 'separatelyWithheld': {'type': 'number', 'description': 'Finland: employee pension and unemployment contributions for the year, to the cent — withheld by the employer on top of the tax card'}}, 'additionalProperties': False}
student_loan_repayment
Australian HELP/HECS study-loan repayment
Estimate the compulsory annual study or training loan repayment (HELP, HECS, VSL, SFSS, SSL, AASL) for an Australian resident from their repayment income, using the marginal system introduced in 2025-26 with effective-dated thresholds that roll over each financial year. Use it for "how much HELP/HECS will I repay" questions in AU; it does not cover the loan balance, indexation or voluntary repayments, and applies to Australia only. Repayment income is broader than taxable income — it adds back reportable super contributions, reportable fringe benefits, net investment loss and exempt foreign income; pass that combined figure.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['repaymentIncome'], 'properties': {'taxYear': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}$', 'examples': ['2025-26', '2026-27'], 'description': "Financial-year label like '2025-26'; omit to use the current Australian financial year"}, 'repaymentIncome': {'type': 'number', 'minimum': 0, 'description': 'ATO repayment income in AUD (taxable income + reportable super + reportable fringe benefits + net investment loss + exempt foreign income)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['country', 'taxYear', 'repaymentIncome', 'minThreshold', 'repayment', 'effectiveRate', 'source', 'dataVerifiedOn', 'mayBeStale', 'disclaimer'], 'properties': {'source': {'type': 'string', 'description': "The national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')"}, 'country': {'enum': ['AU'], 'type': 'string', 'description': 'Always AU — this tool is Australia-only'}, 'taxYear': {'type': 'string', 'description': 'Financial year whose thresholds were used'}, 'repayment': {'type': 'number', 'description': 'Compulsory repayment for the year (AUD)'}, 'sourceUrl': {'type': 'string', 'description': 'https link to the authority page the rate was verified against. Present only on rate answers backed by a verified ledger row — absent (never empty) otherwise, so its presence is itself the claim'}, 'disclaimer': {'type': 'string', 'description': 'General-information note that must accompany any figure shown to a person'}, 'mayBeStale': {'type': 'boolean', 'description': 'True once the verification date is over a year old — re-confirm with the authority'}, 'minThreshold': {'type': 'number', 'description': 'Income at or below which the repayment is nil (AUD)'}, 'effectiveRate': {'type': 'number', 'description': 'repayment ÷ repayment income, as a fraction'}, 'dataVerifiedOn': {'type': 'string', 'description': 'ISO date the rate data was last confirmed against the authority'}, 'repaymentIncome': {'type': 'number', 'description': 'Repayment income used (AUD)'}}, 'additionalProperties': False}
superannuation_estimate
Australian superannuation estimate
Estimate Australian superannuation for an employee: the compulsory Superannuation Guarantee contribution (12% from 2025-26), concessional (before-tax) contributions cap usage, the 15% in-fund contributions tax, and the Division 293 high-earner surcharge — all effective-dated so a future budget year is picked automatically. Use it for "how much super will I get / can I contribute / will I be taxed" questions in AU; it does not model fund fees, insurance, investment returns, non-concessional contributions or carry-forward caps, and applies to Australia only. Salary sacrifice reduces salary; a personal deductible contribution is a deduction against total assessable income. Both add to the concessional total. The Division 293 threshold is tested against taxable income plus LOW-TAX contributions — that is, concessional contributions excluding any excess over the cap, since the excess is already counted inside taxable income. ordinaryEarnings therefore counts toward the threshold; pass otherTaxableIncome only for income beyond salary, such as investment or business income.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['ordinaryEarnings'], 'properties': {'taxYear': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}$', 'examples': ['2025-26', '2026-27'], 'description': "Financial-year label like '2025-26'; omit to use the current Australian financial year"}, 'salarySacrifice': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Voluntary before-tax (concessional) contributions in AUD'}, 'ordinaryEarnings': {'type': 'number', 'minimum': 0, 'description': 'Ordinary time earnings the Superannuation Guarantee applies to, in AUD (usually salary/wages)'}, 'otherTaxableIncome': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Other taxable income in AUD — only used to test the Division 293 high-earner threshold'}, 'personalDeductible': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Personal contributions claimed as a tax deduction in AUD (also concessional)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['country', 'taxYear', 'sgRate', 'guaranteeableEarnings', 'guaranteeAmount', 'concessionalContributions', 'concessionalCap', 'excessConcessional', 'contributionsTax', 'div293Applies', 'div293Tax', 'source', 'dataVerifiedOn', 'mayBeStale', 'disclaimer'], 'properties': {'sgRate': {'type': 'number', 'description': 'Superannuation Guarantee rate applied, as a fraction'}, 'source': {'type': 'string', 'description': "The national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')"}, 'country': {'enum': ['AU'], 'type': 'string', 'description': 'Always AU — this tool is Australia-only'}, 'taxYear': {'type': 'string', 'description': 'Financial year whose parameters were used'}, 'div293Tax': {'type': 'number', 'description': 'Division 293 surcharge (extra 15%), 0 when it does not apply (AUD)'}, 'sourceUrl': {'type': 'string', 'description': 'https link to the authority page the rate was verified against. Present only on rate answers backed by a verified ledger row — absent (never empty) otherwise, so its presence is itself the claim'}, 'assumption': {'type': 'string', 'description': 'A stated assumption that materially affects the figures, when one applies (e.g. no carried-forward concessional cap)'}, 'disclaimer': {'type': 'string', 'description': 'General-information note that must accompany any figure shown to a person'}, 'mayBeStale': {'type': 'boolean', 'description': 'True once the verification date is over a year old — re-confirm with the authority'}, 'div293Applies': {'type': 'boolean', 'description': 'Whether the Division 293 high-earner surcharge applies'}, 'dataVerifiedOn': {'type': 'string', 'description': 'ISO date the rate data was last confirmed against the authority'}, 'concessionalCap': {'type': 'number', 'description': 'Concessional contributions cap for the year (AUD)'}, 'guaranteeAmount': {'type': 'number', 'description': 'Compulsory employer SG contribution for the year (AUD)'}, 'contributionsTax': {'type': 'number', 'description': '15% contributions tax on concessional contributions within the cap (AUD)'}, 'excessConcessional': {'type': 'number', 'description': 'Concessional contributions above the cap (AUD)'}, 'guaranteeableEarnings': {'type': 'number', 'description': 'Earnings the SG applied to after the maximum contribution base cap (AUD)'}, 'concessionalContributions': {'type': 'number', 'description': 'SG + salary sacrifice + personal deductible, all concessional (AUD)'}}, 'additionalProperties': False}
tax_rate_as_of
Historical tax rate lookup
Look up the GST/VAT standard rate that applied in a country ON A GIVEN DATE, rather than today's rate. Use it when reconciling or amending a past transaction, invoice or return — several countries changed rate recently (Estonia twice since 2024, Finland, Kazakhstan, Russia, Romania, Slovakia, Ghana, Israel, Ecuador), so the rate today is not the rate that applied then. For the current rate use tax_rate_lookup. The answer states plainly whether a real dated change backs it or whether only the present rate is on record.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['country', 'date'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'examples': ['2024-06-30'], 'description': "The date to resolve the rate for, as YYYY-MM-DD, e.g. '2024-06-30'"}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'maxLength': 2, 'minLength': 2, 'description': '2-letter ISO country code, e.g. FI, EE, KZ'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['country', 'date', 'standardRate', 'standardRateDisplay', 'effectiveFrom', 'effectiveTo', 'rateSince', 'rateUntil', 'isCurrent', 'datedChange', 'source', 'dataVerifiedOn', 'mayBeStale', 'disclaimer'], 'properties': {'date': {'type': 'string', 'description': 'The date resolved'}, 'source': {'type': 'string', 'description': "The national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')"}, 'country': {'type': 'string', 'description': 'Country the rate applies to'}, 'isCurrent': {'type': 'boolean', 'description': 'True when this is also the rate in force today'}, 'rateSince': {'type': 'string', 'description': 'ISO date this standard rate took effect — the start of the unbroken run at this rate, which can be earlier than effectiveFrom'}, 'rateUntil': {'type': ['string', 'null'], 'description': 'ISO date this standard rate stops applying, or null when no change is on record'}, 'sourceUrl': {'type': 'string', 'description': 'https link to the authority page the rate was verified against. Present only on rate answers backed by a verified ledger row — absent (never empty) otherwise, so its presence is itself the claim'}, 'disclaimer': {'type': 'string', 'description': 'General-information note that must accompany any figure shown to a person'}, 'mayBeStale': {'type': 'boolean', 'description': 'True once the verification date is over a year old — re-confirm with the authority'}, 'datedChange': {'type': 'boolean', 'description': 'True when a real recorded rate change backs this answer. FALSE means only the present rate is on record for this country, so an earlier change would not be visible here.'}, 'effectiveTo': {'type': ['string', 'null'], 'description': 'ISO date that record closed, or null if it is still open'}, 'standardRate': {'type': 'number', 'description': 'Standard rate in force on that date, as a fraction (0.24 = 24%)'}, 'effectiveFrom': {'type': 'string', 'description': 'ISO date the dated record that answered took effect. A new record can open without the standard rate moving (a reduced-rate change, or a new instrument restating the same rate), so for when THIS rate took effect read rateSince'}, 'dataVerifiedOn': {'type': 'string', 'description': 'ISO date the rate data was last confirmed against the authority'}, 'standardRateDisplay': {'type': 'string', 'description': 'The same rate formatted for reading'}}, 'additionalProperties': False}
tax_rate_lookup
Country tax rate lookup
Look up one country's headline tax rates: GST/VAT standard and reduced rates, top personal income tax rate, and company tax rate. Use it for a single country; to see several countries side by side use compare_countries, and to apply GST/VAT to an amount use compute_gst_vat. Rates come from a fixed dataset verified against the national tax authority — every answer names its source and verification date, and an unsupported country returns a clear error rather than a guess.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['country'], 'properties': {'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'examples': ['AU', 'GB', 'DE'], 'maxLength': 2, 'minLength': 2, 'description': '2-letter ISO 3166-1 code of the country to look up (case-insensitive)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['country', 'code', 'taxFamily', 'taxLocalName', 'standardRate', 'standardRateDisplay', 'reducedRates', 'incomeTopRate', 'companyRate', 'source', 'dataVerifiedOn', 'mayBeStale', 'disclaimer'], 'properties': {'code': {'type': 'string', 'description': '2-letter ISO country code'}, 'source': {'type': 'string', 'description': "The national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')"}, 'country': {'type': 'string', 'description': 'Country name'}, 'sourceUrl': {'type': 'string', 'description': 'https link to the authority page the rate was verified against. Present only on rate answers backed by a verified ledger row — absent (never empty) otherwise, so its presence is itself the claim'}, 'taxFamily': {'type': 'string', 'description': "Consumption-tax family, e.g. 'GST', 'VAT' or a non-VAT system like retail sales tax"}, 'disclaimer': {'type': 'string', 'description': 'General-information note that must accompany any figure shown to a person'}, 'mayBeStale': {'type': 'boolean', 'description': 'True once the verification date is over a year old — re-confirm with the authority'}, 'companyRate': {'type': 'string', 'description': 'Headline company tax rate (display string)'}, 'reducedRates': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Reduced rates as fractions; empty when none'}, 'standardRate': {'type': 'number', 'description': 'Standard consumption-tax rate as a fraction (0.1 = 10%)'}, 'taxLocalName': {'type': 'string', 'description': "The tax's local name, e.g. 'GST', 'USt'"}, 'incomeTopRate': {'type': 'string', 'description': 'Top personal income tax rate (display string; may note surcharges)'}, 'dataVerifiedOn': {'type': 'string', 'description': 'ISO date the rate data was last confirmed against the authority'}, 'standardRateDisplay': {'type': 'string', 'description': 'Standard rate formatted for display'}}, 'additionalProperties': False}
Geändert
cgt_estimate
1. October 2026 02:52
Geändert
company_tax_estimate
1. October 2026 02:52
Geändert
income_tax_estimate
1. October 2026 02:52
Geändert
tax_rate_as_of
1. October 2026 02:52
Geändert
superannuation_estimate
25. September 2026 03:01
Geändert
student_loan_repayment
25. September 2026 03:01
Geändert
cgt_estimate
25. September 2026 03:01
Geändert
company_tax_estimate
25. September 2026 03:01
Geändert
income_tax_estimate
25. September 2026 03:01
Geändert
compare_countries
25. September 2026 03:01
Geändert
compute_gst_vat
25. September 2026 03:01
Geändert
tax_rate_lookup
25. September 2026 03:01
Geändert
tax_rate_as_of
25. September 2026 03:01
Hinzugefügt
superannuation_estimate
17. September 2026 12:33
Hinzugefügt
student_loan_repayment
17. September 2026 12:33
Hinzugefügt
cgt_estimate
17. September 2026 12:33
Hinzugefügt
company_tax_estimate
17. September 2026 12:33
Hinzugefügt
income_tax_estimate
17. September 2026 12:33
Hinzugefügt
compare_countries
17. September 2026 12:33
Hinzugefügt
compute_gst_vat
17. September 2026 12:33
Hinzugefügt
tax_rate_lookup
17. September 2026 12:33
Hinzugefügt
tax_rate_as_of
17. September 2026 12:33