Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

AI2Fin (2Fin) Tax MCP

REMOTE · TAXMCP.AI2FIN.COM

Free public tax MCP: GST/VAT, income, company & capital-gains tax for 50+ countries, source-cited.

0 this week 87 Trust /100

Last scanned (12 hours ago)

Scores higher than 94% of remote servers

Reachable. Last reached 7 Nov 2026.

Category Finance and Payments

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security83
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability76
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4483 tokens (~448/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
What we tested

Checks we ran (13)

  • TLS certificate
  • Authorization
  • HTTPS
  • HSTS header
  • DNSSEC
  • Transport
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this hosted endpoint (2)

  • Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
  • Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 6 Nov 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Oct 26 +2
    • HSTS header: fail → pass ▲ security
  • 12 Oct 26 0
    • Tool “income_tax_estimate” rewrote its description, which is the text the model reads security
    • “income_tax_estimate” added an optional parameter “incomeType” cosmetic
    • “income_tax_estimate” reworded the description of “age” cosmetic
    • “income_tax_estimate” reworded the description of “taxYear” cosmetic
  • 10 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “cgt_estimate” rewrote its description, which is the text the model reads security
    • Tool “company_tax_estimate” rewrote its description, which is the text the model reads security
    • Tool “compare_countries” rewrote its description, which is the text the model reads security
    • Tool “compute_gst_vat” rewrote its description, which is the text the model reads security
    • Tool “income_tax_estimate” rewrote its description, which is the text the model reads security
    • Tool “student_loan_repayment” rewrote its description, which is the text the model reads security
    • Tool “superannuation_estimate” rewrote its description, which is the text the model reads security
    • Tool “tax_facts” rewrote its description, which is the text the model reads security
    • Tool “tax_rate_as_of” rewrote its description, which is the text the model reads security
    • Tool “tax_rate_lookup” rewrote its description, which is the text the model reads security
    • Schema quality: 380 → 427 ▼ functional
    • “compare_countries” added an optional parameter “income” cosmetic
    • “compare_countries” added an optional parameter “taxYear” cosmetic
    • “tax_facts” added an optional parameter “topic” cosmetic
  • 7 Oct 26 +2
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “cgt_estimate” rewrote its description, which is the text the model reads security
    • Tool “company_tax_estimate” rewrote its description, which is the text the model reads security
    • Tool “compute_gst_vat” rewrote its description, which is the text the model reads security
    • Tool “income_tax_estimate” rewrote its description, which is the text the model reads security
    • Tool “tax_rate_lookup” rewrote its description, which is the text the model reads security
    • Schema quality: 306 → 380 ▼ functional
    • First check of Schema quality: 100 functional
    • “cgt_estimate” added an optional parameter “asset” cosmetic
    • “cgt_estimate” added an optional parameter “holdingMonths” cosmetic
    • “compute_gst_vat” added an optional parameter “region” cosmetic
    • “income_tax_estimate” added an optional parameter “region” cosmetic
    • “tax_rate_lookup” added an optional parameter “region” cosmetic
    • “cgt_estimate” reworded the description of “capitalLosses” cosmetic
    • “cgt_estimate” reworded the description of “costBase” cosmetic
    • “cgt_estimate” reworded the description of “country” cosmetic
    • “cgt_estimate” reworded the description of “heldMoreThan12Months” cosmetic
    • “cgt_estimate” reworded the description of “income” cosmetic
    • “company_tax_estimate” reworded the description of “country” cosmetic
    • “company_tax_estimate” reworded the description of “smallBusiness” cosmetic
    • “income_tax_estimate” reworded the description of “country” cosmetic
    • “income_tax_estimate” reworded the description of “taxYear” cosmetic
    • Tool “cgt_estimate” changed its title: Capital gains tax estimate (AU, FI) → Capital gains tax estimate (71 countries) cosmetic
    • Tool “company_tax_estimate” changed its title: Company tax estimate (AU, US, GB, IN, CA, FI) → Company tax estimate (139 countries) cosmetic
    • Tool “income_tax_estimate” changed its title: Income tax & take-home estimate (AU, NZ, GB, IN, US, FI) → Income tax & take-home estimate (57 countries) cosmetic
  • 30 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “cgt_estimate” rewrote its description, which is the text the model reads security
    • Tool “company_tax_estimate” rewrote its description, which is the text the model reads security
    • Tool “income_tax_estimate” rewrote its description, which is the text the model reads security
    • Schema quality: 228 → 306 ▼ functional
    • Server version: 0.4.0 → 0.5.0 functional
    • “income_tax_estimate” added an optional parameter “municipality” cosmetic
    • “cgt_estimate” added an optional parameter “country” cosmetic
    • “cgt_estimate” added an optional parameter “otherCapitalIncome” cosmetic
    • “cgt_estimate” added an optional parameter “saleExpenses” cosmetic
    • “cgt_estimate” added an optional parameter “taxYear” cosmetic
    • “cgt_estimate” added an optional parameter “totalProceedsThisYear” cosmetic
    • “cgt_estimate” added an optional parameter “yearsHeld” cosmetic
    • “income_tax_estimate” added an optional parameter “age” cosmetic
    • “income_tax_estimate” added an optional parameter “church” cosmetic
    • “cgt_estimate” reworded the description of “capitalLosses” cosmetic
    • “cgt_estimate” reworded the description of “costBase” cosmetic
    • “cgt_estimate” reworded the description of “heldMoreThan12Months” cosmetic
    • “cgt_estimate” reworded the description of “income” cosmetic
    • “cgt_estimate” reworded the description of “proceeds” cosmetic
    • “income_tax_estimate” reworded the description of “country” cosmetic
    • “income_tax_estimate” reworded the description of “taxYear” cosmetic
    • “cgt_estimate” made “heldMoreThan12Months” optional cosmetic
    • “cgt_estimate” made “income” optional cosmetic
    • Tool “cgt_estimate” changed its title: Australian capital gains tax estimate → Capital gains tax estimate (AU, FI) cosmetic
    • Tool “company_tax_estimate” changed its title: Company tax estimate (AU, US, GB, IN, CA) → Company tax estimate (AU, US, GB, IN, CA, FI) cosmetic
    • Tool “income_tax_estimate” changed its title: Income tax & take-home estimate (AU, NZ, GB, IN, US) → Income tax & take-home estimate (AU, NZ, GB, IN, US, FI) cosmetic
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 7 Nov 2026 · Probed https://taxmcp.ai2fin.com

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=ai2fin.com CN=WE1,O=Google Trust Services,C=US 26 Oct 2026 24 Jan 2027 ECDSA 256 ECDSA-SHA256 646c59631d2f7af50e19b7ff67595c45
SANs: ai2fin.com, taxmcp.ai2fin.com, *.taxmcp.ai2fin.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of taxmcp.ai2fin.com. — Secure

Zone DS Keys Algorithms Outcome
. Trust anchor 20326, 38696 8, 8 Verified
com. DS published 19718 13 Verified
ai2fin.com. DS published 2371 13 Verified
taxmcp.ai2fin.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=31536000
x-content-type-options nosniff

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://taxmcp.ai2fin.com Verified 200
http (plaintext) http://taxmcp.ai2fin.com HTTPS enforced 301 https://taxmcp.ai2fin.com/
MCP tools · 10 exposed · ~4,108 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
cgt_estimate ~869

Estimate capital gains tax on one sale of shares or property by a resident individual, for 71 countries (AE, AR, AT, AU, BE, BG, BR, CA, CH, CL, CN, CO, CY, CZ, DE, DK, EE, EG, ES, FI, FR, GB, GH, GR, GT, HK, HR, HU, ID, IE, IL, IN, IS, IT, JM, JP, KE, KR, LI, LK, LT, LU, LV, MT, MU, MX, MY, NG, NL, NO, NZ, PH, PK, PL, PT, QA, RO, RS, RU, SA, SE, SG, SI, SK, TR, TW, TZ, UA, UG, US, ZA). Where the country's rule can be computed the answer is a figure; where it depends on facts the engine cannot model, the answer is the rule itself (rate, holding period, annual exemption, main residence) with the reason — never a borrowed number. Any other country returns 'not covered'. Pass income (other taxable income for the year) where the gain is taxed at marginal rates, and heldMoreThan12Months or holdingMonths where the holding period matters (the Australian 50% discount, the US long-term rate). capitalLosses apply before any discount. Finland (FI) adds its own detail: the better of the actual cost or the deemed acquisition cost (hankintameno-olettama: 20% of the price, 40% after 10 years), the 1 000 € small-disposals rule and 30%/34% capital income tax — pass yearsHeld, and otherCapitalIncome if there is any; costBase may be omitted there. Each answer cites the capital-gains source and date for that country — not the GST/VAT one. For pay without an asset sale use income_tax_estimate. Non-resident rules are out of scope. Results may include one sourced background fact (relatedFact); the figures do not depend on it.

NameTypeReqDescription
assetstring–What was sold: 'shares' (shares and funds) or 'property' (real estate). Rules differ by asset in many countries
capitalLossesnumber–Capital losses to offset — applied before any discount; FI: from this year or carried forward (five years)
costBasenumber–What the asset cost, in local currency, including eligible incidental costs. Required except for FI, where omitting it uses the deemed acquisition cost (pass FI buying and selling costs as saleExpens…
countrystring–2-letter ISO code of a covered country (upper case); defaults to AU
heldMoreThan12Monthsboolean–True when the asset was held at least 12 months (e.g. the AU 50% discount, the US long-term rate). Shorthand for holdingMonths: true = 12, false = 0
holdingMonthsinteger–Whole months the asset was held; overrides heldMoreThan12Months
incomenumber–Other taxable income for the year, in local currency — sets the marginal rate where the gain is taxed as income (e.g. AU, US short-term). Required where the rule needs it; the answer says so
otherCapitalIncomenumber–FI: other capital income this year (dividends, rent, other gains) — decides how much of the gain falls above the 30 000 € threshold
proceedsnumberyesSale price of the asset, in local currency
saleExpensesnumber–FI: brokerage, fees and other costs of buying and selling
taxYearstring–FI: calendar tax year like '2026'; omit for the current year
totalProceedsThisYearnumber–FI: the year's total sale prices, this sale included, for the 1 000 € small-disposals rule; omit when this is the only sale
yearsHeldnumber–FI: whole years owned — 10 or more raises the deemed acquisition cost from 20% to 40% of the price
NameTypeReqDescription
assumptionsarray–Assumptions the answer depends on — relay them with the figure
cgtPayablenumber|nullyesExtra tax caused by the gain, in local currency; null when rule-only
costDeductednumber–FI: the cost deducted from the price
countrystringyesCountry estimated (2-letter ISO code)
currencystring–Currency of every monetary field
dataVerifiedOnstringyesISO date the rate data was last confirmed against the authority
disclaimerstringyesGeneral-information note that must accompany any figure shown to a person
discountAppliedbooleanyesWhether a discount or inclusion rate reduced the taxable gain (e.g. the AU 50% discount). Always false for FI
exemptionAppliednumber|null–Annual exempt amount or allowance used, where there is one
grossGainnumber|nullyesProceeds minus cost (FI: minus the larger of actual or deemed cost). Floored at 0, local currency
lossnumber–FI: the loss on this sale, if any (only ever from the actual cost)
lossDeductibleboolean–FI: whether that loss can be deducted
lossOffsetnumber|nullyesCapital losses actually applied
mayBeStalebooleanyesTrue once the verification date is over a year old — re-confirm with the authority
methodstring–FI: whether the actual cost or the deemed acquisition cost was deducted
notesarray–FI: rules that decided the answer, in plain words
reasonstring|null–Why no figure was computed (rule-only), in plain words
relatedFactobject–One sourced background fact about the country's capital gains tax; the figures do not depend on it. Absent when no sourced fact fits.
ruleobject|null–The country's rule as written, for relaying — especially when status is rule-only
smallDisposalsExemptboolean–FI: true when the year's sale prices total 1 000 € or less, making every gain tax-free
sourcestringyesThe national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')
sourceUrlstring–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
statusstringyes'computed' = a figure; 'rule-only' = the rule text and the reason no figure is given (cgtPayable and taxableGain are then null)
stepstring|null–Which holding-period step applied, when the rule has steps
taxYearstring|nullyesTax year whose rules were used, when the rule is year-based
taxableGainnumber|nullyesGain the tax was charged on; null when rule-only

No examples provided.

company_tax_estimate ~288

Estimate company/corporate income tax on an annual profit at the headline rate for 139 countries (28 verified against the national authority; the rest are indicative OECD headline rates, and the answer says "not verified — confirm with" the authority). Use it for company profit questions; individuals belong to income_tax_estimate. smallBusiness applies the small-company rate only where it covers all of the company's income (AU, IN); where the reduced rate is a profit band (UK small profits, the Canadian small-business deduction and similar) it is noted, not applied. Headline-rate arithmetic only: state and provincial tax, surcharges and marginal relief are named in the note, not computed. Each answer cites the company-tax source and date — not the GST/VAT one. A negative profit returns an explanation (losses carry forward), never a negative tax; a country not covered says so. Results may include one sourced background fact (relatedFact); the figures do not depend on it.

NameTypeReqDescription
countrystringyes2-letter ISO code of a covered country (upper case)
profitnumberyesAnnual taxable profit in local currency; a negative value (a loss) returns an explanatory message instead of tax
smallBusinessboolean–Apply the small-company rate — honoured only where it covers all income (AU, IN); elsewhere the reduced rate is noted instead
NameTypeReqDescription
afterTaxnumberyesProfit after tax
countrystringyesCountry estimated (2-letter ISO code)
dataVerifiedOnstringyesISO date the rate data was last confirmed against the authority
disclaimerstringyesGeneral-information note that must accompany any figure shown to a person
effectiveFromstring–ISO date the rate set in use took effect
mayBeStalebooleanyesTrue once the verification date is over a year old — re-confirm with the authority
notestringyesWhat the headline calculation excludes (state/provincial tax, surcharge/cess, marginal relief …)
rateAppliednumberyesRate actually applied, as a fraction
relatedFactobject–One sourced background fact about the country's company tax; the figures do not depend on it. Absent when no sourced fact fits.
smallCompanyRatenumber–The small-company rate on file, when there is one
sourcestringyesThe national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')
sourceUrlstring–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
standardRatenumber–The standard (headline) rate, as a fraction
taxnumberyesCompany tax on the profit (local currency, rounded)
taxLabelstringyesThe country's name for the tax, e.g. 'Corporation Tax'
usedSmallRateboolean–Whether the small-company rate was applied

No examples provided.

compare_countries ~370

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. Pass income to add, per country, the income_tax_estimate result for that income (income tax, total tax, take-home, average rate, with its own source). The same number is read in each country's own currency and is not converted between currencies. Income tax is estimated for 57 countries; any other row reports 'not covered' for that part and still shows its headline rates. Codes the dataset does not cover are reported back in unmatchedCodes rather than silently dropped; every matched row cites its national tax authority. Results may include one sourced background fact (relatedFact); the figures do not depend on it.

NameTypeReqDescription
countriesarrayyesCountries to compare — two or more makes a meaningful comparison
incomenumber–Optional gross annual income, before tax. The same number is applied in EACH country's own local currency — it is NOT converted (120000 means AUD 120,000 in AU, GBP 120,000 in GB and SGD 120,000 in S…
taxYearstring–Optional, only with income: the tax-year label passed to the income-tax estimate for every country, e.g. '2025-26' (AU/NZ/GB/IN) or '2026' (calendar-year countries). Labels differ by country; a count…
NameTypeReqDescription
dataVerifiedOnstringyesISO date the rate data was last confirmed against the authority
disclaimerstringyesGeneral-information note that must accompany any figure shown to a person
mayBeStalebooleanyesTrue once the verification date is over a year old — re-confirm with the authority
relatedFactobject–One sourced background fact about the country's consumption tax; the figures do not depend on it. Absent when no sourced fact fits.
rowsarrayyesOne row per matched country
sourcestringyesThe national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')
sourceUrlstring–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
unmatchedCodesarrayyesRequested codes with no data — nothing was guessed for these

No examples provided.

compute_gst_vat ~354

Add or remove a country's GST/VAT — or its other national consumption tax, such as Japan's consumption tax or Malaysia's SST — 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 current standard rate, rounded to 2 decimals, in the local currency. Pass region for a state or provincial rate (CA, US): in Canada that is GST plus the provincial tax, in the US the state sales tax. A country with no national rate (the US without a region, or a country with no consumption tax) returns an explanatory error instead of a wrong number. Results may include one sourced background fact (relatedFact); the figures do not depend on it.

NameTypeReqDescription
amountnumberyesThe monetary amount in the local currency — tax-exclusive when mode=add, tax-inclusive when mode=remove
countrystringyes2-letter ISO 3166-1 code of the country whose GST/VAT rate applies (case-insensitive)
modestring–'add' puts tax on top of a net amount; 'remove' extracts the tax already inside a gross amount
regionstring–Optional state or province code, for sub-national sales tax. Held for CA (13 provinces and territories), US (51 states incl. DC). E.g. 'ON' (Ontario) with country CA, or 'CA' (California) with countr…
NameTypeReqDescription
codestringyes2-letter ISO country code
countrystringyesCountry name
dataVerifiedOnstringyesISO date the rate data was last confirmed against the authority
disclaimerstringyesGeneral-information note that must accompany any figure shown to a person
grossnumberyesAmount including tax (local currency, 2 dp)
mayBeStalebooleanyesTrue once the verification date is over a year old — re-confirm with the authority
modestringyesWhich conversion was performed
netnumberyesAmount before tax (local currency, 2 dp)
ratenumberyesStandard rate applied, as a fraction
regionstring–State or province whose rate was applied — present only when region was passed
regionNamestring–What applies in that region, in a sentence
relatedFactobject–One sourced background fact about the country's consumption tax; the figures do not depend on it. Absent when no sourced fact fits.
sourcestringyesThe national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')
sourceUrlstring–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
taxnumberyesThe GST/VAT portion (local currency, 2 dp)
taxLocalNamestringyesThe tax's local name, e.g. 'GST', 'VAT'

No examples provided.

income_tax_estimate ~944

Estimate personal income tax and take-home pay from gross annual income for 57 countries, using the engine's effective-dated brackets with each country's own levies, offsets and social contributions as its scheme defines them. Covered: AE, AR, AT, AU, BD, BE, BR, CA, CH, CL, CN, CO, CR, CZ, DE, DK, EE, EG, ES, FI, FR, GB, GR, GT, HU, ID, IE, IL, IN, IS, IT, JM, JP, KE, KR, LU, LV, MX, MY, NG, NL, NO, NZ, PH, PK, PL, PT, SA, SE, SG, SI, SK, TH, TR, US, VN, ZA. Any other country returns 'not covered' rather than a guess; its headline rates live in tax_rate_lookup. Pass region for a state, province or nation where the scheme has one (CA: 13 regions, e.g. AB, BC, MB; ES: 3 regions, e.g. AN, CT, MD; GB: SCT (Scotland); US: 51 regions, e.g. AK, AL, AR); without it the answer is national only and says so in its assumptions. 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; Finland also returns the tax-card rate (veroprosentti). The figure is for EMPLOYMENT income (salary or wages) wherever a country applies an employee-only item — India's salary standard deduction, UK Class 1 National Insurance, US FICA — and the first assumption says so. For freelance or self-employed profit pass incomeType "self-employed": India and the UK compute it, countries where it is taxed the same answer it, and the rest refuse with what differs rather than return a salaried figure. This is a resident-individual estimate, not a filing calculation: relay the assumptions it returns. Each answer cites the income-tax source and date for that country — not the GST/VAT one. For AU HELP/HECS use student_loan_repayment. Results may include one sourced background fact (relatedFact); the figures do not depend on it.

NameTypeReqDescription
ageinteger–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 (18–64 from 2026, when t…
churchstring–Finland only: parish membership, for church tax. Needs `municipality`, because each parish sets its own rate
countrystringyes2-letter ISO code of a covered country (upper case)
incomenumberyesGross annual income in local currency, before tax
incomeTypestring–What the income is: "employment" (salary or wages, the default) or "self-employed" (freelance or sole-trader profit after business expenses). Countries that do not model self-employed income refuse i…
municipalitystring–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; om…
regionstring–Optional state, province or nation code, where the country's scheme has one: CA: 13 regions, e.g. AB, BC, MB; ES: 3 regions, e.g. AN, CT, MD; GB: SCT (Scotland); US: 51 regions, e.g. AK, AL, AR
taxYearstring–Tax year as people write it, e.g. '2026-27' or '2026/27' (AU/NZ/GB/IN), '2026' (calendar-year countries), 'YA 2027' (Singapore), 'Tax Year 2027' (Pakistan, which names a year by its end); omit for th…
NameTypeReqDescription
assumptionsarray–Assumptions the figures depend on — relay them with the numbers; the first is always the income basis
averageRatenumber–Total tax over gross, as a fraction
churchRatenumber–Finland: church-tax rate applied, as a fraction (0 for a non-member)
countrystringyesCountry estimated (2-letter ISO code)
currencystringyesCurrency of every monetary field
dataVerifiedOnstringyesISO date the rate data was last confirmed against the authority
disclaimerstringyesGeneral-information note that must accompany any figure shown to a person
grossnumberyesGross annual income used
incomeBasisstring–What income the figure was computed for: employment (employee-only items applied), self-employed, or any (nothing depends on the income type). The first assumption says the same in words
incomeTaxnumberyesIncome tax before levies and offsets
leviesarrayyesCharges on top of the offset tax, by name (social contributions, regional tax) — empty array when none apply
litonumberyesKept for compatibility: AU Low Income Tax Offset only, 0 for every other country. See `offsets` for the general figure.
marginalRatenumber–Marginal rate on the next unit of income, as a fraction
mayBeStalebooleanyesTrue once the verification date is over a year old — re-confirm with the authority
medicareLevynumberyesKept for compatibility: AU Medicare levy only, 0 for every other country. See `levies` for the general figure.
municipalRatenumber–Finland: municipal income-tax rate applied, as a fraction
municipalitystring–Finland: the municipality whose rates were used, or "national average"
offsetsarrayyesCredits that reduced the tax, by name — empty array when none apply
regionstring–State, province or nation whose tax was included — present only when region was passed
relatedFactobject–One sourced background fact about the country's income tax; the figures do not depend on it. Absent when no sourced fact fits.
separatelyWithheldnumber–Finland: employee pension and unemployment contributions for the year, to the cent — withheld by the employer on top of the tax card
sourcestringyesThe national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')
sourceUrlstring–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
takeHomenumberyesGross minus total tax
taxCardRatenumber–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
taxCardWithheldnumber–Finland: the tax the tax card covers for the year, to the cent (state, municipal, church, health insurance and YLE tax, less the credit)
taxYearstringyesTax year the brackets belong to
taxablenumberyesIncome after any pre-band deduction (UK personal allowance, IN standard deduction, US standard deduction)
totalTaxnumberyesTotal tax after levies and offsets

No examples provided.

student_loan_repayment ~223

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. Results may include one sourced background fact (relatedFact); the figures do not depend on it.

NameTypeReqDescription
repaymentIncomenumberyesATO repayment income in AUD (taxable income + reportable super + reportable fringe benefits + net investment loss + exempt foreign income)
taxYearstring–Financial-year label like '2025-26'; omit to use the current Australian financial year
NameTypeReqDescription
countrystringyesAlways AU — this tool is Australia-only
dataVerifiedOnstringyesISO date the rate data was last confirmed against the authority
disclaimerstringyesGeneral-information note that must accompany any figure shown to a person
effectiveRatenumberyesrepayment ÷ repayment income, as a fraction
mayBeStalebooleanyesTrue once the verification date is over a year old — re-confirm with the authority
minThresholdnumberyesIncome at or below which the repayment is nil (AUD)
relatedFactobject–One sourced background fact about the country's study-loan repayment; the figures do not depend on it. Absent when no sourced fact fits.
repaymentnumberyesCompulsory repayment for the year (AUD)
repaymentIncomenumberyesRepayment income used (AUD)
sourcestringyesThe national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')
sourceUrlstring–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
taxYearstringyesFinancial year whose thresholds were used

No examples provided.

superannuation_estimate ~368

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. Results may include one sourced background fact (relatedFact); the figures do not depend on it.

NameTypeReqDescription
ordinaryEarningsnumberyesOrdinary time earnings the Superannuation Guarantee applies to, in AUD (usually salary/wages)
otherTaxableIncomenumber–Other taxable income in AUD — only used to test the Division 293 high-earner threshold
personalDeductiblenumber–Personal contributions claimed as a tax deduction in AUD (also concessional)
salarySacrificenumber–Voluntary before-tax (concessional) contributions in AUD
taxYearstring–Financial-year label like '2025-26'; omit to use the current Australian financial year
NameTypeReqDescription
assumptionstring–A stated assumption that materially affects the figures, when one applies (e.g. no carried-forward concessional cap)
concessionalCapnumberyesConcessional contributions cap for the year (AUD)
concessionalContributionsnumberyesSG + salary sacrifice + personal deductible, all concessional (AUD)
contributionsTaxnumberyes15% contributions tax on concessional contributions within the cap (AUD)
countrystringyesAlways AU — this tool is Australia-only
dataVerifiedOnstringyesISO date the rate data was last confirmed against the authority
disclaimerstringyesGeneral-information note that must accompany any figure shown to a person
div293AppliesbooleanyesWhether the Division 293 high-earner surcharge applies
div293TaxnumberyesDivision 293 surcharge (extra 15%), 0 when it does not apply (AUD)
excessConcessionalnumberyesConcessional contributions above the cap (AUD)
guaranteeAmountnumberyesCompulsory employer SG contribution for the year (AUD)
guaranteeableEarningsnumberyesEarnings the SG applied to after the maximum contribution base cap (AUD)
mayBeStalebooleanyesTrue once the verification date is over a year old — re-confirm with the authority
relatedFactobject–One sourced background fact about the country's superannuation; the figures do not depend on it. Absent when no sourced fact fits.
sgRatenumberyesSuperannuation Guarantee rate applied, as a fraction
sourcestringyesThe national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')
sourceUrlstring–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
taxYearstringyesFinancial year whose parameters were used

No examples provided.

tax_facts ~238

Sourced facts about a country's tax system: when and why its GST/VAT was introduced, what it replaced, and memorable, true stories (court cases, elections, odd rulings) — each fact linked to its own source. Omit country for a primer on what a consumption tax is plus famous tax stories from history. Pass topic to keep only facts about one tax (each fact lists its topics). Use it for background, explainers, teaching or a conversation opener; for any rate or amount use tax_rate_lookup, compute_gst_vat or the estimate tools, because facts are dated stories, not live figures. Countries without curated facts return the list of countries that have them rather than an invented one.

NameTypeReqDescription
countrystring–2-letter ISO code, e.g. AU, GB, JP. Omit for the global primer and famous tax stories
topicstring–Optional: only facts about this tax — 'gst' (GST/VAT and other consumption taxes), 'income', 'company', 'cgt', 'super', 'studentloan' or 'general'. Omit for every fact
NameTypeReqDescription
codestring–2-letter ISO code (country scope only)
countriesWithFactsarrayyesEvery country code that has curated facts
countrystring–Country name (country scope only)
disclaimerstringyesNote that must accompany facts shown to a person
factsarrayyesThe facts, each with its own source. Show the source alongside any fact you repeat
originStorystring–How it came to be, in a paragraph
originYearstring–Year the country’s GST/VAT began, when on record
primerstring–What a consumption tax is (global scope only)
replacedstring–The tax it replaced, when on record
scopestringyesWhether these are one country’s facts or the global set
topicstring–The topic filter applied, when one was passed

No examples provided.

tax_rate_as_of ~194

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. Results may include one sourced background fact (relatedFact); the figures do not depend on it.

NameTypeReqDescription
countrystringyes2-letter ISO country code, e.g. FI, EE, KZ
datestringyesThe date to resolve the rate for, as YYYY-MM-DD, e.g. '2024-06-30'
NameTypeReqDescription
countrystringyesCountry the rate applies to
dataVerifiedOnstringyesISO date the rate data was last confirmed against the authority
datestringyesThe date resolved
datedChangebooleanyesTrue 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.
disclaimerstringyesGeneral-information note that must accompany any figure shown to a person
effectiveFromstringyesISO 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…
effectiveTostring|nullyesISO date that record closed, or null if it is still open
isCurrentbooleanyesTrue when this is also the rate in force today
mayBeStalebooleanyesTrue once the verification date is over a year old — re-confirm with the authority
rateSincestringyesISO date this standard rate took effect — the start of the unbroken run at this rate, which can be earlier than effectiveFrom
rateUntilstring|nullyesISO date this standard rate stops applying, or null when no change is on record
relatedFactobject–One sourced background fact about the country's consumption tax; the figures do not depend on it. Absent when no sourced fact fits.
sourcestringyesThe national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')
sourceUrlstring–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
standardRatenumberyesStandard rate in force on that date, as a fraction (0.24 = 24%)
standardRateDisplaystringyesThe same rate formatted for reading

No examples provided.

tax_rate_lookup ~260

Look up one country's headline tax rates: GST/VAT standard and reduced rates, top personal income tax rate, and company tax rate — national rates for 193 countries, plus state and provincial sales tax for CA and US when you pass region. 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. Results may include one sourced background fact (relatedFact); the figures do not depend on it.

NameTypeReqDescription
countrystringyes2-letter ISO 3166-1 code of the country to look up (case-insensitive)
regionstring–Optional state or province code, for sub-national sales tax. Held for CA (13 provinces and territories), US (51 states incl. DC). E.g. 'ON' (Ontario) with country CA, or 'CA' (California) with countr…
NameTypeReqDescription
codestringyes2-letter ISO country code
companyRatestringyesHeadline company tax rate (display string)
countrystringyesCountry name
dataVerifiedOnstringyesISO date the rate data was last confirmed against the authority
disclaimerstringyesGeneral-information note that must accompany any figure shown to a person
incomeTopRatestringyesTop personal income tax rate (display string; may note surcharges)
mayBeStalebooleanyesTrue once the verification date is over a year old — re-confirm with the authority
reducedRatesarrayyesReduced rates as fractions; empty when none
regionobject–Present only when region was passed: the state or provincial sales tax, with its OWN source and date
relatedFactobject–One sourced background fact about the country's consumption tax; the figures do not depend on it. Absent when no sourced fact fits.
sourcestringyesThe national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')
sourceUrlstring–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
standardRatenumberyesStandard consumption-tax rate as a fraction (0.1 = 10%)
standardRateDisplaystringyesStandard rate formatted for display
taxFamilystringyesConsumption-tax family, e.g. 'GST', 'VAT' or a non-VAT system like retail sales tax
taxLocalNamestringyesThe tax's local name, e.g. 'GST', 'USt'

No examples provided.

Install

How do I install the AI2Fin (2Fin) Tax MCP server?

AI2Fin (2Fin) Tax MCP is a hosted endpoint at https://taxmcp.ai2fin.com/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · taxmcp.ai2fin.com

# add to Claude Code
claude mcp add --transport http com-ai2fin-ai2fin-tax-mcp 'https://taxmcp.ai2fin.com/'
Common questions

What is the AI2Fin (2Fin) Tax MCP server?

AI2Fin (2Fin) Tax MCP is listed in the public MCP registry as com.ai2fin/ai2fin-tax-mcp. Free public tax MCP: GST/VAT, income, company & capital-gains tax for 50+ countries, source-cited. This page covers its hosted endpoint (https://taxmcp.ai2fin.com).

Is the AI2Fin (2Fin) Tax MCP server safe to use?

AI2Fin (2Fin) Tax MCP scores 87 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the AI2Fin (2Fin) Tax MCP server expose?

AI2Fin (2Fin) Tax MCP exposes 10 tools: tax_rate_as_of, tax_rate_lookup, compute_gst_vat, compare_countries, income_tax_estimate, and 5 more. Their descriptions and schemas cost roughly 4,108 tokens of context every time the server is loaded.

Does the AI2Fin (2Fin) Tax MCP server require authentication?

No. We connected to AI2Fin (2Fin) Tax MCP without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the AI2Fin (2Fin) Tax MCP server still maintained?

AI2Fin (2Fin) Tax MCP is still listed as active in the MCP registry. We last reached this channel on 7 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What did VerifyMCP test on the AI2Fin (2Fin) Tax MCP server?

VerifyMCP ran 13 checks on AI2Fin (2Fin) Tax MCP, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.