statetakehome-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,12 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file.
4
+
5
+ ## [0.1.0] - 2026-07-03
6
+
7
+ ### Added
8
+ - Initial release.
9
+ - `us_take_home_pay` — federal + state (50 states + DC) + FICA take-home pay calculation.
10
+ - `self_employment_tax` — Schedule SE self-employment tax, Additional Medicare, and quarterly estimates.
11
+ - `capital_gains_tax` — long-/short-term capital gains tax with NIIT.
12
+ - Calculation engine ported verbatim from statetakehome.com (2026 tax year, Tax Foundation Jan 1, 2026 + IRS Rev. Proc. 2025-32 sources).
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 tresor4k
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,163 @@
1
+ # statetakehome-mcp
2
+
3
+ [![npm version](https://img.shields.io/npm/v/statetakehome-mcp.svg)](https://www.npmjs.com/package/statetakehome-mcp)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ A Model Context Protocol (MCP) server that puts a full US paycheck-tax engine directly at your AI assistant's fingertips: federal brackets, all 50 states + DC, FICA, self-employment tax, and capital gains — all for the 2026 tax year, and all sourced from the same engine that powers [statetakehome.com](https://statetakehome.com).
7
+
8
+ **Why it's different:** most take-home-pay calculators stop at "gross minus taxes." This one also understands the **2026 OBBBA (One Big Beautiful Bill Act)** landscape — the current-year federal brackets and thresholds it ships with already reflect the post-OBBBA baseline, so estimates stay accurate as the rules that shaped the 2026 tax year continue to roll out.
9
+
10
+ ## Quick Start
11
+
12
+ No installation needed — run it with `npx`.
13
+
14
+ ### Claude Desktop / Claude Code
15
+
16
+ Add to your MCP config (`claude_desktop_config.json` or `.mcp.json`):
17
+
18
+ ```json
19
+ {
20
+ "mcpServers": {
21
+ "statetakehome": {
22
+ "command": "npx",
23
+ "args": ["-y", "statetakehome-mcp"]
24
+ }
25
+ }
26
+ }
27
+ ```
28
+
29
+ ### Cursor
30
+
31
+ Add to `.cursor/mcp.json`:
32
+
33
+ ```json
34
+ {
35
+ "mcpServers": {
36
+ "statetakehome": {
37
+ "command": "npx",
38
+ "args": ["-y", "statetakehome-mcp"]
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+ Restart your client and the three tools below become available.
45
+
46
+ ## Tools
47
+
48
+ ### 1. `us_take_home_pay`
49
+
50
+ Net pay for a US W-2 employee: federal income tax, state income tax (all 50 states + DC), Social Security, Medicare, Additional Medicare, and state-specific extras (CA SDI, OR transit tax, etc.). Handles pre-tax 401(k) and health-insurance deductions and returns a per-paycheck breakdown for every pay frequency.
51
+
52
+ **Example call:**
53
+
54
+ ```json
55
+ {
56
+ "gross": 75000,
57
+ "state": "CA",
58
+ "filingStatus": "single"
59
+ }
60
+ ```
61
+
62
+ **Response (abridged, from the live engine):**
63
+
64
+ ```json
65
+ {
66
+ "result": {
67
+ "gross": 75000,
68
+ "federalTax": 7670,
69
+ "stateTax": 2940.85,
70
+ "socialSecurity": 4650,
71
+ "medicare": 1087.5,
72
+ "totalTax": 17323.35,
73
+ "takeHome": 57676.65,
74
+ "effectiveRate": 0.2310,
75
+ "perPaycheck": { "biweekly": 2218.33, "monthly": 4806.39 }
76
+ }
77
+ }
78
+ ```
79
+
80
+ The same input with `"state": "TX"` (no state income tax) returns `stateTax: 0` and `takeHome: 61592.5` — $3,915.85 higher on the same gross pay.
81
+
82
+ ### 2. `self_employment_tax`
83
+
84
+ Schedule SE self-employment tax (15.3% on 92.35% of net profit, split into the Social Security and Medicare portions), the 0.9% Additional Medicare surtax, federal income tax, an optional state income tax, and a quarterly estimated-payment figure.
85
+
86
+ **Example call:**
87
+
88
+ ```json
89
+ {
90
+ "netProfit": 90000,
91
+ "filingStatus": "single",
92
+ "state": "TX"
93
+ }
94
+ ```
95
+
96
+ **Response (abridged, from the live engine):**
97
+
98
+ ```json
99
+ {
100
+ "result": {
101
+ "netProfit": 90000,
102
+ "seTax": 12716.6,
103
+ "seTaxDeduction": 6358.3,
104
+ "federalIncomeTax": 9571.17,
105
+ "totalTax": 22287.77,
106
+ "quarterlyEstimate": 5571.94,
107
+ "setAsidePct": 0.2477
108
+ }
109
+ }
110
+ ```
111
+
112
+ ### 3. `capital_gains_tax`
113
+
114
+ Federal capital gains tax — long-term stacked 0%/15%/20% bands or short-term ordinary rates — plus the 3.8% Net Investment Income Tax (NIIT) above the MAGI threshold, and an optional state estimate (most states tax gains as ordinary income).
115
+
116
+ **Example call:**
117
+
118
+ ```json
119
+ {
120
+ "gain": 50000,
121
+ "ordinaryTaxableIncome": 80000,
122
+ "filingStatus": "single",
123
+ "term": "long"
124
+ }
125
+ ```
126
+
127
+ **Response (abridged, from the live engine):**
128
+
129
+ ```json
130
+ {
131
+ "result": {
132
+ "gain": 50000,
133
+ "taxableGain": 50000,
134
+ "federalTax": 7500,
135
+ "niit": 0,
136
+ "totalTax": 7500,
137
+ "netProceeds": 42500,
138
+ "ltcgRate": 0.15
139
+ }
140
+ }
141
+ ```
142
+
143
+ ## Data & Methodology
144
+
145
+ - **Tax year:** 2026.
146
+ - **Federal brackets & standard deduction:** IRS Rev. Proc. 2025-32.
147
+ - **State brackets & standard deductions:** Tax Foundation — *State Individual Income Tax Rates and Brackets*, as of January 1, 2026, cross-checked against individual state Departments of Revenue.
148
+ - **FICA:** current Social Security wage base and Medicare rates, including the 0.9% Additional Medicare surtax.
149
+ - **Capital gains:** long-term bands and the NIIT threshold per Rev. Proc. 2025-32, cross-checked against Tax Foundation and Schwab.
150
+ - Every response includes a `source` block naming the underlying publication and a `reference_url` pointing to the matching calculator on the live site for further reading and methodology notes:
151
+ - https://statetakehome.com/
152
+ - https://statetakehome.com/self-employment-tax-calculator
153
+ - https://statetakehome.com/capital-gains-tax-calculator
154
+
155
+ The calculation code in this package is the same engine that runs statetakehome.com, kept in sync by hand — it is not a reimplementation.
156
+
157
+ ## Disclaimer
158
+
159
+ This tool produces estimates for planning purposes only. It is **not tax advice**. Tax situations vary; consult a licensed CPA or tax professional before making financial decisions.
160
+
161
+ ## License
162
+
163
+ MIT © [tresor4k](https://github.com/tresor4k)
@@ -0,0 +1,285 @@
1
+ {
2
+ "metadata": {
3
+ "generated": "2026-06-19",
4
+ "tax_year": 2026,
5
+ "country": "CA",
6
+ "data_policy": "All 2026 figures verified against official sources. Federal & provincial brackets and basic personal amounts confirmed to CRA T4127 Payroll Deductions Formulas (effective January 1, 2026) via taxtips.ca. CPP/CPP2/EI from CRA payroll tables. QPP/QPP2 from Retraite Quebec; QPIP/RQAP from Revenu Quebec / CFIB; Quebec EI reduced rate from CRA. Income tax in Canada is individual (no joint filing).",
7
+ "sources": [
8
+ "https://www.canada.ca/en/revenue-agency/services/tax/individuals/frequently-asked-questions-individuals/canadian-income-tax-rates-individuals-current-previous-years.html",
9
+ "https://www.taxtips.ca/taxrates/canada.htm",
10
+ "https://www.canada.ca/en/revenue-agency/services/tax/businesses/topics/payroll/payroll-deductions-contributions/canada-pension-plan-cpp/cpp-contribution-rates-maximums-exemptions.html",
11
+ "https://www.canada.ca/en/revenue-agency/services/tax/businesses/topics/payroll/calculating-deductions/making-deductions/second-additional-cpp-contribution-rates-maximums.html",
12
+ "https://www.canada.ca/en/revenue-agency/services/tax/businesses/topics/payroll/payroll-deductions-contributions/employment-insurance-ei/ei-premium-rates-maximums.html",
13
+ "https://www.retraitequebec.gouv.qc.ca/fr/programmes/regime-rentes-quebec/regime-supplementaire",
14
+ "https://www.revenuquebec.ca/en/businesses/source-deductions-and-employer-contributions/calculating-source-deductions-and-contributions/qpip-premiums/maximum-insurable-earnings-and-premium-rate/",
15
+ "https://www.retailcouncil.org/resources/quick-facts/minimum-wage-by-province/"
16
+ ],
17
+ "last_verification": "2026-06-19"
18
+ },
19
+ "federal": {
20
+ "year": 2026,
21
+ "source": "CRA T4127 (eff. Jan 1, 2026), cross-checked taxtips.ca",
22
+ "verify_url": "https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html",
23
+ "brackets": [
24
+ { "rate": 0.14, "min": 0, "max": 58523 },
25
+ { "rate": 0.205, "min": 58523, "max": 117045 },
26
+ { "rate": 0.26, "min": 117045, "max": 181440 },
27
+ { "rate": 0.29, "min": 181440, "max": 258482 },
28
+ { "rate": 0.33, "min": 258482, "max": null }
29
+ ],
30
+ "basic_personal_amount": { "base": 14829, "max": 16452, "phaseout_start": 181440, "phaseout_end": 258482 },
31
+ "bpa_credit_rate": 0.14,
32
+ "quebec_abatement_rate": 0.165,
33
+ "cpp": { "rate": 0.0595, "max_pensionable_earnings": 74600, "basic_exemption": 3500, "max_contribution": 4230.45 },
34
+ "cpp2": { "rate": 0.04, "lower": 74600, "upper": 85000, "max_contribution": 416 },
35
+ "qpp": { "rate": 0.063, "max_pensionable_earnings": 74600, "basic_exemption": 3500, "max_contribution": 4479.30 },
36
+ "qpp2": { "rate": 0.04, "lower": 74600, "upper": 85000, "max_contribution": 416 },
37
+ "ei_federal": { "rate": 0.0163, "max_insurable_earnings": 68900, "max_contribution": 1123.07 },
38
+ "ei_quebec": { "rate": 0.013, "max_insurable_earnings": 68900, "max_contribution": 895.70 },
39
+ "qpip": { "rate": 0.0043, "max_insurable_earnings": 103000, "max_contribution": 442.90 }
40
+ },
41
+ "provinces": {
42
+ "ON": {
43
+ "name": "Ontario",
44
+ "fr_name": "Ontario",
45
+ "abbr": "ON",
46
+ "pension": "CPP",
47
+ "ei": "federal",
48
+ "brackets": [
49
+ { "rate": 0.0505, "min": 0, "max": 53891 },
50
+ { "rate": 0.0915, "min": 53891, "max": 107785 },
51
+ { "rate": 0.1116, "min": 107785, "max": 150000 },
52
+ { "rate": 0.1216, "min": 150000, "max": 220000 },
53
+ { "rate": 0.1316, "min": 220000, "max": null }
54
+ ],
55
+ "basic_personal_amount": 12989,
56
+ "bpa_credit_rate": 0.0505,
57
+ "surtax": [
58
+ { "threshold": 5818, "rate": 0.20 },
59
+ { "threshold": 7446, "rate": 0.36 }
60
+ ],
61
+ "health_premium": true,
62
+ "notes": "2026 brackets indexed 1.9% (150k/220k thresholds not indexed). Ontario surtax: 20% of basic provincial tax over $5,818, plus 36% over $7,446. Ontario Health Premium up to $900 by taxable income. BPA $12,989.",
63
+ "source_year": 2026
64
+ },
65
+ "BC": {
66
+ "name": "British Columbia",
67
+ "fr_name": "Colombie-Britannique",
68
+ "abbr": "BC",
69
+ "pension": "CPP",
70
+ "ei": "federal",
71
+ "brackets": [
72
+ { "rate": 0.056, "min": 0, "max": 50363 },
73
+ { "rate": 0.077, "min": 50363, "max": 100728 },
74
+ { "rate": 0.105, "min": 100728, "max": 115648 },
75
+ { "rate": 0.1229, "min": 115648, "max": 140430 },
76
+ { "rate": 0.147, "min": 140430, "max": 190405 },
77
+ { "rate": 0.168, "min": 190405, "max": 265545 },
78
+ { "rate": 0.205, "min": 265545, "max": null }
79
+ ],
80
+ "basic_personal_amount": 13216,
81
+ "bpa_credit_rate": 0.056,
82
+ "notes": "Lowest BC rate raised to 5.60% (from 5.06%) for 2026 per BC 2026 Budget. Brackets indexed 2.2%. BPA $13,216.",
83
+ "source_year": 2026
84
+ },
85
+ "AB": {
86
+ "name": "Alberta",
87
+ "fr_name": "Alberta",
88
+ "abbr": "AB",
89
+ "pension": "CPP",
90
+ "ei": "federal",
91
+ "brackets": [
92
+ { "rate": 0.08, "min": 0, "max": 61200 },
93
+ { "rate": 0.10, "min": 61200, "max": 154259 },
94
+ { "rate": 0.12, "min": 154259, "max": 185111 },
95
+ { "rate": 0.13, "min": 185111, "max": 246813 },
96
+ { "rate": 0.14, "min": 246813, "max": 370220 },
97
+ { "rate": 0.15, "min": 370220, "max": null }
98
+ ],
99
+ "basic_personal_amount": 22769,
100
+ "bpa_credit_rate": 0.08,
101
+ "notes": "New 8% bottom bracket (first $61,200) introduced; large BPA $22,769 means low earners pay little/no Alberta tax. Indexed 2%.",
102
+ "source_year": 2026
103
+ },
104
+ "QC": {
105
+ "name": "Quebec",
106
+ "fr_name": "Québec",
107
+ "abbr": "QC",
108
+ "pension": "QPP",
109
+ "ei": "quebec",
110
+ "qpip": true,
111
+ "abatement": true,
112
+ "brackets": [
113
+ { "rate": 0.14, "min": 0, "max": 54345 },
114
+ { "rate": 0.19, "min": 54345, "max": 108680 },
115
+ { "rate": 0.24, "min": 108680, "max": 132245 },
116
+ { "rate": 0.2575, "min": 132245, "max": null }
117
+ ],
118
+ "basic_personal_amount": 18952,
119
+ "bpa_credit_rate": 0.14,
120
+ "notes": "Quebec administers its own income tax. Workers pay QPP (6.30%) not CPP, reduced EI (1.30%), and QPIP/RQAP (0.430%). Quebec residents receive the 16.5% federal tax abatement (federal tax reduced 16.5%). BPA $18,952.",
121
+ "source_year": 2026
122
+ },
123
+ "MB": {
124
+ "name": "Manitoba",
125
+ "fr_name": "Manitoba",
126
+ "abbr": "MB",
127
+ "pension": "CPP",
128
+ "ei": "federal",
129
+ "brackets": [
130
+ { "rate": 0.108, "min": 0, "max": 47000 },
131
+ { "rate": 0.1275, "min": 47000, "max": 100000 },
132
+ { "rate": 0.174, "min": 100000, "max": null }
133
+ ],
134
+ "basic_personal_amount": 15780,
135
+ "bpa_credit_rate": 0.108,
136
+ "notes": "Manitoba brackets and BPA frozen at 2024 levels (no indexation for 2025-2026). BPA $15,780 (phases out for net income $200k-$400k). BPA $15,780.",
137
+ "source_year": 2026
138
+ },
139
+ "SK": {
140
+ "name": "Saskatchewan",
141
+ "fr_name": "Saskatchewan",
142
+ "abbr": "SK",
143
+ "pension": "CPP",
144
+ "ei": "federal",
145
+ "brackets": [
146
+ { "rate": 0.105, "min": 0, "max": 54532 },
147
+ { "rate": 0.125, "min": 54532, "max": 155805 },
148
+ { "rate": 0.145, "min": 155805, "max": null }
149
+ ],
150
+ "basic_personal_amount": 20381,
151
+ "bpa_credit_rate": 0.105,
152
+ "notes": "High BPA $20,381 (raised by Dec 2024 affordability measures). Indexed with federal factor 2%.",
153
+ "source_year": 2026
154
+ },
155
+ "NS": {
156
+ "name": "Nova Scotia",
157
+ "fr_name": "Nouvelle-Ecosse",
158
+ "abbr": "NS",
159
+ "pension": "CPP",
160
+ "ei": "federal",
161
+ "brackets": [
162
+ { "rate": 0.0879, "min": 0, "max": 30995 },
163
+ { "rate": 0.1495, "min": 30995, "max": 61991 },
164
+ { "rate": 0.1667, "min": 61991, "max": 97417 },
165
+ { "rate": 0.175, "min": 97417, "max": 157124 },
166
+ { "rate": 0.21, "min": 157124, "max": null }
167
+ ],
168
+ "basic_personal_amount": 11932,
169
+ "bpa_credit_rate": 0.0879,
170
+ "notes": "Began indexing brackets in 2025; 2026 factor 1.6%. $3,000 low-income BPA supplement eliminated, BPA now $11,932.",
171
+ "source_year": 2026
172
+ },
173
+ "NB": {
174
+ "name": "New Brunswick",
175
+ "fr_name": "Nouveau-Brunswick",
176
+ "abbr": "NB",
177
+ "pension": "CPP",
178
+ "ei": "federal",
179
+ "brackets": [
180
+ { "rate": 0.094, "min": 0, "max": 52333 },
181
+ { "rate": 0.14, "min": 52333, "max": 104666 },
182
+ { "rate": 0.16, "min": 104666, "max": 193861 },
183
+ { "rate": 0.195, "min": 193861, "max": null }
184
+ ],
185
+ "basic_personal_amount": 13664,
186
+ "bpa_credit_rate": 0.094,
187
+ "notes": "Four brackets, low 9.4% bottom rate. Indexed with federal factor 2%. BPA $13,664.",
188
+ "source_year": 2026
189
+ },
190
+ "NL": {
191
+ "name": "Newfoundland and Labrador",
192
+ "fr_name": "Terre-Neuve-et-Labrador",
193
+ "abbr": "NL",
194
+ "pension": "CPP",
195
+ "ei": "federal",
196
+ "brackets": [
197
+ { "rate": 0.087, "min": 0, "max": 44678 },
198
+ { "rate": 0.145, "min": 44678, "max": 89354 },
199
+ { "rate": 0.158, "min": 89354, "max": 159528 },
200
+ { "rate": 0.178, "min": 159528, "max": 223340 },
201
+ { "rate": 0.198, "min": 223340, "max": 285319 },
202
+ { "rate": 0.208, "min": 285319, "max": 570638 },
203
+ { "rate": 0.213, "min": 570638, "max": 1141275 },
204
+ { "rate": 0.218, "min": 1141275, "max": null }
205
+ ],
206
+ "basic_personal_amount": 13094,
207
+ "bpa_credit_rate": 0.087,
208
+ "notes": "Eight brackets (most in Canada). NL 2026 Budget raised BPA to $13,094; new PC government has said it intends to raise BPA to $15,000.",
209
+ "source_year": 2026
210
+ },
211
+ "PE": {
212
+ "name": "Prince Edward Island",
213
+ "fr_name": "Ile-du-Prince-Edouard",
214
+ "abbr": "PE",
215
+ "pension": "CPP",
216
+ "ei": "federal",
217
+ "brackets": [
218
+ { "rate": 0.095, "min": 0, "max": 33928 },
219
+ { "rate": 0.1347, "min": 33928, "max": 65820 },
220
+ { "rate": 0.166, "min": 65820, "max": 106890 },
221
+ { "rate": 0.1762, "min": 106890, "max": 142250 },
222
+ { "rate": 0.19, "min": 142250, "max": 200000 },
223
+ { "rate": 0.20, "min": 200000, "max": null }
224
+ ],
225
+ "basic_personal_amount": 15000,
226
+ "bpa_credit_rate": 0.095,
227
+ "notes": "New 20% bracket over $200,000 added by PEI 2026 Budget. BPA $15,000.",
228
+ "source_year": 2026
229
+ },
230
+ "YT": {
231
+ "name": "Yukon",
232
+ "fr_name": "Yukon",
233
+ "abbr": "YT",
234
+ "pension": "CPP",
235
+ "ei": "federal",
236
+ "brackets": [
237
+ { "rate": 0.064, "min": 0, "max": 58523 },
238
+ { "rate": 0.09, "min": 58523, "max": 117045 },
239
+ { "rate": 0.109, "min": 117045, "max": 181440 },
240
+ { "rate": 0.1293, "min": 181440, "max": 258482 },
241
+ { "rate": 0.128, "min": 258482, "max": 500000 },
242
+ { "rate": 0.15, "min": 500000, "max": null }
243
+ ],
244
+ "basic_personal_amount": 16452,
245
+ "bpa_credit_rate": 0.064,
246
+ "bpa_phaseout": { "base": 14829, "max": 16452, "phaseout_start": 181440, "phaseout_end": 258482 },
247
+ "notes": "Yukon mirrors federal brackets for first 3 bands and the enhanced federal BPA (phases from $16,452 to $14,829). Credited at 6.4%.",
248
+ "source_year": 2026
249
+ },
250
+ "NT": {
251
+ "name": "Northwest Territories",
252
+ "fr_name": "Territoires du Nord-Ouest",
253
+ "abbr": "NT",
254
+ "pension": "CPP",
255
+ "ei": "federal",
256
+ "brackets": [
257
+ { "rate": 0.059, "min": 0, "max": 53003 },
258
+ { "rate": 0.086, "min": 53003, "max": 106009 },
259
+ { "rate": 0.122, "min": 106009, "max": 172346 },
260
+ { "rate": 0.1405, "min": 172346, "max": null }
261
+ ],
262
+ "basic_personal_amount": 18198,
263
+ "bpa_credit_rate": 0.059,
264
+ "notes": "Low 5.9% bottom rate and high BPA $18,198. Indexed with federal factor 2%.",
265
+ "source_year": 2026
266
+ },
267
+ "NU": {
268
+ "name": "Nunavut",
269
+ "fr_name": "Nunavut",
270
+ "abbr": "NU",
271
+ "pension": "CPP",
272
+ "ei": "federal",
273
+ "brackets": [
274
+ { "rate": 0.04, "min": 0, "max": 55801 },
275
+ { "rate": 0.07, "min": 55801, "max": 111602 },
276
+ { "rate": 0.09, "min": 111602, "max": 181439 },
277
+ { "rate": 0.115, "min": 181439, "max": null }
278
+ ],
279
+ "basic_personal_amount": 19659,
280
+ "bpa_credit_rate": 0.04,
281
+ "notes": "Lowest bottom rate in Canada (4%) and high BPA $19,659. Indexed with federal factor 2%.",
282
+ "source_year": 2026
283
+ }
284
+ }
285
+ }