{"openapi":"3.1.0","info":{"title":"Canada Small Business Hub API","version":"0.3.0","description":"The one connector to add for a small business in Canada. It fronts the best tools of twenty-one Canada connectors and composes them into ten tools that answer what an owner really asks: what is due (monday_brief, whats_due), what changed (whats_changing), am I over the line (am_i_over_the_line), what does a first hire cost (first_hire_costs), is this invoice ready (invoice_ready), which federal...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://ca-smb.connectorbay.com/mcp.\n\nDisclaimer: General information only, not legal, tax, accounting or payment advice. Canada Small Business Hub is an independent tool: it is not affiliated with, endorsed by or operated by any government body, central bank, standards body or scheme operator. Rates, thresholds and rules change; check the cited official source and confirm with a qualified professional before you rely on a result.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/ca-smb/docs"},"termsOfService":"https://connectorbay.com/ca-smb/terms"},"servers":[{"url":"https://ca-smb.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/ca-smb/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/monday_brief":{"post":{"operationId":"monday_brief","summary":"The scheduled one: an ordered, read-out-loud list of what is due in the next N days and what changes, from the filing ca","description":"The scheduled one: an ordered, read-out-loud list of what is due in the next N days and what changes, from the filing calendar, minimum-wage, payroll-rate and sales-tax components (plus CIPO's trademark fee adjustment for a profile with plans_trademark_filing), with next_run_hint. Each item's `status` says whether the rule applies today: in_force does; enacted_not_in_force, announced (a date the publisher states, no enactment read), proposed and expected_amount_unpublished do not yet, so a scheduler reading `status` treats announced like enacted_not_in_force. Use for \"Every Monday morning tell me what is due in the next two weeks for my Ontario corporation with 3 employees and what changed\", \"Chaque lundi matin, dites-moi ce qui est à payer ou à produire dans les deux prochaines semaines pour mon entreprise au Québec, et ce qui a changé\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"profile":{"additionalProperties":true,"description":"The owner's profile, a small object passed on every call and never stored. Required: province (two-letter code: AB BC MB NB NL NS NT NU ON PE QC SK YT). Optional: entity_type (sole_proprietor, partnership, corporation); employees (whole number, 0 or more); remitter_type (quarterly, regular, accelerated_1, accelerated_2: your CRA payroll remitter type); sells_taxable_supplies (true or false); gst_hst_filer (monthly, quarterly, annual, annual_sole_proprietor); gst_hst_year_end (MM-DD, annual filers); corporation_year_end (MM-DD); ccpc_3_month_balance_due (true if the corporation qualifies for the 3-month T2 balance due); pays_tax_instalments (true if you pay income tax instalments); bc_employer_health_tax (true if you pay BC Employer Health Tax); on_employer_health_tax (true if you pay Ontario Employer Health Tax); months_at_headcount (whole number: months the current employee count has held, for the Quebec francisation 6-month test); cbca_anniversary (MM-DD, federally incorporated); annual_revenue_cad and annual_payroll_cad (amounts in CAD, decimal string such as 85000.00); sends_marketing_email (true or false); plans_trademark_filing (true if you plan to file or renew a Canadian trademark: adds the CIPO fee adjustment of 1 January 2027 to whats_changing and monday_brief when it falls in the window; absent or false adds nothing). Unknown fields are refused; a missing optional field means the related items go to not_covered, never a guess. Each text value of the profile is at most 200 characters (a longer one is refused as bad_input).","title":"Profile","type":"object"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today on the UTC clock); the answer says which basis it used","title":"On Date"},"horizon_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Look-ahead window in days, 1 to 60 (default 14)","title":"Horizon Days"},"extra_holidays":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"default":null,"description":"Provincial or municipal non-business days as YYYY-MM-DD (Family Day, Civic Holiday and similar are not built in); used when a due date rolls to the next business day","title":"Extra Holidays"},"check_live_rates":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true (default) also compares the live CRA open GST/HST table with the rates built into the sales-tax component; a failure of that live check is reported in not_checked, never fatal","title":"Check Live Rates"},"verbose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"false (default): compact answer (shape compact), sources listed once in `sources` and cited by `source_ids`, repeated caveats once in `common_caveats` and cited by `caveat_refs`, items keep their short fields only (`more_in_tool` names the rest); true: the full per-item shape (`source` rows, every caveat and the component's detail fields on each item)","title":"Verbose"}},"required":["profile"],"title":"monday_briefArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/whats_due":{"post":{"operationId":"whats_due","summary":"Every filing and payment due in the next N days for the profile: GST/HST returns, payroll remittances, T4/T4A, T2, insta","description":"Every filing and payment due in the next N days for the profile: GST/HST returns, payroll remittances, T4/T4A, T2, instalments, Ontario and BC Employer Health Tax, annual returns, with rollover and the reason each item appears. Use for \"What GST/HST, payroll remittance and T4 dates do I have in the next 30 days? I file quarterly and I am a regular remitter\", \"Chaque lundi matin, dites-moi ce qui est à payer ou à produire dans les deux prochaines semaines pour mon entreprise au Québec, et ce qui a changé\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"profile":{"additionalProperties":true,"description":"The owner's profile, a small object passed on every call and never stored. Required: province (two-letter code: AB BC MB NB NL NS NT NU ON PE QC SK YT). Optional: entity_type (sole_proprietor, partnership, corporation); employees (whole number, 0 or more); remitter_type (quarterly, regular, accelerated_1, accelerated_2: your CRA payroll remitter type); sells_taxable_supplies (true or false); gst_hst_filer (monthly, quarterly, annual, annual_sole_proprietor); gst_hst_year_end (MM-DD, annual filers); corporation_year_end (MM-DD); ccpc_3_month_balance_due (true if the corporation qualifies for the 3-month T2 balance due); pays_tax_instalments (true if you pay income tax instalments); bc_employer_health_tax (true if you pay BC Employer Health Tax); on_employer_health_tax (true if you pay Ontario Employer Health Tax); months_at_headcount (whole number: months the current employee count has held, for the Quebec francisation 6-month test); cbca_anniversary (MM-DD, federally incorporated); annual_revenue_cad and annual_payroll_cad (amounts in CAD, decimal string such as 85000.00); sends_marketing_email (true or false); plans_trademark_filing (true if you plan to file or renew a Canadian trademark: adds the CIPO fee adjustment of 1 January 2027 to whats_changing and monday_brief when it falls in the window; absent or false adds nothing). Unknown fields are refused; a missing optional field means the related items go to not_covered, never a guess. Each text value of the profile is at most 200 characters (a longer one is refused as bad_input).","title":"Profile","type":"object"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today on the UTC clock); the answer says which basis it used","title":"On Date"},"horizon_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Look-ahead window in days, 1 to 366 (default 30)","title":"Horizon Days"},"extra_holidays":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"default":null,"description":"Provincial or municipal non-business days as YYYY-MM-DD (Family Day, Civic Holiday and similar are not built in); used when a due date rolls to the next business day","title":"Extra Holidays"},"verbose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"false (default): compact answer (shape compact), sources listed once in `sources` and cited by `source_ids`, repeated caveats once in `common_caveats` and cited by `caveat_refs`, items keep their short fields only (`more_in_tool` names the rest); true: the full per-item shape (`source` rows, every caveat and the component's detail fields on each item)","title":"Verbose"}},"required":["profile"],"title":"whats_dueArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/whats_changing":{"post":{"operationId":"whats_changing","summary":"Dated changes that affect the profile: minimum wage increases, CPP/EI/QPP/QPIP parameter changes with their status (prop","description":"Dated changes that affect the profile: minimum wage increases, CPP/EI/QPP/QPIP parameter changes with their status (proposed, enacted, in force), provincial sales tax rate news, CRA prescribed interest rate changes, the CIPO trademark fee adjustment for a profile with plans_trademark_filing, and changes that took effect recently. Each item's `status` says whether the rule applies today: in_force does; enacted_not_in_force, announced (a date the publisher states, no enactment read), proposed and expected_amount_unpublished do not yet, so a scheduler reading `status` treats announced like enacted_not_in_force. Use for \"Which minimum wages, payroll rates or sales tax rates change in the next 90 days for my Nova Scotia business\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"profile":{"additionalProperties":true,"description":"The owner's profile, a small object passed on every call and never stored. Required: province (two-letter code: AB BC MB NB NL NS NT NU ON PE QC SK YT). Optional: entity_type (sole_proprietor, partnership, corporation); employees (whole number, 0 or more); remitter_type (quarterly, regular, accelerated_1, accelerated_2: your CRA payroll remitter type); sells_taxable_supplies (true or false); gst_hst_filer (monthly, quarterly, annual, annual_sole_proprietor); gst_hst_year_end (MM-DD, annual filers); corporation_year_end (MM-DD); ccpc_3_month_balance_due (true if the corporation qualifies for the 3-month T2 balance due); pays_tax_instalments (true if you pay income tax instalments); bc_employer_health_tax (true if you pay BC Employer Health Tax); on_employer_health_tax (true if you pay Ontario Employer Health Tax); months_at_headcount (whole number: months the current employee count has held, for the Quebec francisation 6-month test); cbca_anniversary (MM-DD, federally incorporated); annual_revenue_cad and annual_payroll_cad (amounts in CAD, decimal string such as 85000.00); sends_marketing_email (true or false); plans_trademark_filing (true if you plan to file or renew a Canadian trademark: adds the CIPO fee adjustment of 1 January 2027 to whats_changing and monday_brief when it falls in the window; absent or false adds nothing). Unknown fields are refused; a missing optional field means the related items go to not_covered, never a guess. Each text value of the profile is at most 200 characters (a longer one is refused as bad_input).","title":"Profile","type":"object"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today on the UTC clock); the answer says which basis it used","title":"On Date"},"horizon_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Look-ahead window in days, 1 to 366 (default 90)","title":"Horizon Days"},"lookback_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Also report changes that took effect in the last N days, 0 to 365 (default 30)","title":"Lookback Days"},"check_live_rates":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true (default) also compares the live CRA open GST/HST table with the rates built into the sales-tax component; a failure of that live check is reported in not_checked, never fatal","title":"Check Live Rates"},"verbose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"false (default): compact answer (shape compact), sources listed once in `sources` and cited by `source_ids`, repeated caveats once in `common_caveats` and cited by `caveat_refs`, items keep their short fields only (`more_in_tool` names the rest); true: the full per-item shape (`source` rows, every caveat and the component's detail fields on each item)","title":"Verbose"}},"required":["profile"],"title":"whats_changingArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/am_i_over_the_line":{"post":{"operationId":"am_i_over_the_line","summary":"Thresholds in one answer: GST/HST small-supplier 30,000 test (with the Revenu Quebec version for QC, TPS/TVQ), quick met","description":"Thresholds in one answer: GST/HST small-supplier 30,000 test (with the Revenu Quebec version for QC, TPS/TVQ), quick method limit, assigned reporting period, run-rate watch, and the Quebec 25-person francisation threshold. Use for \"My taxable sales were 9,000, 11,000, 12,000 and 9,500 in the last four quarters: am I over the small supplier line, and can I use the quick method\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"profile":{"additionalProperties":true,"description":"The owner's profile, a small object passed on every call and never stored. Required: province (two-letter code: AB BC MB NB NL NS NT NU ON PE QC SK YT). Optional: entity_type (sole_proprietor, partnership, corporation); employees (whole number, 0 or more); remitter_type (quarterly, regular, accelerated_1, accelerated_2: your CRA payroll remitter type); sells_taxable_supplies (true or false); gst_hst_filer (monthly, quarterly, annual, annual_sole_proprietor); gst_hst_year_end (MM-DD, annual filers); corporation_year_end (MM-DD); ccpc_3_month_balance_due (true if the corporation qualifies for the 3-month T2 balance due); pays_tax_instalments (true if you pay income tax instalments); bc_employer_health_tax (true if you pay BC Employer Health Tax); on_employer_health_tax (true if you pay Ontario Employer Health Tax); months_at_headcount (whole number: months the current employee count has held, for the Quebec francisation 6-month test); cbca_anniversary (MM-DD, federally incorporated); annual_revenue_cad and annual_payroll_cad (amounts in CAD, decimal string such as 85000.00); sends_marketing_email (true or false); plans_trademark_filing (true if you plan to file or renew a Canadian trademark: adds the CIPO fee adjustment of 1 January 2027 to whats_changing and monday_brief when it falls in the window; absent or false adds nothing). Unknown fields are refused; a missing optional field means the related items go to not_covered, never a guess. Each text value of the profile is at most 200 characters (a longer one is refused as bad_input).","title":"Profile","type":"object"},"quarters":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"default":null,"description":"Taxable supplies per completed calendar quarter, oldest first, 1 to 4 decimal strings such as \"9000.00\" (before GST/HST, your own plus associated persons); omit to skip the small-supplier test","title":"Quarters"},"latest_quarter_end":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the most recent quarter in `quarters`: 03-31, 06-30, 09-30 or 12-31, YYYY-MM-DD (required with quarters)","title":"Latest Quarter End"},"current_quarter_to_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Taxable supplies so far in the quarter that follows latest_quarter_end, decimal string; adds the run-rate watch (needs quarters and on_date inside that quarter)","title":"Current Quarter To Date"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today on the UTC clock); the answer says which basis it used","title":"On Date"},"verbose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"false (default): compact answer (shape compact), sources listed once in `sources` and cited by `source_ids`, repeated caveats once in `common_caveats` and cited by `caveat_refs`, items keep their short fields only (`more_in_tool` names the rest); true: the full per-item shape (`source` rows, every caveat and the component's detail fields on each item)","title":"Verbose"}},"required":["profile"],"title":"am_i_over_the_lineArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/first_hire_costs":{"post":{"operationId":"first_hire_costs","summary":"What the first employee adds: employer CPP/CPP2/EI (or RRQ, RQAP, EI, labour standards and FSS in Quebec), the minimum w","description":"What the first employee adds: employer CPP/CPP2/EI (or RRQ, RQAP, EI, labour standards and FSS in Quebec), the minimum wage check, Ontario or BC Employer Health Tax, the workers' compensation average rate (Ontario, BC) and the first payroll dates. Use for \"What does my first employee at 60,000 a year cost me in CPP and EI, and is 22.50 an hour above the minimum wage in Alberta\", \"Combien coûte un premier employé à 55 000 $ par année au Québec (RRQ, RQAP, assurance-emploi, normes du travail, FSS)\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"profile":{"additionalProperties":true,"description":"The owner's profile, a small object passed on every call and never stored. Required: province (two-letter code: AB BC MB NB NL NS NT NU ON PE QC SK YT). Optional: entity_type (sole_proprietor, partnership, corporation); employees (whole number, 0 or more); remitter_type (quarterly, regular, accelerated_1, accelerated_2: your CRA payroll remitter type); sells_taxable_supplies (true or false); gst_hst_filer (monthly, quarterly, annual, annual_sole_proprietor); gst_hst_year_end (MM-DD, annual filers); corporation_year_end (MM-DD); ccpc_3_month_balance_due (true if the corporation qualifies for the 3-month T2 balance due); pays_tax_instalments (true if you pay income tax instalments); bc_employer_health_tax (true if you pay BC Employer Health Tax); on_employer_health_tax (true if you pay Ontario Employer Health Tax); months_at_headcount (whole number: months the current employee count has held, for the Quebec francisation 6-month test); cbca_anniversary (MM-DD, federally incorporated); annual_revenue_cad and annual_payroll_cad (amounts in CAD, decimal string such as 85000.00); sends_marketing_email (true or false); plans_trademark_filing (true if you plan to file or renew a Canadian trademark: adds the CIPO fee adjustment of 1 January 2027 to whats_changing and monday_brief when it falls in the window; absent or false adds nothing). Unknown fields are refused; a missing optional field means the related items go to not_covered, never a guess. Each text value of the profile is at most 200 characters (a longer one is refused as bad_input).","title":"Profile","type":"object"},"annual_earnings":{"description":"Annual pay of the employee in CAD, decimal string such as 60000.00","title":"Annual Earnings","type":"string"},"pay_periods_per_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Pay periods per year: 52, 26, 24, 12 (also 4, 2, 1); default 26","title":"Pay Periods Per Year"},"hourly_rate":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Hourly rate in CAD, decimal string; adds the minimum wage check","title":"Hourly Rate"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Quebec only, Health Services Fund sector: general, primary_manufacturing or public (default general)","title":"Sector"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Payroll year: 2025 or 2026 (default: the year of on_date)","title":"Year"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today on the UTC clock); the answer says which basis it used","title":"On Date"},"verbose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"false (default): compact answer (shape compact), sources listed once in `sources` and cited by `source_ids`, repeated caveats once in `common_caveats` and cited by `caveat_refs`, items keep their short fields only (`more_in_tool` names the rest); true: the full per-item shape (`source` rows, every caveat and the component's detail fields on each item)","title":"Verbose"}},"required":["profile","annual_earnings"],"title":"first_hire_costsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/invoice_ready":{"post":{"operationId":"invoice_ready","summary":"Everything an invoice needs in one answer: GST/HST/PST/QST lines for the province and date, the fields the buyer needs f","description":"Everything an invoice needs in one answer: GST/HST/PST/QST lines for the province and date, the fields the buyer needs for an input tax credit, a check of a draft invoice, the registration number shape and a footer (en or fr). Use for \"Prepare the tax lines and footer for a 2,400 invoice to a customer in Quebec and check the invoice has what the buyer needs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"profile":{"additionalProperties":true,"description":"The owner's profile, a small object passed on every call and never stored. Required: province (two-letter code: AB BC MB NB NL NS NT NU ON PE QC SK YT). Optional: entity_type (sole_proprietor, partnership, corporation); employees (whole number, 0 or more); remitter_type (quarterly, regular, accelerated_1, accelerated_2: your CRA payroll remitter type); sells_taxable_supplies (true or false); gst_hst_filer (monthly, quarterly, annual, annual_sole_proprietor); gst_hst_year_end (MM-DD, annual filers); corporation_year_end (MM-DD); ccpc_3_month_balance_due (true if the corporation qualifies for the 3-month T2 balance due); pays_tax_instalments (true if you pay income tax instalments); bc_employer_health_tax (true if you pay BC Employer Health Tax); on_employer_health_tax (true if you pay Ontario Employer Health Tax); months_at_headcount (whole number: months the current employee count has held, for the Quebec francisation 6-month test); cbca_anniversary (MM-DD, federally incorporated); annual_revenue_cad and annual_payroll_cad (amounts in CAD, decimal string such as 85000.00); sends_marketing_email (true or false); plans_trademark_filing (true if you plan to file or renew a Canadian trademark: adds the CIPO fee adjustment of 1 January 2027 to whats_changing and monday_brief when it falls in the window; absent or false adds nothing). Unknown fields are refused; a missing optional field means the related items go to not_covered, never a guess. Each text value of the profile is at most 200 characters (a longer one is refused as bad_input).","title":"Profile","type":"object"},"subtotal":{"description":"Invoice subtotal before tax in CAD, decimal string such as 2400.00","title":"Subtotal","type":"string"},"registration_number":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Your GST/HST registration number as written on the invoice (nine digits, RT, four digits); shape check only, never a registry lookup","title":"Registration Number"},"invoice":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Draft invoice as an object; all keys optional, as in the invoice checker: supplier_name, invoice_date (YYYY-MM-DD), total_amount (decimal string; it picks the documentation tier, so a draft without it cannot be checked), gst_hst_registration_number, tax_amount (decimal string), tax_included_statement (true if the invoice states that the total includes the tax), tax_rate_percent (decimal string), hst_parts_shown (true if federal and provincial parts of HST are shown separately), mixed_supplies (true if taxable and exempt or zero-rated supplies are mixed), taxable_status_indicated (true if each taxable non-zero-rated supply is marked), recipient_name, terms_of_payment, supply_descriptions (list of strings)","title":"Invoice"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Footer language: en (default) or fr","title":"Language"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today on the UTC clock); the answer says which basis it used","title":"On Date"},"verbose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"false (default): compact answer (shape compact), sources listed once in `sources` and cited by `source_ids`, repeated caveats once in `common_caveats` and cited by `caveat_refs`, items keep their short fields only (`more_in_tool` names the rest); true: the full per-item shape (`source` rows, every caveat and the component's detail fields on each item)","title":"Verbose"}},"required":["profile","subtotal"],"title":"invoice_readyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/grow_with_bids":{"post":{"operationId":"grow_with_bids","summary":"Federal tenders on CanadaBuys that close soon or were published recently, matched to your keywords, UNSPSC prefixes and ","description":"Federal tenders on CanadaBuys that close soon or were published recently, matched to your keywords, UNSPSC prefixes and the profile's province, with the value of past awards for the same keywords, read live from the official open-data files. Use for \"Which federal tenders for snow removal close in the next two weeks, and which are new this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"profile":{"additionalProperties":true,"description":"The owner's profile, a small object passed on every call and never stored. Required: province (two-letter code: AB BC MB NB NL NS NT NU ON PE QC SK YT). Optional: entity_type (sole_proprietor, partnership, corporation); employees (whole number, 0 or more); remitter_type (quarterly, regular, accelerated_1, accelerated_2: your CRA payroll remitter type); sells_taxable_supplies (true or false); gst_hst_filer (monthly, quarterly, annual, annual_sole_proprietor); gst_hst_year_end (MM-DD, annual filers); corporation_year_end (MM-DD); ccpc_3_month_balance_due (true if the corporation qualifies for the 3-month T2 balance due); pays_tax_instalments (true if you pay income tax instalments); bc_employer_health_tax (true if you pay BC Employer Health Tax); on_employer_health_tax (true if you pay Ontario Employer Health Tax); months_at_headcount (whole number: months the current employee count has held, for the Quebec francisation 6-month test); cbca_anniversary (MM-DD, federally incorporated); annual_revenue_cad and annual_payroll_cad (amounts in CAD, decimal string such as 85000.00); sends_marketing_email (true or false); plans_trademark_filing (true if you plan to file or renew a Canadian trademark: adds the CIPO fee adjustment of 1 January 2027 to whats_changing and monday_brief when it falls in the window; absent or false adds nothing). Unknown fields are refused; a missing optional field means the related items go to not_covered, never a guess. Each text value of the profile is at most 200 characters (a longer one is refused as bad_input).","title":"Profile","type":"object"},"keywords":{"description":"Comma-separated keywords, for example 'snow removal, janitorial'","title":"Keywords","type":"string"},"unspsc":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated UNSPSC code prefixes (2 to 8 digits), for example '72,8111'","title":"Unspsc"},"closing_within_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Tenders closing within N days, 1 to 90 (default 14)","title":"Closing Within Days"},"published_within_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Tenders published in the last N days, 1 to 60 (default 7)","title":"Published Within Days"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum notices per list, 1 to 25 (default 10)","title":"Limit"},"all_regions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true to skip the delivery-region filter (default false: the profile's province)","title":"All Regions"},"award_context":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true (default) adds what comparable federal contracts were worth in the current fiscal year (award notices matching the keywords); a failure is reported in not_checked","title":"Award Context"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today on the UTC clock); the answer says which basis it used","title":"On Date"},"verbose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"false (default): compact answer (shape compact), sources listed once in `sources` and cited by `source_ids`, repeated caveats once in `common_caveats` and cited by `caveat_refs`, items keep their short fields only (`more_in_tool` names the rest); true: the full per-item shape (`source` rows, every caveat and the component's detail fields on each item)","title":"Verbose"}},"required":["profile","keywords"],"title":"grow_with_bidsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/supplier_check":{"post":{"operationId":"supplier_check","summary":"Checks before dealing with a supplier or customer: the shape of its business number and how the CRA says a GST/HST accou","description":"Checks before dealing with a supplier or customer: the shape of its business number and how the CRA says a GST/HST account number is confirmed, federal awards under a similar name (potential matches only), and the register to consult for its province; nothing is looked up about a person and no result says a supplier is clear. Use for \"My new supplier gave me GST/HST number 123456789RT0001: does it have the right shape and how do I confirm it\", \"Has Northern Lights Cleaning won federal contracts and where do I check its registration in Ontario\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"profile":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional owner profile (see monday_brief); only its province is used, as the default place to look for the supplier's register; each text value is at most 200 characters","title":"Profile"},"bn":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The business number or GST/HST account number the supplier gave you (nine digits, or nine digits, RT and four digits): shape check only, never looked up","title":"Bn"},"supplier_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The supplier's legal name or part of it: matched fuzzily against federal award notices (potential matches for human review)","title":"Supplier Name"},"supplier_province":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Province or territory of the supplier's registration (two-letter code); default: the profile's province","title":"Supplier Province"},"incorporated_under":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"provincial (default) or federal: which register to point at","title":"Incorporated Under"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today on the UTC clock); the answer says which basis it used","title":"On Date"},"verbose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"false (default): compact answer (shape compact), sources listed once in `sources` and cited by `source_ids`, repeated caveats once in `common_caveats` and cited by `caveat_refs`, items keep their short fields only (`more_in_tool` names the rest); true: the full per-item shape (`source` rows, every caveat and the component's detail fields on each item)","title":"Verbose"}},"title":"supplier_checkArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/funding_check":{"post":{"operationId":"funding_check","summary":"What funding to look at for the profile: a pre-check against the published Canada Small Business Financing Program limit","description":"What funding to look at for the profile: a pre-check against the published Canada Small Business Financing Program limits, matching programs of the open Business Benefits Finder dataset for the province and federally, and the CanExport SMEs intake note for exporters; pre-screens for information, lenders and programs decide. Each matching program item has status listed_in_dataset: the program appears in the open dataset, which carries no deadline, status or eligibility field, so it is not a rule, an offer or an eligibility result today and the program's own page decides (a scheduler reading `status` treats it like any status other than in_force). Use for \"I am an Ontario business with 850,000 in revenue and want a 150,000 term loan: does it fit the small business financing program, and what export funding exists\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"profile":{"additionalProperties":true,"description":"The owner's profile, a small object passed on every call and never stored. Required: province (two-letter code: AB BC MB NB NL NS NT NU ON PE QC SK YT). Optional: entity_type (sole_proprietor, partnership, corporation); employees (whole number, 0 or more); remitter_type (quarterly, regular, accelerated_1, accelerated_2: your CRA payroll remitter type); sells_taxable_supplies (true or false); gst_hst_filer (monthly, quarterly, annual, annual_sole_proprietor); gst_hst_year_end (MM-DD, annual filers); corporation_year_end (MM-DD); ccpc_3_month_balance_due (true if the corporation qualifies for the 3-month T2 balance due); pays_tax_instalments (true if you pay income tax instalments); bc_employer_health_tax (true if you pay BC Employer Health Tax); on_employer_health_tax (true if you pay Ontario Employer Health Tax); months_at_headcount (whole number: months the current employee count has held, for the Quebec francisation 6-month test); cbca_anniversary (MM-DD, federally incorporated); annual_revenue_cad and annual_payroll_cad (amounts in CAD, decimal string such as 85000.00); sends_marketing_email (true or false); plans_trademark_filing (true if you plan to file or renew a Canadian trademark: adds the CIPO fee adjustment of 1 January 2027 to whats_changing and monday_brief when it falls in the window; absent or false adds nothing). Unknown fields are refused; a missing optional field means the related items go to not_covered, never a guess. Each text value of the profile is at most 200 characters (a longer one is refused as bad_input).","title":"Profile","type":"object"},"need":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"One need: financing, export, hiring, innovation_rd, training, digital, clean_tech, start_up, advice, indigenous, women, youth, agriculture, arts_culture or tourism","title":"Need"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Keywords that must all appear in a program's title, description or organization, for example 'wage subsidy'","title":"Query"},"loan_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"term_loan or line_of_credit (with loan_amount and profile.annual_revenue_cad adds the Canada Small Business Financing Program pre-check)","title":"Loan Type"},"loan_amount":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Loan asked for in CAD, decimal string such as 150000","title":"Loan Amount"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum programs listed, 1 to 15 (default 5)","title":"Limit"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today on the UTC clock); the answer says which basis it used","title":"On Date"},"verbose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"false (default): compact answer (shape compact), sources listed once in `sources` and cited by `source_ids`, repeated caveats once in `common_caveats` and cited by `caveat_refs`, items keep their short fields only (`more_in_tool` names the rest); true: the full per-item shape (`source` rows, every caveat and the component's detail fields on each item)","title":"Verbose"}},"required":["profile"],"title":"funding_checkArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/late_payment_cost":{"post":{"operationId":"late_payment_cost","summary":"What a late payment to the CRA costs in prescribed interest: each quarter's published rate applied to the days overdue, ","description":"What a late payment to the CRA costs in prescribed interest: each quarter's published rate applied to the days overdue, daily compounding (stated by the CRA for GST/HST, payroll and corporate income tax amounts, named in amount_kind, which is required; other kinds are not covered) shown next to simple interest; estimate only, penalties are not included. Use for \"My GST/HST remittance of 12,000 was due on 15 July and I pay on 30 September: what interest does that add\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"amount":{"description":"Amount overdue (or overpaid) in CAD, decimal string such as 12000.00","title":"Amount","type":"string"},"start_date":{"description":"Day the amount became overdue, YYYY-MM-DD (interest counts from the next day)","title":"Start Date","type":"string"},"end_date":{"description":"Day it is paid or the estimate stops (counted), YYYY-MM-DD, after start_date","title":"End Date","type":"string"},"amount_kind":{"description":"Required: what the overdue amount is: gst_hst, payroll (source deductions, CPP, EI) or corporate_income_tax. The CRA pages state daily compounding for these (primary_single_source); other kinds are not covered","title":"Amount Kind","type":"string"},"rate_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"overdue (the only value; default)","title":"Rate Type"},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"daily_compound (default; the CRA states daily compounding for GST/HST, payroll and corporate income tax amounts, see amount_kind) or simple; the answer shows both","title":"Method"},"profile":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional owner profile (see monday_brief); echoed, not used in the estimate; each text value is at most 200 characters","title":"Profile"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today on the UTC clock); the answer says which basis it used","title":"On Date"},"verbose":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"false (default): compact answer (shape compact), sources listed once in `sources` and cited by `source_ids`, repeated caveats once in `common_caveats` and cited by `caveat_refs`, items keep their short fields only (`more_in_tool` names the rest); true: the full per-item shape (`source` rows, every caveat and the component's detail fields on each item)","title":"Verbose"}},"required":["amount","start_date","end_date","amount_kind"],"title":"late_payment_costArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/tax_get_sales_tax_rates":{"post":{"operationId":"tax_get_sales_tax_rates","summary":"GST, HST, PST, RST or QST rates that apply in a province or territory on a date, with source, verification level and cav","description":"GST, HST, PST, RST or QST rates that apply in a province or territory on a date, with source, verification level and caveats. Use for \"What sales taxes apply to a sale in Nova Scotia today?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"province":{"description":"Province or territory: two-letter code (ON, QC, BC ...) or English name","title":"Province","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date the rate must apply on, YYYY-MM-DD (defaults to today in UTC; the source table starts 2013-04-01)","title":"On Date"}},"required":["province"],"title":"get_sales_tax_ratesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/tax_extract_tax_from_total":{"post":{"operationId":"tax_extract_tax_from_total","summary":"Back the tax out of a tax-included total for a province and date and split it into subtotal, GST/HST and PST/QST that ad","description":"Back the tax out of a tax-included total for a province and date and split it into subtotal, GST/HST and PST/QST that add up to the total. Use for \"A Quebec customer paid 114.98 all-in: how much of it was GST and QST?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"total":{"description":"Tax-included total as a plain decimal string with a dot and at most 2 decimals, for example 114.98","title":"Total","type":"string"},"province":{"description":"Province or territory: two-letter code (ON, QC, BC ...) or English name","title":"Province","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date the rate must apply on, YYYY-MM-DD (defaults to today in UTC; the source table starts 2013-04-01)","title":"On Date"},"scope":{"default":"full","description":"full (default: every tax that applies in the province), federal_only (GST/HST only) or provincial_only (PST, RST or QST only)","title":"Scope","type":"string"}},"required":["total","province"],"title":"extract_tax_from_totalArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/dates_classify_remitter":{"post":{"operationId":"dates_classify_remitter","summary":"Payroll remitter type from the average monthly withholding amount (quarterly, regular, accelerated threshold 1 or 2). Us","description":"Payroll remitter type from the average monthly withholding amount (quarterly, regular, accelerated threshold 1 or 2). Use for \"My average monthly withholding two years ago was 4,200: which remitter type am I?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"average_monthly_withholding":{"description":"Average monthly withholding amount (AMWA) of the period two calendar years earlier, decimal string such as 4200.00","title":"Average Monthly Withholding","type":"string"},"account_age_months":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Months the payroll account has been open (needed for quarterly eligibility)","title":"Account Age Months"},"perfect_compliance_record":{"default":false,"description":"true if all returns and remittances were on time (needed for quarterly eligibility)","title":"Perfect Compliance Record","type":"boolean"}},"required":["average_monthly_withholding"],"title":"classify_remitterArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/dates_gst_hst_due":{"post":{"operationId":"dates_gst_hst_due","summary":"GST/HST return and payment date for a reporting period end or fiscal year end and filer type. Use for \"When is my GST/HS","description":"GST/HST return and payment date for a reporting period end or fiscal year end and filer type. Use for \"When is my GST/HST return for the quarter ending 30 September 2026 due?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filer_type":{"description":"monthly, quarterly, annual, annual_sole_proprietor (individual with business income, 31 December year-end) or listed_financial_institution","title":"Filer Type","type":"string"},"period_end":{"description":"End of the reporting period (monthly, quarterly) or of the fiscal year (annual, listed_financial_institution); for annual_sole_proprietor give 31 December of the tax year. YYYY-MM-DD","title":"Period End","type":"string"},"extra_holidays":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Additional non-business days as YYYY-MM-DD (provincial holidays such as Family Day or the Civic Holiday are not built in)","title":"Extra Holidays"}},"required":["filer_type","period_end"],"title":"gst_hst_dueArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/payroll_cpp_contribution":{"post":{"operationId":"payroll_cpp_contribution","summary":"Employee and employer Canada Pension Plan contribution for one pay period from pensionable earnings and year-to-date con","description":"Employee and employer Canada Pension Plan contribution for one pay period from pensionable earnings and year-to-date contributions (outside Quebec). Use for \"What CPP do I deduct and match on a $2,500 biweekly paycheque in 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pensionable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Pensionable Earnings"},"pay_periods_per_year":{"description":"Pay periods per year: 52 weekly, 26 biweekly, 24 semi-monthly, 12 monthly (also 4, 2, 1)","title":"Pay Periods Per Year","type":"integer"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"ytd_contributions":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Contributions"}},"required":["pensionable_earnings","pay_periods_per_year"],"title":"cpp_contributionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/payroll_ei_premium":{"post":{"operationId":"payroll_ei_premium","summary":"Employment Insurance employee premium and the employer amount (1.4 times) for one pay period, at the federal or the redu","description":"Employment Insurance employee premium and the employer amount (1.4 times) for one pay period, at the federal or the reduced Quebec rate. Use for \"How much EI do I withhold and owe on top for a $2,500 paycheque, and does Quebec differ?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"insurable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Insurable Earnings"},"region":{"default":"rest_of_canada","description":"'rest_of_canada' (CPP and the federal EI rate) or 'quebec' (QPP, QPIP and the reduced Quebec EI rate)","title":"Region","type":"string"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"ytd_employee_premiums":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Employee Premiums"}},"required":["insurable_earnings"],"title":"ei_premiumArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/payroll_qpp_contribution":{"post":{"operationId":"payroll_qpp_contribution","summary":"Quebec Pension Plan contribution for one pay period: base plus first additional at 6.30% (2026) and the second additiona","description":"Quebec Pension Plan contribution for one pay period: base plus first additional at 6.30% (2026) and the second additional 4% above the maximum pensionable earnings. Use for \"What QPP do I withhold and match on a $3,000 monthly salary in Quebec in 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pensionable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Pensionable Earnings"},"pay_periods_per_year":{"description":"Pay periods per year: 52 weekly, 26 biweekly, 24 semi-monthly, 12 monthly (also 4, 2, 1)","title":"Pay Periods Per Year","type":"integer"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"ytd_contributions":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Contributions"},"ytd_pensionable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Pensionable earnings paid earlier this year, before this period (used for the second additional contribution)","title":"Ytd Pensionable Earnings"},"ytd_second_additional":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Second Additional"}},"required":["pensionable_earnings","pay_periods_per_year"],"title":"qpp_contributionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/payroll_qpip_premium":{"post":{"operationId":"payroll_qpip_premium","summary":"Quebec Parental Insurance Plan employee and employer premiums for one pay period with the year's maximum insurable earni","description":"Quebec Parental Insurance Plan employee and employer premiums for one pay period with the year's maximum insurable earnings. Use for \"How much QPIP do I withhold and owe on a $2,500 Quebec paycheque in 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"insurable_earnings":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in Canadian dollars as a plain decimal such as 2500.00 (digits and one point, at most 4 decimals; no currency symbol, no thousands separator)","title":"Insurable Earnings"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year, 2025 or 2026 (EI also 2027). Defaults to the current year (UTC); the response says which year it used","title":"Year"},"ytd_employee_premiums":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Year-to-date amount before this pay period as a plain decimal; 0 for the first period of the year","title":"Ytd Employee Premiums"},"ytd_employer_premiums":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"null"}],"default":null,"description":"Employer QPIP premiums already paid this year for this employee; when left out it is derived from the employee's year-to-date amount","title":"Ytd Employer Premiums"}},"required":["insurable_earnings"],"title":"qpip_premiumArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/minimum_wage":{"post":{"operationId":"minimum_wage","summary":"General hourly minimum wage of a province (or the federal rate) on a date, with the effective date, the next scheduled c","description":"General hourly minimum wage of a province (or the federal rate) on a date, with the effective date, the next scheduled change and the source. Use for \"What is the minimum wage in Ontario on October 1, 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"province":{"description":"Province code or name: ON, BC, AB, QC, SK, MB, NS, NB, NL, PE (or Ontario, Quebec, ...). CA or 'federal' selects the Canada Labour Code rate. Yukon, Northwest Territories and Nunavut are recognised but not covered.","title":"Province","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date as YYYY-MM-DD, 2025-06-01 or later (earliest date depends on the province); defaults to today (UTC). Changes take effect at local midnight, so pass the date explicitly near a change.","title":"On Date"}},"required":["province"],"title":"minimum_wageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/check_hourly_rate":{"post":{"operationId":"check_hourly_rate","summary":"Test an hourly pay rate against the general minimum wage of a province on a date and show any shortfall per hour. Use fo","description":"Test an hourly pay rate against the general minimum wage of a province on a date and show any shortfall per hour. Use for \"Is $17.75 an hour legal in Ontario on October 1, 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"province":{"description":"Province code or name: ON, BC, AB, QC, SK, MB, NS, NB, NL, PE (or Ontario, Quebec, ...). CA or 'federal' selects the Canada Labour Code rate. Yukon, Northwest Territories and Nunavut are recognised but not covered.","title":"Province","type":"string"},"hourly_rate":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Hourly pay in Canadian dollars as a plain decimal such as 17.50 (digits and one point; no currency symbol, no thousands separator)","title":"Hourly Rate"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date as YYYY-MM-DD, 2025-06-01 or later (earliest date depends on the province); defaults to today (UTC). Changes take effect at local midnight, so pass the date explicitly near a change.","title":"On Date"},"federally_regulated":{"default":false,"description":"True for federally regulated private-sector employers: the higher of the provincial and the federal rate is used","title":"Federally Regulated","type":"boolean"}},"required":["province","hourly_rate"],"title":"check_hourly_rateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/gst_registration_deadline":{"post":{"operationId":"gst_registration_deadline","summary":"When registration takes effect and the 29-day application window after the threshold is crossed in one quarter or over f","description":"When registration takes effect and the 29-day application window after the threshold is crossed in one quarter or over four quarters. Use for \"I passed 30,000 on 2026-08-14 in one quarter: what date must I be registered by?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"trigger":{"description":"single_quarter (exceeded 30,000 within one calendar quarter) or four_quarters (exceeded it over four consecutive quarters)","title":"Trigger","type":"string"},"on_date":{"description":"single_quarter: the date of the supply that took you over 30,000. four_quarters: the last day of the quarter in which the four-quarter total exceeded 30,000. YYYY-MM-DD","title":"On Date","type":"string"}},"required":["trigger","on_date"],"title":"registration_deadlineArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/casl_consent_basis_check":{"post":{"operationId":"casl_consent_basis_check","summary":"Classify a consent basis as express or implied (existing business or non-business relationship, inquiry, published addre","description":"Classify a consent basis as express or implied (existing business or non-business relationship, inquiry, published address) and test whether it covers a message on a date. Use for \"A customer bought from us on 15 March 2025: can I email them a promotion on 29 September 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"basis":{"description":"Consent basis: express, purchase, business_opportunity, contract, inquiry, donation_or_volunteer, membership or published_address","title":"Basis","type":"string"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of the purchase, acceptance, inquiry, donation, contract expiry or end of membership as YYYY-MM-DD; not needed for express, published_address or ongoing","title":"Event Date"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date the message would be sent, as YYYY-MM-DD; defaults to today (UTC)","title":"On Date"},"ongoing":{"default":false,"description":"True while a contract is in force or the person is still a member","title":"Ongoing","type":"boolean"}},"required":["basis"],"title":"consent_basis_checkArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/bids_search_open_tenders":{"post":{"operationId":"bids_search_open_tenders","summary":"Search the open federal tender notices by keyword, UNSPSC or GSIN code, region, category, closing window and publication","description":"Search the open federal tender notices by keyword, UNSPSC or GSIN code, region, category, closing window and publication window. Default answer about 10 KB (detail=summary, at most 12 compact notices); detail=full returns up to limit complete notices, about 30 KB at 25. Use for \"Which open federal tenders for laptops deliver to British Columbia?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated keywords matched against title, description and category text (any of them), for example 'snow removal, janitorial'","title":"Keywords"},"unspsc":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated UNSPSC code prefixes (2 to 8 digits), for example '72,8111'","title":"Unspsc"},"gsin":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated GSIN code prefixes (1 to 6 letters or digits), for example 'N7'","title":"Gsin"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Region of delivery: a province or territory name or two-letter code, for example 'Ontario' or 'BC'","title":"Region"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"goods, services or construction (text match on the procurement category)","title":"Category"},"closes_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only notices closing on or after this date, YYYY-MM-DD (default: on_date)","title":"Closes From"},"closes_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only notices closing on or before this date, YYYY-MM-DD","title":"Closes To"},"published_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only notices published on or after this date, YYYY-MM-DD (the publicationDate column of the file; none by default)","title":"Published From"},"published_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only notices published on or before this date, YYYY-MM-DD","title":"Published To"},"limit":{"default":25,"description":"Maximum notices returned (1 to 100)","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in Toronto)","title":"On Date"},"detail":{"default":"summary","description":"'summary' (default): compact rows (reference, title, status, dates, category, regions, entity, link, matched terms), at most 12 notices, about 10 KB; 'full': up to limit complete rows with description excerpts, about 30 KB at 25 and 55 KB at 50 notices","enum":["summary","full"],"title":"Detail","type":"string"}},"title":"search_open_tendersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/quickm_compare_regular_vs_quick":{"post":{"operationId":"quickm_compare_regular_vs_quick","summary":"Side by side for one period: regular net tax (GST/HST in the sales less the input tax credits you enter) against the qui","description":"Side by side for one period: regular net tax (GST/HST in the sales less the input tax credits you enter) against the quick method remittance. Use for \"For $45,000 of sales including HST and $2,500 of GST/HST paid on purchases, would the quick method remit less than the regular method?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sales":{"description":"One object per supply province: {\"province\": \"ON\", \"sales_including_tax\": \"36000.00\"}; codes AB BC MB NB NL NS NT NU ON PE SK YT (QC refused); eligible sales including GST/HST","items":{"additionalProperties":true,"type":"object"},"title":"Sales","type":"array"},"pe_province":{"description":"Two-letter code of the province or territory of your permanent establishment (AB BC MB NB NL NS NT NU ON PE SK YT)","title":"Pe Province","type":"string"},"supply_kind":{"description":"goods_for_resale or services: the RC4058 table that applies to your business (the guide's goods table needs goods bought for resale, or for goods you make, to be at least 40% of revenue)","title":"Supply Kind","type":"string"},"itc_regular":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Canadian dollars as a plain decimal such as 12000.00 (digits and one point, at most 2 decimals; no symbol, no thousands separator)","title":"Itc Regular"},"itc_allowed_under_quick":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Canadian dollars as a plain decimal such as 12000.00 (digits and one point, at most 2 decimals; no symbol, no thousands separator)","title":"Itc Allowed Under Quick"},"eligible_sales_ytd_before":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"default":"0","description":"Eligible sales including tax already reported earlier in the same fiscal year, plain decimal; 0 if none","title":"Eligible Sales Ytd Before"},"supply_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of the supplies, YYYY-MM-DD, selecting the table version (stored from 2025-04-01). Defaults to today (UTC)","title":"Supply Date"}},"required":["sales","pe_province","supply_kind","itc_regular"],"title":"compare_regular_vs_quickArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/vehicle_allowance_for_km":{"post":{"operationId":"vehicle_allowance_for_km","summary":"Tax-exempt per-kilometre allowance for the business kilometres driven in a year (2025 or 2026): the first 5,000 km at th","description":"Tax-exempt per-kilometre allowance for the business kilometres driven in a year (2025 or 2026): the first 5,000 km at the higher rate, the rest at the lower, provinces or territories. Use for \"What is the highest per-kilometre allowance I can pay an employee for 8,000 business km in 2026 without it being taxable?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"total_km":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Kilometres as a plain decimal such as 8000 or 1250.5 (at most 2 decimals; no thousands separator)","title":"Total Km"},"region":{"description":"province, territory (Yukon, Northwest Territories, Nunavut) or a two-letter code such as ON or YT","title":"Region","type":"string"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"2025 or 2026; defaults to the current year (UTC) and the answer says which it used","title":"Year"}},"required":["total_km","region"],"title":"allowance_for_kmArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/boc_convert_amount":{"post":{"operationId":"boc_convert_amount","summary":"Convert an amount between CAD and a listed currency, or between two listed currencies through CAD, with the rate date. U","description":"Convert an amount between CAD and a listed currency, or between two listed currencies through CAD, with the rate date. Use for \"How many Canadian dollars is USD 1,000 at the Bank of Canada rate of 2026-09-28?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"amount":{"description":"Amount to convert as a plain decimal string, for example 1250.50","title":"Amount","type":"string"},"from_currency":{"description":"ISO 4217 code of the amount's currency, or CAD","title":"From Currency","type":"string"},"to_currency":{"description":"ISO 4217 code to convert into, or CAD","title":"To Currency","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Observation date, YYYY-MM-DD; default is the latest observation","title":"On Date"},"use_previous_if_unpublished":{"default":false,"description":"If the series has no observation on on_date, use the previous observation and say so; default false, which returns no conversion","title":"Use Previous If Unpublished","type":"boolean"}},"required":["amount","from_currency","to_currency"],"title":"convert_amountArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/tm_filing_fee":{"post":{"operationId":"tm_filing_fee","summary":"Compute the CIPO application fee for N classes, online or by other means, for a date in 2026 or 2027, with the other met","description":"Compute the CIPO application fee for N classes, online or by other means, for a date in 2026 or 2027, with the other method's total for comparison. Use for \"How much does CIPO charge to file a trademark application online for two classes?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"classes":{"description":"Number of classes of goods or services in the application, 1 to 100","maximum":100,"minimum":1,"title":"Classes","type":"integer"},"method":{"description":"How the application or renewal is filed: online or other_means (anything that is not online)","title":"Method","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date YYYY-MM-DD that picks the fee column (2026-01-01 to 2027-12-31); defaults to today (UTC) and the answer says which date was used","title":"On Date"}},"required":["classes","method"],"title":"filing_feeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/eht_ontario_estimate":{"post":{"operationId":"eht_ontario_estimate","summary":"Ontario employer health tax for a calendar year (2020 to 2028) from total Ontario remuneration: the $1,000,000 exemption","description":"Ontario employer health tax for a calendar year (2020 to 2028) from total Ontario remuneration: the $1,000,000 exemption, the $5 million rule, the rate band chosen before the exemption, and the tax. Use for \"My Ontario payroll was $1,300,000 last year: do I owe employer health tax and how much?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ontario_remuneration":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Canadian dollars as a plain decimal such as 1300000.00 (digits and one point, at most 2 decimals; no symbol, no thousands separator)","title":"Ontario Remuneration"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year; defaults to the current year (UTC) and the answer says which it used","title":"Year"},"registered_charity":{"default":false,"description":"True if the employer is a registered charity (a charity may still claim the exemption above $5 million)","title":"Registered Charity","type":"boolean"},"claims_exemption":{"default":true,"description":"True (default) if the employer is an eligible employer claiming the exemption; false to compute with no exemption","title":"Claims Exemption","type":"boolean"},"associated_group_remuneration":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"null"}],"default":null,"description":"Combined Ontario remuneration of all associated employers, plain decimal, if the employer is associated with others; omit if not","title":"Associated Group Remuneration"}},"required":["ontario_remuneration"],"title":"ontario_eht_estimateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/eht_bc_liability":{"post":{"operationId":"eht_bc_liability","summary":"British Columbia employer health tax for a calendar year (2024 to 2026) from total B.C. remuneration: exempt up to $1,00","description":"British Columbia employer health tax for a calendar year (2024 to 2026) from total B.C. remuneration: exempt up to $1,000,000, 5.85% of the excess up to $1,500,000, 1.95% of the total above that. Use for \"My B.C. payroll for 2026 is $1,200,000: how much employer health tax is that?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"bc_remuneration":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Canadian dollars as a plain decimal such as 1300000.00 (digits and one point, at most 2 decimals; no symbol, no thousands separator)","title":"Bc Remuneration"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Calendar year; defaults to the current year (UTC) and the answer says which it used","title":"Year"},"associated_employers":{"default":false,"description":"True if the employer is associated with others (they share one $1,000,000 exemption; the tool does not allocate it)","title":"Associated Employers","type":"boolean"}},"required":["bc_remuneration"],"title":"bc_eht_liabilityArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/wcb_wsib_class_rate":{"post":{"operationId":"wcb_wsib_class_rate","summary":"WSIB 2026 premium rate per $100 for a rate class (A to P subclasses and rate group 755), or a text search of class descr","description":"WSIB 2026 premium rate per $100 for a rate class (A to P subclasses and rate group 755), or a text search of class descriptions. Use for \"What is the 2026 WSIB rate for specialty trades construction?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"class_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"WSIB class code such as G5, E1 or 755 (omit to search or list)","title":"Class Code"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Words to find in the class description, for example 'retail' (omit to list every class)","title":"Query"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date the premium year is taken from, YYYY-MM-DD (default: today in Toronto); only 2026 rates are held","title":"On Date"}},"title":"wsib_class_rateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}