Koskamo

Tallyfern Rates MCP

A free, read-only MCP server providing Canadian tax and travel rates sourced from official CRA and Canada.ca pages. It allows AI assistants to retrieve GST/HST rates by province, perform small-supplier threshold checks, and access CRA per-km allowance and travel rates, with every answer including its source and an 'as of' date.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Tallyfern Rates MCP logo, by TallyfernVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Tallyfern
MCP endpoint (Streamable HTTP)
https://mcp.tallyfern.com/mcp
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

5 of 5 have a description · 5 of 5 declare behavior hints · 4 of 4 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to tallyfern.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Retrieve current GST/HST rates by province
  • Check if a business exceeds the $30,000 small-supplier threshold
  • Access CRA per-km allowance and travel rates
  • Verify official CRA sources for tax calculations

Source and maintenance

Vendor evidenceRegistry 0.3.4

Protocol and capabilities

Server
tallyfern-rates 0.3.3
MCP protocol negotiated in check
2025-11-25
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Canadian small-business and side-hustle rates from official CRA/Canada.ca pages: GST/HST small-supplier ($30,000) check, GST/HST/PST rates by province, CRA per-km automobile allowance, and CRA simplified meal/vehicle rates. Every answer cites its canada.ca source and an as-of date. General information, not tax advice.

Tools

5 advertised

gst_hst_small_supplier_check — GST/HST small supplier ($30,000) check
Advertised by the server during the last successful anonymous check.
Advertised read-only

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). Returns structuredContent with status, headline, the triggering quarter (or null), per-quarter rolling totals, next-quarter headroom, sources and an as-of date.

gst_hst_small_supplier_check 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
}
gst_hst_small_supplier_check 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",
      "description": "Identifier of the rule set applied (ca-gst-hst-small-supplier)"
    },
    "latest": {
      "type": "object",
      "required": [
        "label",
        "rollingFourQuarters",
        "percentOfThreshold"
      ],
      "properties": {
        "label": {
          "type": "string",
          "description": "e.g. 'Q2 2026 (April 1 to June 30)'"
        },
        "percentOfThreshold": {
          "type": "number",
          "description": "rollingFourQuarters as a percent of the $30,000 threshold"
        },
        "rollingFourQuarters": {
          "type": "number",
          "description": "Total of the latest quarter and up to three previous quarters"
        }
      },
      "description": "Summary for the most recent quarter given",
      "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"
      },
      "description": "Official canada.ca pages used for this answer"
    },
    "trigger": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "test",
            "year",
            "quarter",
            "label",
            "amount",
            "ceasesOn",
            "ceasesToBeSmallSupplier",
            "effectiveRegistration"
          ],
          "properties": {
            "note": {
              "type": "string",
              "description": "Extra caveat, e.g. a later quarter that is also over the threshold on its own"
            },
            "test": {
              "enum": [
                "single_quarter",
                "four_quarters"
              ],
              "type": "string",
              "description": "Which test was failed first"
            },
            "year": {
              "type": "integer",
              "description": "Calendar year of the triggering quarter"
            },
            "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,
              "description": "Calendar quarter: 1 = Jan–Mar, 2 = Apr–Jun, 3 = Jul–Sep, 4 = Oct–Dec"
            },
            "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",
              "description": "Plain-language effective date of registration (when to start charging GST/HST)"
            },
            "ceasesToBeSmallSupplier": {
              "type": "string",
              "description": "Plain-language statement of when the person stops being a small supplier"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The first quarter that triggered registration, or null"
    },
    "currency": {
      "type": "string",
      "const": "CAD",
      "description": "Currency of all amounts: Canadian dollars"
    },
    "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",
            "description": "Calendar year, e.g. 2026"
          },
          "label": {
            "type": "string",
            "description": "e.g. 'Q2 2026 (April 1 to June 30)'"
          },
          "amount": {
            "type": "number",
            "description": "Taxable revenue entered for this quarter"
          },
          "quarter": {
            "type": "integer",
            "maximum": 4,
            "minimum": 1,
            "description": "Calendar quarter: 1 = Jan–Mar, 2 = Apr–Jun, 3 = Jul–Sep, 4 = Oct–Dec"
          },
          "overFourQuarters": {
            "type": "boolean",
            "description": "True if the rolling total is over $30,000"
          },
          "quartersInWindow": {
            "type": "integer",
            "maximum": 4,
            "minimum": 1,
            "description": "How many quarters (1–4) are in that rolling total"
          },
          "overSingleQuarter": {
            "type": "boolean",
            "description": "True if this quarter alone is over $30,000"
          },
          "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"
      },
      "description": "Short plain-language points explaining the result"
    },
    "nextQuarter": {
      "type": "object",
      "required": [
        "year",
        "quarter",
        "label",
        "headroom"
      ],
      "properties": {
        "year": {
          "type": "integer",
          "description": "Calendar year, e.g. 2026"
        },
        "label": {
          "type": "string",
          "description": "e.g. 'Q2 2026 (April 1 to June 30)'"
        },
        "quarter": {
          "type": "integer",
          "maximum": 4,
          "minimum": 1,
          "description": "Calendar quarter: 1 = Jan–Mar, 2 = Apr–Jun, 3 = Jul–Sep, 4 = Oct–Dec"
        },
        "headroom": {
          "type": "number",
          "description": "Most revenue next quarter can have while staying a small supplier (0 if already over)"
        }
      },
      "description": "The quarter after the latest one given, with remaining headroom",
      "additionalProperties": false
    },
    "relatedLink": {
      "type": "string",
      "format": "uri",
      "description": "Related free Tallyfern tool or page"
    },
    "ruleVersion": {
      "type": "string",
      "description": "Version of that rule set, e.g. 1.0.0"
    }
  },
  "additionalProperties": false
}
gst_hst_small_supplier_check annotations
{
  "title": "GST/HST small supplier check",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
gst_hst_rate_by_province — GST/HST and PST rates by province
Advertised by the server during the last successful anonymous check.
Advertised read-only

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. Returns structuredContent with one rate row (or all 13), the effective-from date, notes, the canada.ca source and an as-of date.

gst_hst_rate_by_province 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
}
gst_hst_rate_by_province 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}$",
      "description": "Date (YYYY-MM-DD) the figures were last checked against the source pages"
    },
    "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",
          "description": "Province or territory name, e.g. Ontario"
        },
        "taxType": {
          "enum": [
            "GST",
            "HST"
          ],
          "type": "string",
          "description": "GST (federal only) or HST (harmonized federal + provincial)"
        },
        "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"
      },
      "description": "Caveats: place of supply, zero-rated/exempt supplies, PST shown for reference"
    },
    "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",
            "description": "Province or territory name, e.g. Ontario"
          },
          "taxType": {
            "enum": [
              "GST",
              "HST"
            ],
            "type": "string",
            "description": "GST (federal only) or HST (harmonized federal + provincial)"
          },
          "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",
          "description": "Title of the official page"
        },
        "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_rate_by_province annotations
{
  "title": "GST/HST rate by province",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
cra_automobile_allowance_rate — CRA per-km automobile allowance rate
Advertised by the server during the last successful anonymous check.
Advertised read-only

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. Returns structuredContent with the per-km rates for provinces and territories, the rates for the given region, an optional tiered calculation, the source and an as-of date.

cra_automobile_allowance_rate 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
}
cra_automobile_allowance_rate 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}$",
      "description": "Date (YYYY-MM-DD) the figures were last checked against the source pages"
    },
    "year": {
      "type": "integer",
      "description": "Year the per-km rates apply to (2026 or 2025)"
    },
    "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"
            }
          },
          "description": "Rates for the provinces",
          "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"
            }
          },
          "description": "Rates for YT, NT and NU",
          "additionalProperties": false
        }
      },
      "description": "CRA per-km allowance rates for that year",
      "additionalProperties": false
    },
    "scope": {
      "type": "string",
      "description": "Who these rates are for (employer allowances to employees) and who they are not for"
    },
    "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",
          "description": "Province or territory name"
        },
        "isTerritory": {
          "type": "boolean",
          "description": "True for YT, NT, NU"
        }
      },
      "description": "The province or territory given, if any",
      "additionalProperties": false
    },
    "source": {
      "type": "object",
      "required": [
        "title",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Official canada.ca page"
        },
        "title": {
          "type": "string",
          "description": "Title of the official page"
        },
        "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",
      "description": "Currency of all amounts: Canadian dollars"
    },
    "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",
          "description": "Assumption behind the calculation"
        },
        "total": {
          "type": "number",
          "description": "Amount in Canadian dollars (CAD)"
        },
        "after5000": {
          "type": "object",
          "required": [
            "km",
            "rate",
            "amount"
          ],
          "properties": {
            "km": {
              "type": "number",
              "description": "Kilometres in this tier"
            },
            "rate": {
              "type": "number",
              "description": "$ per km used for this tier"
            },
            "amount": {
              "type": "number",
              "description": "km × rate for this tier, in CAD"
            }
          },
          "description": "Kilometres over 5,000 at the second-tier rate",
          "additionalProperties": false
        },
        "first5000": {
          "type": "object",
          "required": [
            "km",
            "rate",
            "amount"
          ],
          "properties": {
            "km": {
              "type": "number",
              "description": "Kilometres in this tier"
            },
            "rate": {
              "type": "number",
              "description": "$ per km used for this tier"
            },
            "amount": {
              "type": "number",
              "description": "km × rate for this tier, in CAD"
            }
          },
          "description": "Kilometres up to 5,000 at the first-tier rate",
          "additionalProperties": false
        },
        "kilometres": {
          "type": "number",
          "description": "Business kilometres given"
        },
        "regionUsed": {
          "type": "string",
          "description": "Province/territory code whose rates were used"
        }
      },
      "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",
      "description": "Extra $ per km for the territories over the provincial rate"
    }
  },
  "additionalProperties": false
}
cra_automobile_allowance_rate annotations
{
  "title": "CRA automobile allowance rate",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
cra_meal_travel_allowance — CRA simplified meal and vehicle rates
Advertised by the server during the last successful anonymous check.
Advertised read-only

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. Returns structuredContent with the tax year, meal rates, vehicle cents/km (one province or all), optional vehicle and meal amounts, scope notes, the source and an as-of date.

cra_meal_travel_allowance 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
}
cra_meal_travel_allowance 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}$",
      "description": "Date (YYYY-MM-DD) the figures were last checked against the source pages"
    },
    "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",
          "description": "CRA notes on currency, sales tax and receipts"
        }
      },
      "description": "Simplified-method meal rates",
      "additionalProperties": false
    },
    "scope": {
      "type": "string",
      "description": "What these rates apply to (moving expenses, northern residents deductions, medical travel) and what they don't"
    },
    "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",
          "description": "Province or territory name"
        }
      },
      "description": "Province or territory where travel begins, if given",
      "additionalProperties": false
    },
    "source": {
      "type": "object",
      "required": [
        "title",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Official canada.ca page"
        },
        "title": {
          "type": "string",
          "description": "Title of the official page"
        },
        "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",
      "description": "Tax year of the simplified rates returned (latest published on the CRA page)"
    },
    "disclaimer": {
      "type": "string",
      "description": "Not-tax-advice notice"
    },
    "mealAmount": {
      "type": "object",
      "required": [
        "meals",
        "days",
        "amount",
        "rule"
      ],
      "properties": {
        "days": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "Days given, or null"
        },
        "rule": {
          "type": "string",
          "description": "The rule applied, e.g. '$23 per meal, up to $69 per day per person.'"
        },
        "meals": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "Meals given, or null"
        },
        "amount": {
          "type": "number",
          "description": "Meal amount after applying the daily maximum, in CAD"
        }
      },
      "description": "Meal amount (when meals or days were given)",
      "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": "Kilometres × cents per km, converted to CAD dollars (when kilometres and province were given)"
    },
    "vehicleCentsPerKm": {
      "type": "number",
      "description": "Cents per km for the province where travel begins"
    },
    "latestPublishedNote": {
      "type": "string",
      "description": "Which tax year the CRA page showed as of the check date"
    },
    "vehicleCentsPerKmByProvince": {
      "type": "object",
      "description": "Cents per km by province code (when no province was given)",
      "additionalProperties": {
        "type": "number"
      }
    }
  },
  "additionalProperties": false
}
cra_meal_travel_allowance annotations
{
  "title": "CRA meal and vehicle rates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ontario_hst_basics — Ontario HST basics
Advertised by the server during the last successful anonymous check.
Advertised read-only

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. Returns structuredContent with the Ontario rate row, the threshold, the registration deadline in days, sources and an as-of date.

ontario_hst_basics input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
ontario_hst_basics 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}$",
      "description": "Date (YYYY-MM-DD) the figures were last checked against the source pages"
    },
    "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",
          "description": "Province or territory name, e.g. Ontario"
        },
        "taxType": {
          "enum": [
            "GST",
            "HST"
          ],
          "type": "string",
          "description": "GST (federal only) or HST (harmonized federal + provincial)"
        },
        "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": "Ontario's HST rate row from CRA's table",
      "additionalProperties": false
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "description": "Official canada.ca pages used for this answer"
    },
    "province": {
      "type": "string",
      "const": "ON",
      "description": "Always ON (Ontario)"
    },
    "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",
      "description": "Days to register after the effective date of registration (29)"
    },
    "smallSupplierThreshold": {
      "type": "number",
      "description": "Small-supplier threshold (30000)"
    }
  },
  "additionalProperties": false
}
ontario_hst_basics annotations
{
  "title": "Ontario HST basics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-06: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
442 ms
95th percentile latency
442 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 442 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http tallyfern-rates-mcp https://mcp.tallyfern.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add tallyfern-rates-mcp --url https://mcp.tallyfern.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable tallyfern-rates-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "tallyfern-rates-mcp": {
      "url": "https://mcp.tallyfern.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "tallyfern-rates-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.tallyfern.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start tallyfern-rates-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "tallyfern-rates-mcp": {
      "type": "http",
      "url": "https://mcp.tallyfern.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http tallyfern-rates-mcp https://mcp.tallyfern.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.tallyfern.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "tallyfern-rates-mcp": {
      "serverUrl": "https://mcp.tallyfern.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Tallyfern Rates MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Tallyfern Rates MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing