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.
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.github/workflows/ci.yml +3 -3
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/AGENTS.md +2 -2
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/PKG-INFO +26 -20
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/README.md +25 -19
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/llms-full.txt +1 -1
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/llms.txt +2 -2
- mcp_server_taxcode-0.6.0/scripts/ingest_statutes.py +5468 -0
- mcp_server_taxcode-0.6.0/skills/taxcode-mcp/SKILL.md +55 -0
- mcp_server_taxcode-0.6.0/src/taxcode_mcp/db.py +5578 -0
- mcp_server_taxcode-0.6.0/src/taxcode_mcp/disclaimers.py +90 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/tools/compliance.py +32 -25
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/tools/statutes.py +17 -3
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/tools/system.py +2 -0
- mcp_server_taxcode-0.6.0/tests/fixtures/usc26_sample.xml +31 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_db.py +104 -11
- mcp_server_taxcode-0.6.0/tests/test_disclaimers.py +173 -0
- mcp_server_taxcode-0.6.0/tests/test_federal.py +177 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_ingest.py +70 -1
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_server.py +7 -2
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/uv.lock +6 -6
- mcp_server_taxcode-0.5.0/scripts/ingest_statutes.py +0 -2726
- mcp_server_taxcode-0.5.0/skills/taxcode-mcp/SKILL.md +0 -54
- mcp_server_taxcode-0.5.0/src/taxcode_mcp/db.py +0 -2630
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.github/dependabot.yml +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.github/workflows/dependabot-automerge.yml +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.github/workflows/drift-monitor.yml +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.github/workflows/release.yml +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/.gitignore +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/CHANGELOG.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/CODE_OF_CONDUCT.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/CONTRIBUTING.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/Dockerfile +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/LICENSE +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/SECURITY.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/conformance-baseline.yml +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ak/alaska stat._43_05_080.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/al/ala. code_40_18_2.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ar/a.c.a._26_51_201.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/az/a.r.s._43_1011.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/az/a.r.s._43_104.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ca/caccr_17014.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ca/rtc_17014.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ca/rtc_17041.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ca/rtc_17951.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/co/c.r.s._39_22_103.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/co/c.r.s._39_22_104.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ct/c.g.s._12_700.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ct/c.g.s._12_701.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ct/c.g.s._12_711.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/dc/d.c. code_47_1806_03.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/de/del. code_1102.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/fl/flconst_art__vii_sec__5.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/fl/flstat_196_031.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/fl/flstat_222_17.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/gareg_560_7_3__01.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_1.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_20.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_20_2024.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_20_2025.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_27.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ga/ocga_48_7_30.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/hi/hrs_235_51.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ia/iowa code_422_5.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/id/idaho code_63_3024.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/il/ilcs_5_1501_a_20.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/il/ilcs_5_201.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/il/ilcs_5_301.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/in/ind. code_6_3_2_1.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ks/k.s.a._79_32,110.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ky/krs_141_020.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/la/la. r.s._47_32.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/la/la. r.s._47_32_2022.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ma/maconst_art__xliv.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ma/mgl_62_1_f.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ma/mgl_62_4.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/md/md. code_10_101.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/md/md. code_10_105.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/md/md. code_10_106.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/me/36 m.r.s._5111.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/mi/mcl_206_51.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/mn/minn. stat._290_06.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/mo/rsmo_143_011.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ms/miss. code_27_7_5.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/mt/mca_15_30_2103.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nc/n.c.g.s._105_153_3.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nc/n.c.g.s._105_153_7.md +0 -0
- {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
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ne/neb. rev. stat._77_2715_03.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nh/rsa_77_1_2024.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nj/njac_18_35_5_2.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nj/njsa_54a_1_2.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nj/njsa_54a_2_1.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nm/nmsa_7_2_7.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/nv/nev. const._art__10,_/302/247_1.md" +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ny/nycrr_105_20.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ny/nycrr_132_18.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ny/nytax_601.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ny/nytax_605.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/oh/r.c._5747_02.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/oh/r.c._5747_24.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ok/68 o.s._2355.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/or/ors_316_037.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pa/p.s._7301.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pa/p.s._7302.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pa/pa. code_109_8.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/cri_1010_01.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/cri_1031_01.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/cri_1031_02.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/cri_1062_01.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley22_3_2012.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley60_2021_01.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley60_2022_01.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley60_2031_01.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley60_2032_01.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/pr/ley60_6070_55.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ri/r.i.g.l._44_30_1.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/sc/s.c. code_12_6_510.md +0 -0
- {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
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/tn/tenn. const._art__ii,_/302/247_28.md" +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/tx/txconst_art__viii_sec__24_a.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/tx/txtax_171_001.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/cfr_1_937_1.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/cfr_1_937_2.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/cfr_1_937_3.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_1411.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_6688.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_865.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_933.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_937.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/us/irc_957.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/ut/utah code_59_10_104.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/va/va. code_58_1_302.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/va/va. code_58_1_320.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/va/va. code_58_1_342.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/vt/32 v.s.a._5822.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wa/rcw_82_87_020.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wa/rcw_82_87_040.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wa/waconst_art__vii_sec__1.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wi/wis. stat._71_06.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wv/w. va. code_11_21_4e.md +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/docs/wy/wyo. const._art__15,_/302/247_18.md" +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/fastmcp.json +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/pyproject.toml +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/check_conformance.sh +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/check_openapi_drift.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/check_tool_contract.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/check_version.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/release_notes.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/scripts/setup_repo_governance.sh +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/server.json +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/__init__.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/auth.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/client.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/config.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/errors.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/middleware.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/profiles.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/server.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/ssrf.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/src/taxcode_mcp/tools/__init__.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/conftest.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_batch.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_check_version.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_client.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_code_mode_extra.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_config.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_conftest_auth_env.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_drift.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_e2e_live.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_errors.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_http_auth.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_layered.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_otel_spans.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_profiles.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_protocol.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_release_notes.py +0 -0
- {mcp_server_taxcode-0.5.0 → mcp_server_taxcode-0.6.0}/tests/test_ssrf.py +0 -0
- {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
|
|
9
|
-
#
|
|
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: '
|
|
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,
|
|
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:
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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 --
|
|
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": "
|
|
197
|
-
"args": ["
|
|
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": "
|
|
217
|
-
"args": ["
|
|
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": "
|
|
234
|
-
"args": ["
|
|
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": "
|
|
251
|
-
"args": ["
|
|
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
|
|
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
|
|
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
|
|
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 --
|
|
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": "
|
|
154
|
-
"args": ["
|
|
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": "
|
|
174
|
-
"args": ["
|
|
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": "
|
|
191
|
-
"args": ["
|
|
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": "
|
|
208
|
-
"args": ["
|
|
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 &
|
|
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
|
|
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
|
|
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.
|