mcp-server-taxcode 0.5.0__tar.gz → 0.6.0__tar.gz

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.
Files changed (178) hide show
  1. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.github/workflows/ci.yml +3 -3
  2. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/AGENTS.md +2 -2
  3. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/PKG-INFO +26 -20
  4. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/README.md +25 -19
  5. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/llms-full.txt +1 -1
  6. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/llms.txt +2 -2
  7. mcp_server_taxcode-0.6.0/scripts/ingest_statutes.py +5468 -0
  8. mcp_server_taxcode-0.6.0/skills/taxcode-mcp/SKILL.md +55 -0
  9. mcp_server_taxcode-0.6.0/src/taxcode_mcp/db.py +5578 -0
  10. mcp_server_taxcode-0.6.0/src/taxcode_mcp/disclaimers.py +90 -0
  11. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/tools/compliance.py +32 -25
  12. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/tools/statutes.py +17 -3
  13. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/tools/system.py +2 -0
  14. mcp_server_taxcode-0.6.0/tests/fixtures/usc26_sample.xml +31 -0
  15. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_db.py +104 -11
  16. mcp_server_taxcode-0.6.0/tests/test_disclaimers.py +173 -0
  17. mcp_server_taxcode-0.6.0/tests/test_federal.py +177 -0
  18. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_ingest.py +70 -1
  19. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_server.py +7 -2
  20. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/uv.lock +6 -6
  21. mcp_server_taxcode-0.5.0/scripts/ingest_statutes.py +0 -2726
  22. mcp_server_taxcode-0.5.0/skills/taxcode-mcp/SKILL.md +0 -54
  23. mcp_server_taxcode-0.5.0/src/taxcode_mcp/db.py +0 -2630
  24. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.github/dependabot.yml +0 -0
  25. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.github/workflows/dependabot-automerge.yml +0 -0
  26. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.github/workflows/drift-monitor.yml +0 -0
  27. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.github/workflows/release.yml +0 -0
  28. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.gitignore +0 -0
  29. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/CHANGELOG.md +0 -0
  30. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/CODE_OF_CONDUCT.md +0 -0
  31. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/CONTRIBUTING.md +0 -0
  32. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/Dockerfile +0 -0
  33. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/LICENSE +0 -0
  34. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/SECURITY.md +0 -0
  35. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/conformance-baseline.yml +0 -0
  36. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ak/alaska stat._43_05_080.md +0 -0
  37. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/al/ala. code_40_18_2.md +0 -0
  38. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ar/a.c.a._26_51_201.md +0 -0
  39. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/az/a.r.s._43_1011.md +0 -0
  40. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/az/a.r.s._43_104.md +0 -0
  41. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ca/caccr_17014.md +0 -0
  42. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ca/rtc_17014.md +0 -0
  43. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ca/rtc_17041.md +0 -0
  44. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ca/rtc_17951.md +0 -0
  45. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/co/c.r.s._39_22_103.md +0 -0
  46. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/co/c.r.s._39_22_104.md +0 -0
  47. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ct/c.g.s._12_700.md +0 -0
  48. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ct/c.g.s._12_701.md +0 -0
  49. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ct/c.g.s._12_711.md +0 -0
  50. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/dc/d.c. code_47_1806_03.md +0 -0
  51. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/de/del. code_1102.md +0 -0
  52. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/fl/flconst_art__vii_sec__5.md +0 -0
  53. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/fl/flstat_196_031.md +0 -0
  54. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/fl/flstat_222_17.md +0 -0
  55. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/gareg_560_7_3__01.md +0 -0
  56. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_1.md +0 -0
  57. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_20.md +0 -0
  58. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_20_2024.md +0 -0
  59. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_20_2025.md +0 -0
  60. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_27.md +0 -0
  61. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_30.md +0 -0
  62. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/hi/hrs_235_51.md +0 -0
  63. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ia/iowa code_422_5.md +0 -0
  64. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/id/idaho code_63_3024.md +0 -0
  65. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/il/ilcs_5_1501_a_20.md +0 -0
  66. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/il/ilcs_5_201.md +0 -0
  67. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/il/ilcs_5_301.md +0 -0
  68. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/in/ind. code_6_3_2_1.md +0 -0
  69. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ks/k.s.a._79_32,110.md +0 -0
  70. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ky/krs_141_020.md +0 -0
  71. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/la/la. r.s._47_32.md +0 -0
  72. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/la/la. r.s._47_32_2022.md +0 -0
  73. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ma/maconst_art__xliv.md +0 -0
  74. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ma/mgl_62_1_f.md +0 -0
  75. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ma/mgl_62_4.md +0 -0
  76. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/md/md. code_10_101.md +0 -0
  77. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/md/md. code_10_105.md +0 -0
  78. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/md/md. code_10_106.md +0 -0
  79. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/me/36 m.r.s._5111.md +0 -0
  80. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/mi/mcl_206_51.md +0 -0
  81. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/mn/minn. stat._290_06.md +0 -0
  82. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/mo/rsmo_143_011.md +0 -0
  83. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ms/miss. code_27_7_5.md +0 -0
  84. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/mt/mca_15_30_2103.md +0 -0
  85. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nc/n.c.g.s._105_153_3.md +0 -0
  86. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nc/n.c.g.s._105_153_7.md +0 -0
  87. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nd/n.d.c.c._57_38_30_3.md +0 -0
  88. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ne/neb. rev. stat._77_2715_03.md +0 -0
  89. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nh/rsa_77_1_2024.md +0 -0
  90. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nj/njac_18_35_5_2.md +0 -0
  91. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nj/njsa_54a_1_2.md +0 -0
  92. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nj/njsa_54a_2_1.md +0 -0
  93. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nm/nmsa_7_2_7.md +0 -0
  94. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nv/nev. const._art__10,_/302/247_1.md" +0 -0
  95. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ny/nycrr_105_20.md +0 -0
  96. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ny/nycrr_132_18.md +0 -0
  97. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ny/nytax_601.md +0 -0
  98. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ny/nytax_605.md +0 -0
  99. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/oh/r.c._5747_02.md +0 -0
  100. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/oh/r.c._5747_24.md +0 -0
  101. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ok/68 o.s._2355.md +0 -0
  102. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/or/ors_316_037.md +0 -0
  103. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pa/p.s._7301.md +0 -0
  104. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pa/p.s._7302.md +0 -0
  105. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pa/pa. code_109_8.md +0 -0
  106. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/cri_1010_01.md +0 -0
  107. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/cri_1031_01.md +0 -0
  108. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/cri_1031_02.md +0 -0
  109. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/cri_1062_01.md +0 -0
  110. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley22_3_2012.md +0 -0
  111. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley60_2021_01.md +0 -0
  112. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley60_2022_01.md +0 -0
  113. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley60_2031_01.md +0 -0
  114. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley60_2032_01.md +0 -0
  115. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley60_6070_55.md +0 -0
  116. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ri/r.i.g.l._44_30_1.md +0 -0
  117. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/sc/s.c. code_12_6_510.md +0 -0
  118. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/sd/s.d. const._art__xi,_/302/247_2.md" +0 -0
  119. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/tn/tenn. const._art__ii,_/302/247_28.md" +0 -0
  120. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/tx/txconst_art__viii_sec__24_a.md +0 -0
  121. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/tx/txtax_171_001.md +0 -0
  122. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/cfr_1_937_1.md +0 -0
  123. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/cfr_1_937_2.md +0 -0
  124. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/cfr_1_937_3.md +0 -0
  125. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_1411.md +0 -0
  126. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_6688.md +0 -0
  127. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_865.md +0 -0
  128. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_933.md +0 -0
  129. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_937.md +0 -0
  130. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_957.md +0 -0
  131. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ut/utah code_59_10_104.md +0 -0
  132. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/va/va. code_58_1_302.md +0 -0
  133. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/va/va. code_58_1_320.md +0 -0
  134. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/va/va. code_58_1_342.md +0 -0
  135. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/vt/32 v.s.a._5822.md +0 -0
  136. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wa/rcw_82_87_020.md +0 -0
  137. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wa/rcw_82_87_040.md +0 -0
  138. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wa/waconst_art__vii_sec__1.md +0 -0
  139. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wi/wis. stat._71_06.md +0 -0
  140. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wv/w. va. code_11_21_4e.md +0 -0
  141. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wy/wyo. const._art__15,_/302/247_18.md" +0 -0
  142. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/fastmcp.json +0 -0
  143. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/pyproject.toml +0 -0
  144. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/check_conformance.sh +0 -0
  145. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/check_openapi_drift.py +0 -0
  146. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/check_tool_contract.py +0 -0
  147. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/check_version.py +0 -0
  148. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/release_notes.py +0 -0
  149. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/setup_repo_governance.sh +0 -0
  150. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/server.json +0 -0
  151. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/__init__.py +0 -0
  152. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/auth.py +0 -0
  153. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/client.py +0 -0
  154. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/config.py +0 -0
  155. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/errors.py +0 -0
  156. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/middleware.py +0 -0
  157. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/profiles.py +0 -0
  158. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/server.py +0 -0
  159. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/ssrf.py +0 -0
  160. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/tools/__init__.py +0 -0
  161. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/conftest.py +0 -0
  162. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_batch.py +0 -0
  163. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_check_version.py +0 -0
  164. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_client.py +0 -0
  165. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_code_mode_extra.py +0 -0
  166. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_config.py +0 -0
  167. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_conftest_auth_env.py +0 -0
  168. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_drift.py +0 -0
  169. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_e2e_live.py +0 -0
  170. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_errors.py +0 -0
  171. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_http_auth.py +0 -0
  172. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_layered.py +0 -0
  173. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_otel_spans.py +0 -0
  174. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_profiles.py +0 -0
  175. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_protocol.py +0 -0
  176. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_release_notes.py +0 -0
  177. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_ssrf.py +0 -0
  178. {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_version.py +0 -0
@@ -5,12 +5,12 @@ on:
5
5
  branches: [main]
6
6
  pull_request:
7
7
  branches: [main]
8
- # Merges made by dependabot-automerge.yml use GITHUB_TOKEN, and events caused
9
- # by GITHUB_TOKEN never start new workflow runs, so the push trigger above
8
+ # Merges made by dependabot-automerge.yml use GITHUB_TOKEN, and pushes made
9
+ # with GITHUB_TOKEN don't trigger push workflows, so the push trigger above
10
10
  # misses them. The daily run tests main itself; schedule runs only on the
11
11
  # default branch. The minute is off the hour to avoid peak scheduler load.
12
12
  schedule:
13
- - cron: '17 9 * * *'
13
+ - cron: '29 9 * * *'
14
14
  workflow_dispatch:
15
15
 
16
16
  concurrency:
@@ -47,7 +47,7 @@ Host configuration JSON for these doc servers (`mcp_config.json` and other deskt
47
47
  - `scripts/check_tool_contract.py` — source of truth for the expected tool set and annotations. Do not hard-code tool counts elsewhere.
48
48
  - `scripts/check_openapi_drift.py`, `scripts/check_conformance.sh` + `conformance-baseline.yml` — drift and protocol conformance.
49
49
  - `tests/` — offline unit, layered-composition, and protocol tests; `test_e2e_live.py` is opt-in (`-m e2e`).
50
- - `.github/workflows/` — `ci.yml`, `drift-monitor.yml`, `dependabot-automerge.yml`, and `release.yml` (on a `v*` tag: build with full history, check the wheel version matches the tag, create the GitHub Release from `scripts/release_notes.py`; then `docker` builds the image and pushes it to GHCR (`contents: read`, `packages: write`), `attest` attests the pushed digest (`contents: read`, `id-token: write`, `attestations: write`), and `registry` publishes `server.json` to the MCP Registry last (`contents: read`, `id-token: write`). In `christianclaudio/mcp-server-taxcode` the image is built but `docker` does not push and `attest` and `registry` skip; no PyPI publish). `ci.yml`'s `docker-build` job builds the image on every PR and checks its `io.modelcontextprotocol.server.name` label matches `server.json`. Product repos copy this `release.yml` and add their PyPI publish job to `registry`'s `needs:` (COOKBOOK Recipe 6).
50
+ - `.github/workflows/` — `ci.yml`, `drift-monitor.yml`, `dependabot-automerge.yml`, and `release.yml` (on a `v*` tag: build with full history, verify the wheel version matches the tag, publish to PyPI via OIDC, create the GitHub Release from `scripts/release_notes.py`, build and push the container image to GHCR, attest build provenance for both wheel and container digests, and publish `server.json` to the MCP Registry). `ci.yml`'s `docker-build` job builds the image on every PR and checks its `io.modelcontextprotocol.server.name` label matches `server.json`.
51
51
  - `scripts/release_notes.py` — release body from squash commits since the previous `v*` tag. `scripts/check_version.py` — runs after `uv build` and reads the version from the single wheel in `dist/` (the file that ships, as release.yml's tag check does); fails on `0.0.0` (no git metadata) or `0.0.1.devN` (no reachable tag, a shallow checkout).
52
52
  - `server.json` (MCP Registry metadata), `Dockerfile`, `pyproject.toml`, `fastmcp.json`.
53
53
  - `COOKBOOK.md` — private maintainer runbook (release SOP, drift, testing, composition, payload hardening, naming recipes). Template-only.
@@ -199,6 +199,6 @@ coderabbit review --agent --uncommitted
199
199
 
200
200
  ## 🔄 CI & Releases
201
201
 
202
- CI is defined in `.github/workflows/ci.yml` (jobs: `lint-and-types`, `test` on Python 3.10–3.13, `tool-contract`, `build-check`, `docker-build` (builds the image without pushing and checks its MCP server-name label against `server.json`)). It runs on pushes and pull requests to `main`, daily on `main` at 09:17 UTC (`schedule`), and on manual dispatch (`workflow_dispatch`); the daily run exists because merges by `dependabot-automerge.yml` use `GITHUB_TOKEN` and so never trigger the `push` run. Run the commands above before opening a PR. Scheduled upstream drift runs in `drift-monitor.yml`. `dependabot-automerge.yml` turns on squash auto-merge only for Dependabot PRs whose highest update is minor or patch; major updates wait for a human review.
202
+ CI is defined in `.github/workflows/ci.yml` (jobs: `lint-and-types`, `test` on Python 3.10–3.13, `tool-contract`, `build-check`, `docker-build` (builds the image without pushing and checks its MCP server-name label against `server.json`)). It runs on pushes and pull requests to `main`, daily on `main` at 09:29 UTC (`schedule`), and on manual dispatch (`workflow_dispatch`); the daily run exists because merges by `dependabot-automerge.yml` use `GITHUB_TOKEN`, and pushes made with `GITHUB_TOKEN` don't trigger push workflows, so those merges get no `push` run. Run the commands above before opening a PR. Scheduled upstream drift runs in `drift-monitor.yml`. `dependabot-automerge.yml` turns on squash auto-merge only for Dependabot PRs whose highest update is minor or patch; major updates wait for a human review.
203
203
 
204
204
  `release.yml` runs on `v*` tag pushes only: it creates the GitHub Release, then builds the container image, pushes it to GHCR, attests it, and publishes to the MCP Registry. In the template repo the image is built only (no push), and the attest and registry jobs skip. Release procedure (tag-based versioning, release notes, pre-tag checks): **`COOKBOOK.md`** Recipes 1–2; product-repo migration steps: Recipe 9.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mcp-server-taxcode
3
- Version: 0.5.0
3
+ Version: 0.6.0
4
4
  Summary: Enterprise Model Context Protocol (MCP) server for Tax Code
5
5
  Project-URL: Homepage, https://github.com/christianclaudio/mcp-server-taxcode
6
6
  Project-URL: Documentation, https://github.com/christianclaudio/mcp-server-taxcode#readme
@@ -137,7 +137,7 @@ TAXCODE_MCP_AUTH_TOKEN="$(openssl rand -hex 32)" \
137
137
  The image's default command is stdio, so it works as a stdio server out of the box:
138
138
 
139
139
  ```bash
140
- docker run -i --rm -e TAXCODE_API_KEY=your-api-key ghcr.io/christianclaudio/<name>
140
+ docker run -i --rm -e TAXCODE_API_KEY=your-api-key ghcr.io/christianclaudio/mcp-server-taxcode:latest
141
141
  ```
142
142
 
143
143
  To serve Streamable HTTP from the container, bind `0.0.0.0` inside it and pass a token:
@@ -146,7 +146,7 @@ To serve Streamable HTTP from the container, bind `0.0.0.0` inside it and pass a
146
146
  docker run --rm -p 8000:8000 \
147
147
  -e TAXCODE_API_KEY=your-api-key \
148
148
  -e TAXCODE_MCP_AUTH_TOKEN=your-long-random-token \
149
- ghcr.io/christianclaudio/<name> \
149
+ ghcr.io/christianclaudio/mcp-server-taxcode:latest \
150
150
  --transport streamable-http --host 0.0.0.0 --port 8000 --allowed-host mcp.example.com
151
151
  ```
152
152
 
@@ -157,22 +157,31 @@ docker run --rm -p 8000:8000 \
157
157
 
158
158
  This server works out-of-the-box with all major AI assistants, IDEs, and CLI tools via standard `stdio` or `streamable-http`.
159
159
 
160
- The template is not published to PyPI, so these configs run its `taxcode-mcp` console script from a local clone with `uv run --directory`. Replace `/absolute/path/to/mcp-server-taxcode` with the path of your clone. After `uv tool install .` (or `pip install .`) puts both console scripts, `taxcode-mcp` and `mcp-server-taxcode` (the same server), on your `PATH`, `"command": "taxcode-mcp"` with no `args` works too.
160
+ The server is published on PyPI as [`mcp-server-taxcode`](https://pypi.org/project/mcp-server-taxcode/), so you can run it directly with `uvx mcp-server-taxcode` without cloning or manually managing environments. Alternatively, run from a local clone with `uv run --directory /path/to/mcp-server-taxcode taxcode-mcp`.
161
161
 
162
162
  <details open>
163
163
  <summary><b>🧡 Claude Desktop & Claude Code</b></summary>
164
164
 
165
165
  Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
166
166
 
167
+ ```json
168
+ {
169
+ "mcpServers": {
170
+ "taxcode": {
171
+ "command": "uvx",
172
+ "args": ["mcp-server-taxcode"]
173
+ }
174
+ }
175
+ }
176
+ ```
177
+
178
+ For local development from a clone:
167
179
  ```json
168
180
  {
169
181
  "mcpServers": {
170
182
  "taxcode": {
171
183
  "command": "uv",
172
- "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"],
173
- "env": {
174
- "TAXCODE_API_KEY": "your-api-key"
175
- }
184
+ "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"]
176
185
  }
177
186
  }
178
187
  }
@@ -180,7 +189,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
180
189
 
181
190
  For **Claude Code CLI**:
182
191
  ```bash
183
- claude mcp add taxcode -- uv run --directory /absolute/path/to/mcp-server-taxcode taxcode-mcp
192
+ claude mcp add taxcode -- uvx mcp-server-taxcode
184
193
  ```
185
194
  </details>
186
195
 
@@ -193,11 +202,8 @@ Add to `.agents/mcp_config.json` (or global `~/.gemini/config/mcp_config.json`):
193
202
  {
194
203
  "mcpServers": {
195
204
  "taxcode": {
196
- "command": "uv",
197
- "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"],
198
- "env": {
199
- "TAXCODE_API_KEY": "your-api-key"
200
- }
205
+ "command": "uvx",
206
+ "args": ["mcp-server-taxcode"]
201
207
  }
202
208
  }
203
209
  }
@@ -213,8 +219,8 @@ Add to `~/.snowflake/cortex/mcp.json`:
213
219
  {
214
220
  "mcpServers": {
215
221
  "taxcode": {
216
- "command": "uv",
217
- "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"]
222
+ "command": "uvx",
223
+ "args": ["mcp-server-taxcode"]
218
224
  }
219
225
  }
220
226
  }
@@ -230,8 +236,8 @@ Add to `~/.cursor/mcp.json`:
230
236
  {
231
237
  "mcpServers": {
232
238
  "taxcode": {
233
- "command": "uv",
234
- "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"]
239
+ "command": "uvx",
240
+ "args": ["mcp-server-taxcode"]
235
241
  }
236
242
  }
237
243
  }
@@ -247,8 +253,8 @@ Add to `cline_mcp_settings.json`:
247
253
  {
248
254
  "mcpServers": {
249
255
  "taxcode": {
250
- "command": "uv",
251
- "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"]
256
+ "command": "uvx",
257
+ "args": ["mcp-server-taxcode"]
252
258
  }
253
259
  }
254
260
  }
@@ -94,7 +94,7 @@ TAXCODE_MCP_AUTH_TOKEN="$(openssl rand -hex 32)" \
94
94
  The image's default command is stdio, so it works as a stdio server out of the box:
95
95
 
96
96
  ```bash
97
- docker run -i --rm -e TAXCODE_API_KEY=your-api-key ghcr.io/christianclaudio/<name>
97
+ docker run -i --rm -e TAXCODE_API_KEY=your-api-key ghcr.io/christianclaudio/mcp-server-taxcode:latest
98
98
  ```
99
99
 
100
100
  To serve Streamable HTTP from the container, bind `0.0.0.0` inside it and pass a token:
@@ -103,7 +103,7 @@ To serve Streamable HTTP from the container, bind `0.0.0.0` inside it and pass a
103
103
  docker run --rm -p 8000:8000 \
104
104
  -e TAXCODE_API_KEY=your-api-key \
105
105
  -e TAXCODE_MCP_AUTH_TOKEN=your-long-random-token \
106
- ghcr.io/christianclaudio/<name> \
106
+ ghcr.io/christianclaudio/mcp-server-taxcode:latest \
107
107
  --transport streamable-http --host 0.0.0.0 --port 8000 --allowed-host mcp.example.com
108
108
  ```
109
109
 
@@ -114,22 +114,31 @@ docker run --rm -p 8000:8000 \
114
114
 
115
115
  This server works out-of-the-box with all major AI assistants, IDEs, and CLI tools via standard `stdio` or `streamable-http`.
116
116
 
117
- The template is not published to PyPI, so these configs run its `taxcode-mcp` console script from a local clone with `uv run --directory`. Replace `/absolute/path/to/mcp-server-taxcode` with the path of your clone. After `uv tool install .` (or `pip install .`) puts both console scripts, `taxcode-mcp` and `mcp-server-taxcode` (the same server), on your `PATH`, `"command": "taxcode-mcp"` with no `args` works too.
117
+ The server is published on PyPI as [`mcp-server-taxcode`](https://pypi.org/project/mcp-server-taxcode/), so you can run it directly with `uvx mcp-server-taxcode` without cloning or manually managing environments. Alternatively, run from a local clone with `uv run --directory /path/to/mcp-server-taxcode taxcode-mcp`.
118
118
 
119
119
  <details open>
120
120
  <summary><b>🧡 Claude Desktop & Claude Code</b></summary>
121
121
 
122
122
  Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
123
123
 
124
+ ```json
125
+ {
126
+ "mcpServers": {
127
+ "taxcode": {
128
+ "command": "uvx",
129
+ "args": ["mcp-server-taxcode"]
130
+ }
131
+ }
132
+ }
133
+ ```
134
+
135
+ For local development from a clone:
124
136
  ```json
125
137
  {
126
138
  "mcpServers": {
127
139
  "taxcode": {
128
140
  "command": "uv",
129
- "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"],
130
- "env": {
131
- "TAXCODE_API_KEY": "your-api-key"
132
- }
141
+ "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"]
133
142
  }
134
143
  }
135
144
  }
@@ -137,7 +146,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
137
146
 
138
147
  For **Claude Code CLI**:
139
148
  ```bash
140
- claude mcp add taxcode -- uv run --directory /absolute/path/to/mcp-server-taxcode taxcode-mcp
149
+ claude mcp add taxcode -- uvx mcp-server-taxcode
141
150
  ```
142
151
  </details>
143
152
 
@@ -150,11 +159,8 @@ Add to `.agents/mcp_config.json` (or global `~/.gemini/config/mcp_config.json`):
150
159
  {
151
160
  "mcpServers": {
152
161
  "taxcode": {
153
- "command": "uv",
154
- "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"],
155
- "env": {
156
- "TAXCODE_API_KEY": "your-api-key"
157
- }
162
+ "command": "uvx",
163
+ "args": ["mcp-server-taxcode"]
158
164
  }
159
165
  }
160
166
  }
@@ -170,8 +176,8 @@ Add to `~/.snowflake/cortex/mcp.json`:
170
176
  {
171
177
  "mcpServers": {
172
178
  "taxcode": {
173
- "command": "uv",
174
- "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"]
179
+ "command": "uvx",
180
+ "args": ["mcp-server-taxcode"]
175
181
  }
176
182
  }
177
183
  }
@@ -187,8 +193,8 @@ Add to `~/.cursor/mcp.json`:
187
193
  {
188
194
  "mcpServers": {
189
195
  "taxcode": {
190
- "command": "uv",
191
- "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"]
196
+ "command": "uvx",
197
+ "args": ["mcp-server-taxcode"]
192
198
  }
193
199
  }
194
200
  }
@@ -204,8 +210,8 @@ Add to `cline_mcp_settings.json`:
204
210
  {
205
211
  "mcpServers": {
206
212
  "taxcode": {
207
- "command": "uv",
208
- "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"]
213
+ "command": "uvx",
214
+ "args": ["mcp-server-taxcode"]
209
215
  }
210
216
  }
211
217
  }
@@ -1,4 +1,4 @@
1
- # Full Statutory Corpus: US, Puerto Rico & Georgia Tax Intelligence
1
+ # Full Statutory Corpus: US Federal, Puerto Rico & Multi-State Tax Intelligence
2
2
 
3
3
  ## 26 U.S.C. § 933: Income from sources within Puerto Rico
4
4
  `Title 26 > Subtitle A > Chapter 1 > Subchapter N > Part III > Subpart D > § 933`
@@ -1,7 +1,7 @@
1
1
  # TaxCode MCP Intelligence Corpus
2
2
 
3
3
  > Authoritative statutory and regulatory references for United States Federal Tax Law,
4
- > Puerto Rico Territorial Tax Law (Act 60-2019 and Ley 1-2011), and Georgia State Tax Law (O.C.G.A. Title 48).
4
+ > Puerto Rico Territorial Tax Law (Act 60-2019 and Ley 1-2011), and all 50 US States + District of Columbia.
5
5
 
6
6
  ## Statutory Catalog
7
7
 
@@ -112,7 +112,7 @@
112
112
  - [Wis. Stat. § 71.06 (2024) — Rates of Tax - Individuals](./wi/wis. stat._71_06.md): Wis. Stat. > Chapter 71 > Subchapter I > § 71.06
113
113
  - [Wyo. Const. art. 15, § 18 (1974) — Full Tax Credit Requirement for Any Individual Income Tax](./wy/wyo. const._art__15,_§_18.md): Wyo. Const. > Article 15 > § 18
114
114
 
115
- ## Administrative Publications (Hacienda SURI & Georgia DOR)
115
+ ## Administrative Publications & Guidance
116
116
 
117
117
  - **CC RI 21-10** (2021-03-31) — Tratamiento contributivo del teletrabajo y servicios prestados por no residentes: Directrices oficiales del Departamento de Hacienda sobre la fuente de ingresos por servicios laborales remotos, retención en el origen y establecimiento permanente en Puerto Rico.
118
118
  - **PA REV-BULL 2021-01** (2021-06-15) — Pennsylvania Personal Income Tax Telework and Sourcing Guidance: Guidance from the Pennsylvania Department of Revenue concerning the convenience of the employer doctrine and withholding obligations for telecommuting employees.