MCP Server

Tallyfern Rates (Canada)

com.tallyfern/rates
Business & Operations Legal & Compliance Public & reachable MCP 2025-11-25

What this MCP does

Provides Canadian GST/HST and provincial tax rates, CRA allowance rates, and small-supplier registration checks.

cra_automobile_allowance_rate
CRA per-km automobile allowance rate
CRA reasonable per-kilometre allowance rates for employer-paid vehicle allowances (2026 default; 2025 also available): first 5,000 km and after, provinces vs territories. Optionally calculates the allowance for a number of business kilometres.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'year': {'enum': [2026, 2025], 'type': 'number', 'description': 'Calendar year (2026 or 2025). Default 2026.'}, 'province': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'Province or territory code or name, e.g. "ON", "Ontario", "QC", "Yukon".'}, 'kilometres': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Business kilometres in the calendar year, to calculate an allowance.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['year', 'currency', 'rates', 'scope', 'asOf', 'source', 'territoryExtraPerKm', 'disclaimer', 'relatedLink', 'dataVersion'], 'properties': {'asOf': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'year': {'type': 'integer'}, 'rates': {'type': 'object', 'required': ['provinces', 'territories'], 'properties': {'provinces': {'type': 'object', 'required': ['first5000Km', 'after5000Km'], 'properties': {'after5000Km': {'type': 'number', 'description': '$ per km after 5,000 km'}, 'first5000Km': {'type': 'number', 'description': '$ per km, first 5,000 km'}}, 'additionalProperties': False}, 'territories': {'type': 'object', 'required': ['first5000Km', 'after5000Km'], 'properties': {'after5000Km': {'type': 'number', 'description': '$ per km after 5,000 km'}, 'first5000Km': {'type': 'number', 'description': '$ per km, first 5,000 km'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'scope': {'type': 'string'}, 'region': {'type': 'object', 'required': ['code', 'name', 'isTerritory'], 'properties': {'code': {'enum': ['AB', 'BC', 'MB', 'NB', 'NL', 'NT', 'NS', 'NU', 'ON', 'PE', 'QC', 'SK', 'YT'], 'type': 'string', 'description': 'Province or territory code'}, 'name': {'type': 'string'}, 'isTerritory': {'type': 'boolean'}}, 'additionalProperties': False}, 'source': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Official canada.ca page'}, 'title': {'type': 'string'}, 'pageDateModified': {'anyOf': [{'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, {'type': 'null'}], 'description': "'Date modified' shown on the page, if any"}}, 'description': 'Official source for these figures', 'additionalProperties': False}, 'currency': {'type': 'string', 'const': 'CAD'}, 'applicable': {'type': 'object', 'required': ['first5000Km', 'after5000Km'], 'properties': {'after5000Km': {'type': 'number', 'description': '$ per km after 5,000 km'}, 'first5000Km': {'type': 'number', 'description': '$ per km, first 5,000 km'}}, 'description': 'Rates that apply to the given province or territory', 'additionalProperties': False}, 'disclaimer': {'type': 'string', 'description': 'Not-tax-advice notice'}, 'calculation': {'type': 'object', 'required': ['kilometres', 'regionUsed', 'first5000', 'after5000', 'total', 'note'], 'properties': {'note': {'type': 'string'}, 'total': {'type': 'number', 'description': 'Amount in Canadian dollars (CAD)'}, 'after5000': {'type': 'object', 'required': ['km', 'rate', 'amount'], 'properties': {'km': {'type': 'number'}, 'rate': {'type': 'number'}, 'amount': {'type': 'number', 'description': 'Amount in Canadian dollars (CAD)'}}, 'additionalProperties': False}, 'first5000': {'type': 'object', 'required': ['km', 'rate', 'amount'], 'properties': {'km': {'type': 'number'}, 'rate': {'type': 'number'}, 'amount': {'type': 'number', 'description': 'Amount in Canadian dollars (CAD)'}}, 'additionalProperties': False}, 'kilometres': {'type': 'number'}, 'regionUsed': {'type': 'string'}}, 'description': 'Allowance for the given kilometres', 'additionalProperties': False}, 'dataVersion': {'type': 'string', 'description': 'Version of the Tallyfern Rates dataset, e.g. 2026.10.03'}, 'relatedLink': {'type': 'string', 'format': 'uri', 'description': 'Related free Tallyfern tool or page'}, 'territoryExtraPerKm': {'type': 'number'}}, 'additionalProperties': False}
cra_meal_travel_allowance
CRA simplified meal and vehicle rates
CRA simplified-method rates (latest published tax year): flat meal rate per meal and maximum per day, and vehicle cents/km by province or territory where travel begins. These apply to moving expenses, northern residents deductions and medical travel, not to employer per-diems. Optionally calculates amounts.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'maximum': 3660, 'minimum': 0, 'description': 'Number of days (caps meals at the daily maximum).'}, 'meals': {'type': 'integer', 'maximum': 10000, 'minimum': 0, 'description': 'Number of meals.'}, 'province': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'Province or territory where the travel begins.'}, 'kilometres': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Kilometres driven, to calculate a vehicle amount (needs province).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['taxYear', 'meals', 'scope', 'latestPublishedNote', 'asOf', 'source', 'disclaimer', 'relatedLink', 'dataVersion'], 'properties': {'asOf': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'meals': {'type': 'object', 'required': ['perMeal', 'maxPerDay', 'currencyNote'], 'properties': {'perMeal': {'type': 'number', 'description': 'Amount in Canadian dollars (CAD)'}, 'maxPerDay': {'type': 'number', 'description': 'Amount in Canadian dollars (CAD)'}, 'currencyNote': {'type': 'string'}}, 'additionalProperties': False}, 'scope': {'type': 'string'}, 'region': {'type': 'object', 'required': ['code', 'name'], 'properties': {'code': {'enum': ['AB', 'BC', 'MB', 'NB', 'NL', 'NT', 'NS', 'NU', 'ON', 'PE', 'QC', 'SK', 'YT'], 'type': 'string', 'description': 'Province or territory code'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, 'source': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Official canada.ca page'}, 'title': {'type': 'string'}, 'pageDateModified': {'anyOf': [{'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, {'type': 'null'}], 'description': "'Date modified' shown on the page, if any"}}, 'description': 'Official source for these figures', 'additionalProperties': False}, 'taxYear': {'type': 'integer'}, 'disclaimer': {'type': 'string', 'description': 'Not-tax-advice notice'}, 'mealAmount': {'type': 'object', 'required': ['meals', 'days', 'amount', 'rule'], 'properties': {'days': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'rule': {'type': 'string'}, 'meals': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'amount': {'type': 'number', 'description': 'Amount in Canadian dollars (CAD)'}}, 'additionalProperties': False}, 'dataVersion': {'type': 'string', 'description': 'Version of the Tallyfern Rates dataset, e.g. 2026.10.03'}, 'relatedLink': {'type': 'string', 'format': 'uri', 'description': 'Related free Tallyfern tool or page'}, 'vehicleAmount': {'type': 'number', 'description': 'Amount in Canadian dollars (CAD)'}, 'vehicleCentsPerKm': {'type': 'number', 'description': 'Cents per km for the province where travel begins'}, 'latestPublishedNote': {'type': 'string'}, 'vehicleCentsPerKmByProvince': {'type': 'object', 'description': 'Cents per km by province code (when no province was given)', 'additionalProperties': {'type': 'number'}}}, 'additionalProperties': False}
gst_hst_rate_by_province
GST/HST and PST rates by province
Current GST/HST rate for a Canadian province or territory (or all 13), with the PST/QST rate CRA lists for reference. From CRA's 'Charge and collect the GST/HST' table.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'province': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'Province or territory code or name, e.g. "ON", "Ontario", "QC", "Yukon".'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['asOf', 'effectiveFrom', 'source', 'notes', 'disclaimer', 'relatedLink', 'dataVersion'], 'properties': {'asOf': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'rate': {'type': 'object', 'required': ['code', 'name', 'taxType', 'gstHstPercent', 'provincialSalesTaxPercent', 'provincialSalesTaxName', 'combinedPercentIfBothApply'], 'properties': {'code': {'enum': ['AB', 'BC', 'MB', 'NB', 'NL', 'NT', 'NS', 'NU', 'ON', 'PE', 'QC', 'SK', 'YT'], 'type': 'string', 'description': 'Province or territory code'}, 'name': {'type': 'string'}, 'taxType': {'enum': ['GST', 'HST'], 'type': 'string'}, 'gstHstPercent': {'type': 'number', 'description': 'GST or HST rate in percent'}, 'provincialSalesTaxName': {'type': ['string', 'null'], 'description': 'PST, QST or null'}, 'provincialSalesTaxPercent': {'type': ['number', 'null'], 'description': 'PST/QST in percent as listed by CRA for reference; null in HST provinces'}, 'combinedPercentIfBothApply': {'type': 'number', 'description': 'GST/HST plus PST/QST where both apply'}}, 'description': 'The requested province or territory (when one was given)', 'additionalProperties': False}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'rates': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'name', 'taxType', 'gstHstPercent', 'provincialSalesTaxPercent', 'provincialSalesTaxName'], 'properties': {'code': {'enum': ['AB', 'BC', 'MB', 'NB', 'NL', 'NT', 'NS', 'NU', 'ON', 'PE', 'QC', 'SK', 'YT'], 'type': 'string', 'description': 'Province or territory code'}, 'name': {'type': 'string'}, 'taxType': {'enum': ['GST', 'HST'], 'type': 'string'}, 'gstHstPercent': {'type': 'number', 'description': 'GST or HST rate in percent'}, 'provincialSalesTaxName': {'type': ['string', 'null'], 'description': 'PST, QST or null'}, 'provincialSalesTaxPercent': {'type': ['number', 'null'], 'description': 'PST/QST in percent as listed by CRA for reference; null in HST provinces'}}, 'additionalProperties': False}, 'description': 'All 13 provinces and territories (when no province was given)'}, 'source': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Official canada.ca page'}, 'title': {'type': 'string'}, 'pageDateModified': {'anyOf': [{'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, {'type': 'null'}], 'description': "'Date modified' shown on the page, if any"}}, 'description': 'Official source for these figures', 'additionalProperties': False}, 'disclaimer': {'type': 'string', 'description': 'Not-tax-advice notice'}, 'dataVersion': {'type': 'string', 'description': 'Version of the Tallyfern Rates dataset, e.g. 2026.10.03'}, 'relatedLink': {'type': 'string', 'format': 'uri', 'description': 'Related free Tallyfern tool or page'}, 'effectiveFrom': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Rates effective on or after this date'}}, 'additionalProperties': False}
gst_hst_small_supplier_check
GST/HST small supplier ($30,000) check
Apply the CRA's $30,000 small-supplier tests (single calendar quarter and four consecutive calendar quarters) to taxable revenue by calendar quarter. Says whether the person must register for the GST/HST, when they stop being a small supplier, the effective date of registration, and headroom for next quarter. Most businesses only (not charities/public service bodies).
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['quarters'], 'properties': {'quarters': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'quarter', 'amount'], 'properties': {'year': {'type': 'integer', 'maximum': 2100, 'minimum': 1991, 'description': 'Calendar year of the quarter, e.g. 2026'}, 'amount': {'type': 'number', 'minimum': 0, 'description': 'Taxable revenue in CAD before expenses (worldwide taxable supplies incl. zero-rated; exclude exempt)'}, 'quarter': {'type': 'integer', 'maximum': 4, 'minimum': 1, 'description': 'Calendar quarter: 1 = Jan–Mar, 2 = Apr–Jun, 3 = Jul–Sep, 4 = Oct–Dec'}}, 'additionalProperties': False}, 'maxItems': 40, 'minItems': 1, 'description': 'Consecutive calendar quarters, no gaps (use 0 for quarters with no sales).'}, 'taxiOrRideshare': {'type': 'boolean', 'description': 'True if self-employed taxi or commercial ride-sharing driver (must register regardless).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['rule', 'ruleVersion', 'threshold', 'currency', 'status', 'headline', 'trigger', 'explanation', 'latest', 'nextQuarter', 'quarters', 'sources', 'asOf', 'disclaimer', 'relatedLink', 'dataVersion'], 'properties': {'asOf': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Date the rules were last verified'}, 'rule': {'type': 'string'}, 'latest': {'type': 'object', 'required': ['label', 'rollingFourQuarters', 'percentOfThreshold'], 'properties': {'label': {'type': 'string', 'description': "e.g. 'Q2 2026 (April 1 to June 30)'"}, 'percentOfThreshold': {'type': 'number'}, 'rollingFourQuarters': {'type': 'number', 'description': 'Amount in Canadian dollars (CAD)'}}, 'additionalProperties': False}, 'status': {'enum': ['must_register', 'must_register_taxi', 'small_supplier'], 'type': 'string', 'description': 'Result of the small-supplier tests'}, 'sources': {'type': 'array', 'items': {'type': 'string', 'format': 'uri'}}, 'trigger': {'anyOf': [{'type': 'object', 'required': ['test', 'year', 'quarter', 'label', 'amount', 'ceasesOn', 'ceasesToBeSmallSupplier', 'effectiveRegistration'], 'properties': {'note': {'type': 'string'}, 'test': {'enum': ['single_quarter', 'four_quarters'], 'type': 'string', 'description': 'Which test was failed first'}, 'year': {'type': 'integer'}, 'label': {'type': 'string', 'description': "e.g. 'Q2 2026 (April 1 to June 30)'"}, 'amount': {'type': 'number', 'description': 'Revenue that went over the threshold'}, 'quarter': {'type': 'integer', 'maximum': 4, 'minimum': 1}, 'ceasesOn': {'anyOf': [{'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, {'type': 'null'}], 'description': 'Last day as a small supplier (four-quarter test); null for the single-quarter test'}, 'effectiveRegistration': {'type': 'string'}, 'ceasesToBeSmallSupplier': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The first quarter that triggered registration, or null'}, 'currency': {'type': 'string', 'const': 'CAD'}, 'headline': {'type': 'string', 'description': 'One-sentence answer'}, 'quarters': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'quarter', 'label', 'amount', 'rollingFourQuarters', 'quartersInWindow', 'overSingleQuarter', 'overFourQuarters'], 'properties': {'year': {'type': 'integer'}, 'label': {'type': 'string', 'description': "e.g. 'Q2 2026 (April 1 to June 30)'"}, 'amount': {'type': 'number', 'description': 'Amount in Canadian dollars (CAD)'}, 'quarter': {'type': 'integer', 'maximum': 4, 'minimum': 1}, 'overFourQuarters': {'type': 'boolean'}, 'quartersInWindow': {'type': 'integer', 'maximum': 4, 'minimum': 1}, 'overSingleQuarter': {'type': 'boolean'}, 'rollingFourQuarters': {'type': 'number', 'description': 'Total of this and up to three previous quarters'}}, 'additionalProperties': False}, 'description': 'Each quarter checked, oldest first'}, 'threshold': {'type': 'number', 'description': 'Small-supplier threshold (30000)'}, 'disclaimer': {'type': 'string', 'description': 'Not-tax-advice notice'}, 'dataVersion': {'type': 'string', 'description': 'Version of the Tallyfern Rates dataset, e.g. 2026.10.03'}, 'explanation': {'type': 'array', 'items': {'type': 'string'}}, 'nextQuarter': {'type': 'object', 'required': ['year', 'quarter', 'label', 'headroom'], 'properties': {'year': {'type': 'integer'}, 'label': {'type': 'string', 'description': "e.g. 'Q2 2026 (April 1 to June 30)'"}, 'quarter': {'type': 'integer', 'maximum': 4, 'minimum': 1}, 'headroom': {'type': 'number', 'description': 'Most revenue next quarter can have while staying a small supplier (0 if already over)'}}, 'additionalProperties': False}, 'relatedLink': {'type': 'string', 'format': 'uri', 'description': 'Related free Tallyfern tool or page'}, 'ruleVersion': {'type': 'string'}}, 'additionalProperties': False}
ontario_hst_basics
Ontario HST basics
Plain-language basics for Ontario businesses: the 13% HST rate, the $30,000 small-supplier threshold, the 29-day registration deadline and place-of-supply rule, with CRA sources.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['province', 'rate', 'smallSupplierThreshold', 'registerWithinDays', 'sources', 'asOf', 'disclaimer', 'relatedLink', 'dataVersion'], 'properties': {'asOf': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'rate': {'type': 'object', 'required': ['code', 'name', 'taxType', 'gstHstPercent', 'provincialSalesTaxPercent', 'provincialSalesTaxName', 'combinedPercentIfBothApply'], 'properties': {'code': {'enum': ['AB', 'BC', 'MB', 'NB', 'NL', 'NT', 'NS', 'NU', 'ON', 'PE', 'QC', 'SK', 'YT'], 'type': 'string', 'description': 'Province or territory code'}, 'name': {'type': 'string'}, 'taxType': {'enum': ['GST', 'HST'], 'type': 'string'}, 'gstHstPercent': {'type': 'number', 'description': 'GST or HST rate in percent'}, 'provincialSalesTaxName': {'type': ['string', 'null'], 'description': 'PST, QST or null'}, 'provincialSalesTaxPercent': {'type': ['number', 'null'], 'description': 'PST/QST in percent as listed by CRA for reference; null in HST provinces'}, 'combinedPercentIfBothApply': {'type': 'number', 'description': 'GST/HST plus PST/QST where both apply'}}, 'additionalProperties': False}, 'sources': {'type': 'array', 'items': {'type': 'string', 'format': 'uri'}}, 'province': {'type': 'string', 'const': 'ON'}, 'disclaimer': {'type': 'string', 'description': 'Not-tax-advice notice'}, 'dataVersion': {'type': 'string', 'description': 'Version of the Tallyfern Rates dataset, e.g. 2026.10.03'}, 'relatedLink': {'type': 'string', 'format': 'uri', 'description': 'Related free Tallyfern tool or page'}, 'registerWithinDays': {'type': 'integer'}, 'smallSupplierThreshold': {'type': 'number', 'description': 'Amount in Canadian dollars (CAD)'}}, 'additionalProperties': False}
Added
ontario_hst_basics
Oct. 4, 2026, 2:40 a.m.
Added
cra_meal_travel_allowance
Oct. 4, 2026, 2:40 a.m.
Added
cra_automobile_allowance_rate
Oct. 4, 2026, 2:40 a.m.
Added
gst_hst_rate_by_province
Oct. 4, 2026, 2:40 a.m.
Added
gst_hst_small_supplier_check
Oct. 4, 2026, 2:40 a.m.