Skip to main content
Glama

AI2Fin (2Fin) Tax MCP

Multi-country tax comparison

compare_countries
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
incomeNoOptional 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 SG). When given, each row adds an income-tax estimate for that income
taxYearNoOptional, 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 country without that year reports the years it has instead of a figure. Omit for each country's current tax year
countriesYesCountries to compare — two or more makes a meaningful comparison

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
rowsYesOne row per matched country
sourceYesThe national tax authority the figures were verified against (e.g. 'ATO — ato.gov.au')
sourceUrlNohttps 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
disclaimerYesGeneral-information note that must accompany any figure shown to a person
mayBeStaleYesTrue once the verification date is over a year old — re-confirm with the authority
relatedFactNoOne sourced background fact about the country's consumption tax; the figures do not depend on it. Absent when no sourced fact fits.
dataVerifiedOnYesISO date the rate data was last confirmed against the authority
unmatchedCodesYesRequested codes with no data — nothing was guessed for these

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedInput schema / properties / income
      Added value: +{
      +  "description": "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 SG). When given, each row adds an income-tax estimate for that income",
      +  "examples": [
      +    120000
      +  ],
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / taxYear
      Added value: +{
      +  "description": "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 country without that year reports the years it has instead of a figure. Omit for each country's current tax year",
      +  "type": "string"
      +}
    • addedOutput schema / properties / relatedFact
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "One sourced background fact about the country's consumption tax; the figures do not depend on it. Absent when no sourced fact fits.",
      +  "properties": {
      +    "context": {
      +      "description": "Present on a state or provincial answer: the fact is about the country as a whole",
      +      "enum": [
      +        "national"
      +      ],
      +      "type": "string"
      +    },
      +    "country": {
      +      "description": "2-letter ISO code of the country the fact is about",
      +      "type": "string"
      +    },
      +    "detail": {
      +      "description": "Longer supporting detail, when the corpus has it",
      +      "type": "string"
      +    },
      +    "fact": {
      +      "description": "The fact, in one or two sentences",
      +      "type": "string"
      +    },
      +    "kind": {
      +      "description": "'origin' = when the tax began and what it replaced; 'anniversary' = the same, on the anniversary of its start date; 'story' = a dated story from the facts corpus",
      +      "enum": [
      +        "origin",
      +        "story",
      +        "anniversary"
      +      ],
      +      "type": "string"
      +    },
      +    "more": {
      +      "description": "The tool that returns the full sourced fact set for this country",
      +      "enum": [
      +        "tax_facts"
      +      ],
      +      "type": "string"
      +    },
      +    "sourceName": {
      +      "description": "Who the fact is sourced to",
      +      "type": "string"
      +    },
      +    "sourceUrl": {
      +      "description": "Link to that source — always present",
      +      "type": "string"
      +    },
      +    "topic": {
      +      "description": "Which tax the fact is about",
      +      "enum": [
      +        "gst",
      +        "income",
      +        "company",
      +        "cgt",
      +        "super",
      +        "studentloan",
      +        "general"
      +      ],
      +      "type": "string"
      +    },
      +    "verifiedDate": {
      +      "description": "ISO date the fact was last checked against its source, when recorded",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "topic",
      +    "country",
      +    "fact",
      +    "sourceName",
      +    "sourceUrl",
      +    "more"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / rows / items / properties / dataVerifiedOn
      Added value: +{
      +  "description": "ISO date this country's rate was last confirmed against the authority",
      +  "type": "string"
      +}
    • addedOutput schema / properties / rows / items / properties / incomeTaxEstimate
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Present only when income was passed: income_tax_estimate's result for this country, in this country's own currency",
      +  "properties": {
      +    "assumptions": {
      +      "description": "Assumptions the figures depend on",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "averageRate": {
      +      "description": "Total tax over gross, as a fraction",
      +      "type": "number"
      +    },
      +    "currency": {
      +      "description": "Currency of every monetary field",
      +      "type": "string"
      +    },
      +    "dataVerifiedOn": {
      +      "description": "ISO date that source was last checked",
      +      "type": "string"
      +    },
      +    "gross": {
      +      "description": "Gross annual income used",
      +      "type": "number"
      +    },
      +    "incomeTax": {
      +      "description": "Income tax before levies and offsets",
      +      "type": "number"
      +    },
      +    "mayBeStale": {
      +      "description": "True when that date is over a year old, or the source is unverified",
      +      "type": "boolean"
      +    },
      +    "reason": {
      +      "description": "Why there is no figure (not-covered / unavailable only)",
      +      "type": "string"
      +    },
      +    "source": {
      +      "description": "The income-tax source for this country — says 'not verified' when it was not",
      +      "type": "string"
      +    },
      +    "sourceUrl": {
      +      "description": "https link to the income-tax source — present only when verified",
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "'computed' = figures below; 'not-covered' = income tax is not estimated for this country; 'unavailable' = covered, but not for these inputs (reason says why)",
      +      "enum": [
      +        "computed",
      +        "not-covered",
      +        "unavailable"
      +      ],
      +      "type": "string"
      +    },
      +    "takeHome": {
      +      "description": "Gross minus total tax",
      +      "type": "number"
      +    },
      +    "taxYear": {
      +      "description": "Tax year the brackets belong to",
      +      "type": "string"
      +    },
      +    "totalTax": {
      +      "description": "Total tax after levies and offsets",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "status"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / rows / items / properties / mayBeStale
      Added value: +{
      +  "description": "True when that date is over a year old, or the row is unverified",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / rows / items / properties / source / description
      Previous value: -"National tax authority for this row"New value: +"Authority this country's GST/VAT rate was verified against — says 'citation pending — not verified' when it was not"
    • addedOutput schema / properties / rows / items / properties / sourceUrl
      Added value: +{
      +  "description": "https link to the authority page for the GST/VAT rate — present only for verified rows",
      +  "type": "string"
      +}
    • addedOutput schema / properties / sourceUrl
      Added value: +{
      +  "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",
      +  "type": "string"
      +}
  2. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources