{"_id":"@cyanheads/federal-regulations-mcp-server","_rev":"16-f40c695b3a38b835e5a90ebd483713e8","name":"@cyanheads/federal-regulations-mcp-server","dist-tags":{"latest":"0.5.2"},"versions":{"0.1.0":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.1.0","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.1.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"8b2493dece3ffdacecd10c2f96d6b1b907106da8","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.1.0.tgz","fileCount":105,"integrity":"sha512-4G96qPtUKU4S2pXdHnFxstFKST7P42QKTPqEjdDrFLevWXd1K9JDnOM5AwHSBAu4LrBp4VGCBl89Q/cSq+AbyQ==","signatures":[{"sig":"MEQCICcP5KQ02c79X0bQ/Flq69HfjTv5hbJuNfAly+qcEkmDAiAee3scC9/kzgSvqtOQIZqKmTB1RCOnHbSQzYV7OYT/Vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":419675},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"bun":">=1.3.0","node":">=24.0.0"},"gitHead":"621a2adecefaae2c1e200ca4a58fa1ecee11f66f","mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.10.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.8","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"25.9.3","@biomejs/biome":"2.5.0","better-sqlite3":"^12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.1.0_1781432175651_0.41694857752862524","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.1.1","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.1.1","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"56f1bd44faec735455cc77d781e8aaa83f9381a8","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.1.1.tgz","fileCount":106,"integrity":"sha512-17I8x7wCHYc9kGQkV7xFSAsnnCf//rMAHzTv5CpZuiLrv9vtKebOMXOKJRmNaR2Jx65VLln/Hs3FFxILydMgdw==","signatures":[{"sig":"MEQCICXz+WEfvM+4ASga/hJGRQFNuM6XfCqiRBG2Ro/IMVE0AiBMSgSRhrC/dQhA32eTsh8fbGx8NeB4sb0ucW20YPM3+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420685},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"56f1bd44faec735455cc77d781e8aaa83f9381a8","engines":{"bun":">=1.3.0","node":">=24.0.0"},"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-17I8x7wCHYc9kGQkV7xFSAsnnCf//rMAHzTv5CpZuiLrv9vtKebOMXOKJRmNaR2Jx65VLln/Hs3FFxILydMgdw==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.10.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.9","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"25.9.3","@biomejs/biome":"2.5.0","better-sqlite3":"^12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.1.1_1781541923561_0.13192108298978278","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.1.2","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.1.2","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"fed08c417d8dfa5cc9654bcf949508b313e55a4e","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.1.2.tgz","fileCount":107,"integrity":"sha512-drsomnAwxFD97cjZj2kvm11Rw9Vq78TUtzytVMYziQ86sC7GXw1LD4z5eRX7WE+wemJOgWVPWDKRZjibeKIJiw==","signatures":[{"sig":"MEQCIDLoROquOCpVts2bdseaeaXUPi3ydYr2WJEKD5I3VidWAiAMT0yEfMKg+1cRRfy1tc+moIr0DZr/VMRvJvw5Nu0sIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":422927},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"fed08c417d8dfa5cc9654bcf949508b313e55a4e","engines":{"bun":">=1.3.0","node":">=24.0.0"},"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-drsomnAwxFD97cjZj2kvm11Rw9Vq78TUtzytVMYziQ86sC7GXw1LD4z5eRX7WE+wemJOgWVPWDKRZjibeKIJiw==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.10.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.9","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"26.0.0","@biomejs/biome":"2.5.0","better-sqlite3":"^12.11.1"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.1.2_1781955299486_0.02756728413517129","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.1.3","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.1.3","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"aff3182133dec41de9535413b0593fbd055b21db","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.1.3.tgz","fileCount":108,"integrity":"sha512-ehfLeYofcvL8LRTng1hkiOu+TqWLb8nj1DzB4D4EP1wxe8qlfQVPUzWNbxsfdG0ZlFUJ8UeJCbYrjVMgEV7fxg==","signatures":[{"sig":"MEYCIQC3SEoDYWBIsRTsjVMIyq9Kg4BhXroxuY2OPOyZQrrS+AIhAMYzrnTGJTzmihJd+y7f8EJERSCXCVXJX5Nnu6DNtvvT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":451147},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"aff3182133dec41de9535413b0593fbd055b21db","engines":{"bun":">=1.3.0","node":">=24.0.0"},"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-ehfLeYofcvL8LRTng1hkiOu+TqWLb8nj1DzB4D4EP1wxe8qlfQVPUzWNbxsfdG0ZlFUJ8UeJCbYrjVMgEV7fxg==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"26.1.2","@biomejs/biome":"2.5.6","better-sqlite3":"^13.0.1","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.1.3_1786318195170_0.9353646444294095","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.1.4","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.1.4","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"8f65256ede114f13fa9490ccee9d3052959f8a18","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.1.4.tgz","fileCount":109,"integrity":"sha512-rQA3c8uyHp0QAlo3kYsnzEAnywoQPCXREWqpa2d+DqeSh3qi69lnuRRtpkbIQ9doJ1lDccW36ho5auPyaJwKog==","signatures":[{"sig":"MEQCICGAiBkqcfcnVK7dSN9qCtxcern1Rpb89VxWPv7mo0IfAiBNgUx1bL7cyyCsp1WL5+zxOs2YJDG3EFzhqGUhRNHajw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":470356},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"8f65256ede114f13fa9490ccee9d3052959f8a18","engines":{"bun":">=1.3.0","node":">=24.0.0"},"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-rQA3c8uyHp0QAlo3kYsnzEAnywoQPCXREWqpa2d+DqeSh3qi69lnuRRtpkbIQ9doJ1lDccW36ho5auPyaJwKog==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"26.1.2","@biomejs/biome":"2.5.6","better-sqlite3":"^13.0.1","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.1.4_1786322525609_0.20849059953749127","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.2.0","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.2.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"f9d16f4f8dc39c2be53f29098132dd8c8bcae7bc","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.2.0.tgz","fileCount":114,"integrity":"sha512-5+hzVbdozUR9Wxr+M7VqZoi69J/O6/b/A3JUuSm2rB/WXhrL1cj+5NKUI0DiXbfx/yf1LVGgfUm+6Q3WsGrJcw==","signatures":[{"sig":"MEQCH1J6sLQNyBt59m6HGd7OFGAZ0FlkwutW7TbhLLbZTYUCIQD953vTVNhJuRF5ovFZQ+OxKfP4uuIOHHaPuhE2D/O5Cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":524249},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"f9d16f4f8dc39c2be53f29098132dd8c8bcae7bc","engines":{"bun":">=1.3.0","node":">=24.0.0"},"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-5+hzVbdozUR9Wxr+M7VqZoi69J/O6/b/A3JUuSm2rB/WXhrL1cj+5NKUI0DiXbfx/yf1LVGgfUm+6Q3WsGrJcw==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"26.1.2","@biomejs/biome":"2.5.6","better-sqlite3":"^13.0.1","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.2.0_1786328963091_0.19534541527230775","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.2.1","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.2.1","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"c15060b9f9af3e94de533cbbbf0e33acc02d38a0","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.2.1.tgz","fileCount":119,"integrity":"sha512-V8gaiq+kAeST8mnUoiEdG1TW3L7tLN12kBFsQ/asYQB/amWp8Bwl6K8QlpjftRSZn7T6ljBcI538kbfeh7qISg==","signatures":[{"sig":"MEUCIQC4wcg619aLufjM2J/YjklhC37uQk5FrCc3gTq8Gl+qBgIgCE/yyzEPW/mSpyJardaEQmDt1vPXj6SCLI2ZZsbMEZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":553895},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"c15060b9f9af3e94de533cbbbf0e33acc02d38a0","engines":{"bun":">=1.3.0","node":">=24.0.0"},"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-V8gaiq+kAeST8mnUoiEdG1TW3L7tLN12kBFsQ/asYQB/amWp8Bwl6K8QlpjftRSZn7T6ljBcI538kbfeh7qISg==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"26.1.2","@biomejs/biome":"2.5.6","better-sqlite3":"^13.0.1","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.2.1_1786335655242_0.4036162804322989","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.2.2","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.2.2","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"63d3bfb9aed249c060b7af7ff7ab37b24c9700bc","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.2.2.tgz","fileCount":120,"integrity":"sha512-v/n7a7N9ttd5nDuFDSlAVoCOBELK2KYqhSys5o/aXhYaGoYkrWhQ46/weOQKNGG6AoAzlkweT0o5NlwDrQn7sQ==","signatures":[{"sig":"MEQCIH3RkK9iBoBzvGlxIB1RrV64d46fMTu2NImrp5K9a4QuAiBextN+yFhB1jm4H58eNCV/tIxy0H0jkgDauP0TYWvaXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":578300},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"63d3bfb9aed249c060b7af7ff7ab37b24c9700bc","engines":{"bun":">=1.3.0","node":">=24.0.0"},"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-v/n7a7N9ttd5nDuFDSlAVoCOBELK2KYqhSys5o/aXhYaGoYkrWhQ46/weOQKNGG6AoAzlkweT0o5NlwDrQn7sQ==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"26.1.2","@biomejs/biome":"2.5.6","better-sqlite3":"^13.0.1","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.2.2_1786341895055_0.6512050335320572","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.2.3","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.2.3","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"610dddc73e8d59ec07ba09099c5196618b7e2b83","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.2.3.tgz","fileCount":121,"integrity":"sha512-kc284thKZhx9ECNI0cF+qLsi9J4hAIfNMB3wh8LWi0IANTLiJ/56Cokgdu/EudfxH9BDzJ347cD/2HKRvNr7xA==","signatures":[{"sig":"MEUCIQDCui4aTGFULafbL+f9C4RTmmmafBbhxWCE3xymcUPb0wIgHQ7nxLsABmFnQL9xfnPEavitc64ldTH3/8v01VqVhe8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA/hOHS53R/NEZV9LPyEwlEQsp+5O8J0BVcasBFZzyupAiBLKxuMsDad07Gp/l9YQAHr+X4PSzAWKMpfjDr/H2syTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":607329},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"610dddc73e8d59ec07ba09099c5196618b7e2b83","engines":{"bun":">=1.3.0","node":">=24.0.0"},"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-kc284thKZhx9ECNI0cF+qLsi9J4hAIfNMB3wh8LWi0IANTLiJ/56Cokgdu/EudfxH9BDzJ347cD/2HKRvNr7xA==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"0.12.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.11","depcheck":"^1.4.7","tsc-alias":"^1.9.2","typescript":"^7.0.2","@types/node":"26.2.0","@biomejs/biome":"2.5.9","better-sqlite3":"^13.0.3","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.2.3_1787408376542_0.9968375591929071","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.2.4","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.2.4","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"5d17684c8eda4b0105325198e8c35c1f89ed59db","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.2.4.tgz","fileCount":122,"integrity":"sha512-fPFzev/jz0SkZbKyYvh1315wpO2LOvfK0n+OCHjsTggXVcmKACIu4/3y+MXJPTzZCOQY6HP3qPlvrgmJ9CrmdA==","signatures":[{"sig":"MEUCIQDBDJres15lPmRaMnMI6RLnYOPBsNBUuwyY09p/yoxjDgIgWqJbEGfIYdNfNAF1/zsxXU6QTBeLOjJKCCflj5Yup8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDEWpxW9QkekwPsz15qVGKYlBXLw3ZHZl3X1ygThXuv6wIhAMG1Y2ujkSqiKnIytFAMIdRBkENh2x6TM9zHhN99evdX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":607693},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"5d17684c8eda4b0105325198e8c35c1f89ed59db","engines":{"bun":">=1.3.0","node":">=24.0.0"},"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-fPFzev/jz0SkZbKyYvh1315wpO2LOvfK0n+OCHjsTggXVcmKACIu4/3y+MXJPTzZCOQY6HP3qPlvrgmJ9CrmdA==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"0.12.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.11","depcheck":"^1.4.7","tsc-alias":"^1.9.2","typescript":"^7.0.2","@types/node":"26.2.0","@biomejs/biome":"2.5.9","better-sqlite3":"^13.0.3","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.2.4_1787409438784_0.639349362753092","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.2.5","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.2.5","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"c03133a9b87d0bfca229a5b9aec1bc329d14864f","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.2.5.tgz","fileCount":123,"integrity":"sha512-9iXplJ5H8+2z61L9DoWG6oI5MaluWR+VP2Ibq472fZmWtMYD0bYe7Zo7b2l8+PLsgu1+glMLQwfyAYJAAPKEoQ==","signatures":[{"sig":"MEYCIQC4Cn2wqrUUF9CRBg2QpAr6+y9AVovkIiHCYnVVtRQ5TwIhAPZxy0trShLPrub25FV6VlhXL+VaFOVMkoSvf1Qh9qGx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQClOUxZD4/K7EbRUktCJGWvub7BH2VNe+BH+ggm9mpWdQIhANYIzAzZHfFSMFq/MMGE3ZOLNL+BLuMEwpwgoUF36IIV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":612434},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"c03133a9b87d0bfca229a5b9aec1bc329d14864f","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-9iXplJ5H8+2z61L9DoWG6oI5MaluWR+VP2Ibq472fZmWtMYD0bYe7Zo7b2l8+PLsgu1+glMLQwfyAYJAAPKEoQ==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"26.6.1","@biomejs/biome":"2.5.14","better-sqlite3":"^13.0.3","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.2.5_1789938492339_0.1268839041380836","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.3.0","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.3.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"22492ae8005ba3ab45584a47e510270a3ba18cd4","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.3.0.tgz","fileCount":128,"integrity":"sha512-M8xvoOlUEhsGbxctRz366GbIG1KPz8u9t0M9pScu5hyA2emmGntypGhPr8SxsKz0+UTYiLZw0o3722xpay/oMg==","signatures":[{"sig":"MEUCIQCGQ7P9awgy7USzxDt4h5YPnhSGYG/bdYEGpLHIkUgjswIgHRXF+fvkxzzUyA2SzKIo7O5KyTV/RyrV21Mfu0xw3Og=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBlWyiDHIPV5VT6vQVCBzLc40xltKNiuDU9D1X7xwXhsAiA71CLv/ZAGHxUCF6IyHWAeA7uCQAm/LT/hjGNveYx/Qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":660194},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"22492ae8005ba3ab45584a47e510270a3ba18cd4","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-M8xvoOlUEhsGbxctRz366GbIG1KPz8u9t0M9pScu5hyA2emmGntypGhPr8SxsKz0+UTYiLZw0o3722xpay/oMg==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"26.6.1","@biomejs/biome":"2.5.14","better-sqlite3":"^13.0.3","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.3.0_1790106588867_0.15615142853883324","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.4.0","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.4.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"29ca1ef6d0aedabf2ac6373d326de25bcb753b8c","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.4.0.tgz","fileCount":141,"integrity":"sha512-j2lbJBR/bTPSyKuFjU7EAr1AIFGK/b3pvgcTD655ycXmyGAhqRF+5Cgakq+0uaFs2UoVqkDYkQr26JOeRPmOlA==","signatures":[{"sig":"MEYCIQDT6OqjdPybg4o0FSYCdIzquVDJGc+9v51Zv9k6MtKxOAIhAO3sCd8SgyLn03IOXdHl1cm9plnnw0r6fzb38juTLhNa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICWNerpXccbTJrDf+spTaTJUcH+m35zvFrr3t+ZV6cymAiEA9YLSpzWtzVH4bg0UOsEbvS2OrMjvKntiMwUpJLem5e4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":746171},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"29ca1ef6d0aedabf2ac6373d326de25bcb753b8c","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-j2lbJBR/bTPSyKuFjU7EAr1AIFGK/b3pvgcTD655ycXmyGAhqRF+5Cgakq+0uaFs2UoVqkDYkQr26JOeRPmOlA==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","node-cron":"^4.6.0","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"26.6.1","@biomejs/biome":"2.5.14","better-sqlite3":"^13.0.3","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.4.0_1790112063153_0.5687748867600935","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.5.0","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.5.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"084a77954df39fee41da6973bcfdd7a758aaadc9","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.5.0.tgz","fileCount":154,"integrity":"sha512-6LYyoh6ta5TcKwG1Wo66VYV9PlnmximAW0I7Wgb1xVlNP67z9XgJ6HgKuBO2yvGLe4Yfa0uFJvqBWO7Lxl+EvA==","signatures":[{"sig":"MEUCIBIo42t8w9mRhx8uFr5AH75NWJg+yPptH3oDk8WjPWePAiEAh8Vb+cuEUuIuIRmFABRliUK62qTyPvoZUG4Lf62ZnoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCxNapJSoKpZ5iP61fuRPmhvC0DLxzIYcTFQO59dmF6RAIhAMi+TORlTqvw1Lsd3U144uhkelgUfIbU+JmjYg96lJyJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":796471},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"084a77954df39fee41da6973bcfdd7a758aaadc9","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-6LYyoh6ta5TcKwG1Wo66VYV9PlnmximAW0I7Wgb1xVlNP67z9XgJ6HgKuBO2yvGLe4Yfa0uFJvqBWO7Lxl+EvA==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","entities":"^8.1.0","node-cron":"^4.6.0","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"26.6.1","@biomejs/biome":"2.5.14","better-sqlite3":"^13.0.3","@socketsecurity/bun-security-scanner":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.5.0_1790329366165_0.3655489051296654","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@cyanheads/federal-regulations-mcp-server","version":"0.5.1","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/federal-regulations-mcp-server@0.5.1","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"bin":{"federal-regulations-mcp-server":"dist/index.js"},"dist":{"shasum":"7c0b045b310eb7704896bac872e6dee4d90c9bed","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.5.1.tgz","fileCount":167,"integrity":"sha512-NSg/EI7T5DtsVDKOeFB+qQNlmGTA1IcrMM/O3K1r/9fgfMJpdePuvu8prwwR1leldDVqUTOsHdjmW+dmh7b1Nw==","signatures":[{"sig":"MEUCIQDLNboQcfBalaQsNz2/MHVPmwr2vo2C6TRrdtovrgJfxAIgPhiCPEhGOtlFiiOOfLBmzD8hfeFnyx+t7Av0y43gCWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICVx411gYd3wyOBbaxy+aoIdnbIg0zj245BbxG36JStRAiEAnyViMtf0UOBX10V10bKQnTmhlsvKpCEGiBuRR0GJqWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":860421},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"7c0b045b310eb7704896bac872e6dee4d90c9bed","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-NSg/EI7T5DtsVDKOeFB+qQNlmGTA1IcrMM/O3K1r/9fgfMJpdePuvu8prwwR1leldDVqUTOsHdjmW+dmh7b1Nw==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","entities":"^8.1.0","node-cron":"^4.6.0","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"26.6.1","@biomejs/biome":"2.5.14","better-sqlite3":"^13.0.3","@socketsecurity/bun-security-scanner":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/federal-regulations-mcp-server_0.5.1_1790333547308_0.6130523104326808","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"_id":"@cyanheads/federal-regulations-mcp-server@0.5.2","bin":{"federal-regulations-mcp-server":"dist/index.js"},"bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"dist":{"shasum":"9afc1ede09645780f8e8f15aadd4b608e1201991","tarball":"https://registry.npmjs.org/@cyanheads/federal-regulations-mcp-server/-/federal-regulations-mcp-server-0.5.2.tgz","fileCount":164,"integrity":"sha512-VLzoIuuGqYeLLUOp73dx/W48lxX9ZKIbymHqDmnwffU2Tq+USV+WAOIlbRbZpRhZnMKWbWghmr66cN1gaOPkGg==","signatures":[{"sig":"MEUCIQDtXOXlXrIiJGLbO9883op7XeddABQz29FttXZdKuOtdAIgJRJo5lF/HgHTEft2AGz3nnl6rVjwxmxuL8uFXd0Nc3k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDTrKuLe4efatQf7k+3quzgL7hZSaAaVJ8MecAbCr3BnQIgSV/3WpB11HMoiF1woJrgNvwTv194qH+YH4CUGQAo5rI="}],"unpackedSize":934728},"main":"dist/index.js","name":"@cyanheads/federal-regulations-mcp-server","type":"module","types":"dist/index.d.ts","author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","shasum":"9afc1ede09645780f8e8f15aadd4b608e1201991","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"license":"Apache-2.0","mcpName":"io.github.cyanheads/federal-regulations-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/federal-regulations-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/federal-regulations-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","mirror:init":"bun run scripts/ecfr-mirror-init.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","mirror:verify":"bun run scripts/ecfr-mirror-verify.ts","lint:packaging":"bun run scripts/lint-packaging.ts","mirror:refresh":"bun run scripts/ecfr-mirror-refresh.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"version":"0.5.2","_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"overrides":{"nanoid":"^3.3.16","js-yaml":"^3.15.1","postcss":"^8.5.23","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.3.0"},"_integrity":"sha512-VLzoIuuGqYeLLUOp73dx/W48lxX9ZKIbymHqDmnwffU2Tq+USV+WAOIlbRbZpRhZnMKWbWghmr66cN1gaOPkGg==","repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","directories":{},"maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","entities":"^8.1.0","node-cron":"^4.6.0","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"26.6.2","@biomejs/biome":"2.5.14","better-sqlite3":"^13.0.3","@socketsecurity/bun-security-scanner":"^1.1.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/federal-regulations-mcp-server_0.5.2_1790343064950_0.35118198823440205"}}},"time":{"created":"2026-06-14T10:16:15.418Z","modified":"2026-09-25T13:31:05.205Z","0.1.0":"2026-06-14T10:16:15.839Z","0.1.1":"2026-06-15T16:45:23.700Z","0.1.2":"2026-06-20T11:34:59.654Z","0.1.3":"2026-08-09T23:29:55.315Z","0.1.4":"2026-08-10T00:42:05.760Z","0.2.0":"2026-08-10T02:29:23.236Z","0.2.1":"2026-08-10T04:20:55.387Z","0.2.2":"2026-08-10T06:04:55.192Z","0.2.3":"2026-08-22T14:19:36.628Z","0.2.4":"2026-08-22T14:37:18.867Z","0.2.5":"2026-09-20T21:08:12.437Z","0.3.0":"2026-09-22T19:49:48.953Z","0.4.0":"2026-09-22T21:21:03.273Z","0.5.0":"2026-09-25T09:42:46.374Z","0.5.1":"2026-09-25T10:52:27.405Z","0.5.2":"2026-09-25T13:31:05.062Z"},"bugs":{"url":"https://github.com/cyanheads/federal-regulations-mcp-server/issues"},"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","homepage":"https://github.com/cyanheads/federal-regulations-mcp-server#readme","keywords":["mcp","mcp-server","model-context-protocol","federal-register","ecfr","cfr","regulations","regulations-gov","rulemaking","administrative-law"],"repository":{"url":"git+https://github.com/cyanheads/federal-regulations-mcp-server.git","type":"git"},"description":"Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"readme":"<div align=\"center\">\n  <h1>@cyanheads/federal-regulations-mcp-server</h1>\n  <p><b>Search and trace US federal rules across the Federal Register (proposed/final rules and notices), the eCFR (codified, point-in-time CFR full text, locally mirrored), and Regulations.gov (rulemaking dockets and public comments) via MCP. STDIO or Streamable HTTP.</b>\n  <div>7 Tools • 2 Resources</div>\n  </p>\n</div>\n\n<div align=\"center\">\n\n[![Version](https://img.shields.io/badge/Version-0.5.2-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/federal-regulations-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^2.0.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/federal-regulations-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/federal-regulations-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.4.0-blueviolet.svg?style=flat-square)](https://bun.sh/)\n\n</div>\n\n<div align=\"center\">\n\n[![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/cyanheads/federal-regulations-mcp-server/releases/latest/download/federal-regulations-mcp-server.mcpb) [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=federal-regulations-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvZmVkZXJhbC1yZWd1bGF0aW9ucy1tY3Atc2VydmVyIl19) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22federal-regulations-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Ffederal-regulations-mcp-server%22%5D%7D)\n\n[![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)\n\n</div>\n\n<div align=\"center\">\n\n**Public Hosted Server:** [https://federal-regulations.caseyjhand.com/mcp](https://federal-regulations.caseyjhand.com/mcp)\n\n</div>\n\n---\n\n## Overview\n\nUS federal regulatory law from three official sources: the Federal Register (proposed rules, final rules, and notices), the eCFR (codified CFR text, current or as of a past date), and Regulations.gov (rulemaking dockets and public comments). Search rules, trace a document from proposal through its comments to the codified text, and read CFR sections. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.\n\n### Tools\n\n| Tool | Description |\n|:---|:---|\n| `regulations_search_rules` | Search Federal Register proposed rules, final rules, notices, and presidential documents by query, type, agency, date range, CFR part, docket number, and RIN, or resolve a page cite to its document |\n| `regulations_get_document` | Fetch one Federal Register document by number, with the docket IDs, CFR parts, citation, comment count, and comment URL that chain into other tools |\n| `regulations_browse_cfr` | List CFR titles, a title's chapters, or every section and appendix in a part, or full-text-search the codified CFR |\n| `regulations_get_cfr_section` | Read codified CFR text for a section, whole part, or appendix, current or as of a past date |\n| `regulations_get_docket` | Pull a rulemaking docket and its filed documents from Regulations.gov (key required) |\n| `regulations_find_comments` | Fetch public comments on a document or docket, or one comment's full body and attachments (key required) |\n| `regulations_list_open_comments` | List documents currently open for public comment, soonest closing first |\n\n### Resources\n\n| Resource | Description |\n|:---|:---|\n| `regulations://document/{documentNumber}` | One Federal Register document's metadata and cross-source handles |\n| `regulations://cfr/{title}/{part}/{section}` | Codified text of a current CFR section |\n\nBoth resources mirror a tool (`regulations_get_document`, `regulations_get_cfr_section`), so tool-only clients lose nothing.\n\n## Capability reference\n\n### `regulations_search_rules` <sub>tool</sub>\n\n- Optional full-text `query`, filtered by `type` (`PRORULE` / `RULE` / `NOTICE` / `PRESDOCU`), `agencies` (Federal Register slugs such as `environmental-protection-agency`, not names or acronyms), `published_after` / `published_before`, `cfr_title` + `cfr_part` (a part number or range such as `140-143`; `cfr_part` needs `cfr_title`, else `title_required_for_part`), `docket_id` (a docket number as the Federal Register prints it), and `rin`, all combined; `per_page` 2–100 (default 20), `page` 1–50\n- `citation` (`\"89 FR 49102\"`) with `citation_date` (the date its source note prints beside it) returns the documents printed on that page, in page order, volume 59 (1994) onward. A cite missing its date, or combined with the date window, fails with `citation_incomplete`; a volume before 59 or a date from another year fails with `citation_out_of_range`. When no document spans the page, the notice gives that day's page range\n- Each result carries `documentNumber`, `citation` / `startPage` / `endPage`, `agencies[].slug`, the printed `docketIds`, `regulationsGovDocketId` and `regulationsGovDocumentId`, `commentCount`, `commentUrl`, `commentsCloseOn` with `commentPeriodOpen` (open through 11:59 PM Eastern on the close date), `regulationIdNumbers`, and `cfrReferences` for the follow-up tools. `totalPages` and `nextPage` page the results. The Federal Register serves 50 pages, so `truncated` marks a set larger than 50 × `per_page` (1,000 at the default, 5,000 at 100); narrow the date window rather than paging deeper. `totalCount` stops at 10,000, which means at least that many. A window whose start falls after its end fails with `date_range_inverted`, and `invalid_filter` names a rejected parameter\n\n---\n\n### `regulations_get_document` <sub>tool</sub>\n\n- `document_number` in any form the Federal Register issues: `2024-07773` from 2010 on, and older and correction numbers such as `98-1572`, `E9-25990`, or `C1-2009-30484`; `include_full_text` adds the plain-text body as one window of `max_chars` (default 64,000, max 200,000) starting at `offset`, and passing either of those implies it\n- Returns metadata plus the handles other tools take: the Regulations.gov `docketId` and `regulationsGovDocumentId`, the printed `docketIds`, `citation` / `startPage` / `endPage`, `commentCount`, `commentUrl`, `commentPeriodOpen`, and `cfrReferences`. With text, `fullTextLength` and `fullTextNextOffset` (present while text remains) page the body; a major final rule runs past a million characters\n\n---\n\n### `regulations_browse_cfr` <sub>tool</sub>\n\n- `mode: \"structure\"` lists the 50 titles, a title's top-level divisions, or, with `title` + `part`, every section and appendix in the part with its `subpart` and `subjectGroup`; `mode: \"search\"` full-text-searches the codified CFR and requires `query`. `title`, `part` (needs `title`), and a point-in-time `date` scope both modes, and `per_page` 1–50 (default 20) pages search results and part listings\n- Search rows carry `cfrCite`, `heading`, `hierarchyPath`, and `excerpt`, one per section. `source` (`mirror` / `live`) and `sourceScope` name the corpus that answered and what it covers, and `countBasis` says whether `totalCount` counts `sections` or `section_versions`; live search reaches eCFR's first 10,000 hits only (`page_out_of_window` past them)\n\n---\n\n### `regulations_get_cfr_section` <sub>tool</sub>\n\n- One section (`title` + `part` + `section`), a whole part (`section` omitted), or one appendix (`appendix`, verbatim as `regulations_browse_cfr` emits it, e.g. `Appendix A-1 to Part 50`). `section` also takes cites as people write them (`\"61\"`, `\"§ 141.61\"`, `\"141.61(c)\"`) and the `cfrCite` the server returns (`\"40 CFR 141.61\"`, `\"14 CFR 241 § 25\"`; a cite naming another title fails with `conflicting_title`), `part` takes `\"Part 141\"`, and `date` reads text from 2017-01-01 through the title's up-to-date date\n- Text comes back as one `bodyText` window (`max_chars` default 64,000, max 200,000, from `offset`), paged by `bodyTextLength` and `bodyTextNextOffset`. A whole-part read adds a `sections[]` index with each section's `offset` and names its `appendices` without their text; `source` (`mirror` / `live`) reports provenance\n- A whole-part read also returns the part's `heading`, `authority`, `sourceNote`, and `notes`, and each `sections[]` entry carries the Authority or Source its subpart or subject group states for it\n- Superscripts read `^x` and subscripts `_x` (`3 × 10^−8`, `CO_{2}e`), footnote markers `[n]`, and diacritics and overlines are combining marks (`x̄`)\n\n---\n\n### `regulations_get_docket` <sub>tool</sub> · key required\n\n- `docket_id`, the Regulations.gov docket ID (e.g. `EPA-HQ-OAR-2025-0194`) — `regulationsGovDocketId` on a search or open-comments row, `docketId` from `regulations_get_document`, not a printed `docketIds` entry; `document_types` filters to `Proposed Rule`, `Rule`, `Notice`, `Supporting & Related Material`, or `Other`; `per_page` 5–250 (default 25), `page` 1–40\n- Returns the docket's metadata, `documentCount`, and `documents[]`, each with an `objectId` for `regulations_find_comments`, a `frDocNum` back to `regulations_get_document`, and `commentPeriodOpen` as Regulations.gov reports it. `totalPages` and `nextPage` page the documents; Regulations.gov serves 40 pages, so `truncated` marks a docket larger than 40 × `per_page` (10,000 at 250)\n\n---\n\n### `regulations_find_comments` <sub>tool</sub> · key required\n\n- Exactly one of `docket_id`, `document_object_id`, `fr_document_number`, or `comment_id`; list scopes take `per_page` 5–250 (default 25) and `page` 1–40\n- `document_object_id` takes an object ID (`0900006485883ec6`) or a document ID (`EPA-HQ-OW-2022-0114-0027`). `fr_document_number` resolves to the Regulations.gov document carrying that exact number and answers `not_found` when none does\n- Lists narrow by comment text with `search_term`, and each hit then carries `highlightedContent`, the matched passages. `posted_after` / `posted_before` set an inclusive posted-date window. A backwards window fails with `date_range_inverted`, and filters passed with `comment_id` fail with `filter_requires_list_mode`\n- `mode` is `list` or `detail`. Lists return comment summaries without body text. `comment_id` returns the body, submitter, `receivedDate`, `postmarkDate`, `duplicateComments` (above 1 marks a mass-mail campaign record), and `attachments`, with `attachmentOnly: true` when the substance is in a PDF/DOCX file. Lists carry `totalPages` and `nextPage`; `truncated` marks a set larger than the 40 pages Regulations.gov serves reach (40 × `per_page`, 10,000 at 250), and posted-date windows take it one slice at a time\n\n---\n\n### `regulations_list_open_comments` <sub>tool</sub>\n\n- Optional `query`, `type` (`PRORULE`, `RULE`, `NOTICE`; default `[\"PRORULE\", \"RULE\"]`), `agencies` (Federal Register slugs), and `closing_before`; `per_page` 1–100 (default 20)\n- Rows sort by closing date, soonest first, and carry `commentsCloseOn`, `daysRemaining`, `documentNumber`, the printed `docketIds`, `regulationsGovDocketId` and `regulationsGovDocumentId`, `commentCount`, and `commentUrl`. `asOf` is today's date in Eastern time, so a document stays listed through its close day. `totalPages` and `nextPage` page the window; `truncated` means the Federal Register's 10,000-document limit was reached\n- Keyless. `keyed` reports whether `REGULATIONS_GOV_API_KEY` is set, which `regulations_get_docket` and `regulations_find_comments` need to follow up on a row\n\n---\n\n### `regulations://document/{documentNumber}` <sub>resource</sub>\n\n- `documentNumber` in any Federal Register form (`2024-07773`, `98-1572`, `E9-25990`); the payload is `regulations_get_document`'s without the body text\n- `docketId`, `regulationsGovDocumentId`, the printed `docketIds`, `cfrReferences`, `citation`, `commentCount`, and `commentUrl` chain into the search, comment, and CFR tools\n\n---\n\n### `regulations://cfr/{title}/{part}/{section}` <sub>resource</sub>\n\n- Sections only, at the current date and the tool's default 64,000-character window; the `part` and `section` segments resolve the way the tool resolves them (`\"Part 141\"`; `\"61\"`, `\"§ 141.61\"`, `\"40 CFR 141.61\"`)\n- `source` (`mirror` / `live`) reports provenance. `bodyTextNextOffset` marks a section longer than the window; read the rest through `regulations_get_cfr_section` with `offset`\n\n## Features\n\nBuilt on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): stdio and Streamable HTTP transports, pluggable auth (`none` / `jwt` / `oauth`), swappable storage (`in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`), structured logging with optional OpenTelemetry tracing.\n\nFederal Register / eCFR / Regulations.gov-specific:\n\n- One workflow over three official sources: the agent calls regulatory verbs (`search_rules`, `get_cfr_section`, `find_comments`) rather than three API clients\n- Cross-source stitching: every Federal Register document surfaces its docket ID and CFR-part handles, which feed the proposal → comments → final rule → codified text trace\n- Keyless core: the five Federal Register and eCFR tools need no key. `regulations_get_docket` and `regulations_find_comments` need `REGULATIONS_GOV_API_KEY` (free at [api.data.gov/signup](https://api.data.gov/signup/), 1,000 requests/hour) and fail with `auth_required`, naming the variable and signup URL, when it is missing or rejected\n- Locally mirrored codified CFR: the eCFR syncs into embedded SQLite + FTS5 for exact-cite reads and full-text search, and falls back to the live API for historical dates, whole parts, appendices, titles outside the mirror, and titles eCFR has re-issued since the mirror last synced them\n- A 45-second budget per request, shared by every upstream call, retry, and backoff, so a stalled source answers with `upstream_unavailable` inside a client's timeout\n\nAgent-friendly output:\n\n- Provenance: `source: \"mirror\" | \"live\"` on every CFR read, plus a `sourceScope` line on search naming what the corpus covers\n- Honest paging: `totalPages` and `nextPage` say how far a list goes, a page past the end names the last page instead of reading as \"nothing matched\", and matches beyond the Federal Register's 50 pages or Regulations.gov's 40 surface through `truncated` and `notice`, never as silently dropped rows\n- Attachment-aware comments: `attachmentOnly` flags a comment whose substance is a file, with the download URLs\n\n## Getting started\n\n### Public Hosted Instance\n\nA public instance is available at `https://federal-regulations.caseyjhand.com/mcp` — no installation required. Point any MCP client at it via Streamable HTTP:\n\n```json\n{\n  \"mcpServers\": {\n    \"federal-regulations-mcp-server\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://federal-regulations.caseyjhand.com/mcp\"\n    }\n  }\n}\n```\n\n### Self-Hosted / Local\n\nAdd the following to your MCP client configuration file. `REGULATIONS_GOV_API_KEY` enables the docket and comment tools; omit it to run the keyless Federal Register and eCFR tools alone.\n\n```json\n{\n  \"mcpServers\": {\n    \"federal-regulations-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"bunx\",\n      \"args\": [\"@cyanheads/federal-regulations-mcp-server@latest\"],\n      \"env\": {\n        \"MCP_TRANSPORT_TYPE\": \"stdio\",\n        \"MCP_LOG_LEVEL\": \"info\",\n        \"REGULATIONS_GOV_API_KEY\": \"your-key-here\"\n      }\n    }\n  }\n}\n```\n\nOr with npx (no Bun required):\n\n```json\n{\n  \"mcpServers\": {\n    \"federal-regulations-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cyanheads/federal-regulations-mcp-server@latest\"],\n      \"env\": {\n        \"MCP_TRANSPORT_TYPE\": \"stdio\",\n        \"MCP_LOG_LEVEL\": \"info\",\n        \"REGULATIONS_GOV_API_KEY\": \"your-key-here\"\n      }\n    }\n  }\n}\n```\n\nOr with Docker:\n\n```json\n{\n  \"mcpServers\": {\n    \"federal-regulations-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-e\", \"MCP_TRANSPORT_TYPE=stdio\",\n        \"-e\", \"REGULATIONS_GOV_API_KEY=your-key-here\",\n        \"ghcr.io/cyanheads/federal-regulations-mcp-server:latest\"\n      ]\n    }\n  }\n}\n```\n\nFor Streamable HTTP, set the transport and start the server:\n\n```sh\nMCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http\n# Server listens at http://localhost:3010/mcp\n```\n\n### Prerequisites\n\n- [Bun v1.4.0](https://bun.sh/) or higher (or Node.js v24+).\n- Optional: a free [api.data.gov key](https://api.data.gov/signup/) for the Regulations.gov tools.\n\n### Installation\n\n1. **Clone the repository:**\n\n```sh\ngit clone https://github.com/cyanheads/federal-regulations-mcp-server.git\n```\n\n2. **Navigate into the directory:**\n\n```sh\ncd federal-regulations-mcp-server\n```\n\n3. **Install dependencies:**\n\n```sh\nbun install\n```\n\n4. **Configure environment:**\n\n```sh\ncp .env.example .env\n# optionally set REGULATIONS_GOV_API_KEY\n```\n\n## Configuration\n\n| Variable | Description | Default |\n|:---|:---|:---|\n| `REGULATIONS_GOV_API_KEY` | api.data.gov key for `regulations_get_docket` and `regulations_find_comments`. | none |\n| `FEDERAL_REGISTER_BASE_URL` | Federal Register API v1 base URL. | `https://www.federalregister.gov/api/v1` |\n| `ECFR_BASE_URL` | eCFR API base URL. | `https://www.ecfr.gov/api` |\n| `REGULATIONS_GOV_BASE_URL` | Regulations.gov API v4 base URL. | `https://api.regulations.gov/v4` |\n| `ECFR_MIRROR_PATH` | Path to the eCFR SQLite mirror database. | `./data/ecfr-mirror.sqlite` |\n| `ECFR_MIRROR_REFRESH_CRON` | Cron expression for an in-process mirror refresh (HTTP transport only), e.g. `0 4 * * 0`. Each run re-harvests every configured title in full. | none (no job) |\n| `ECFR_MIRROR_TITLES` | Comma-separated CFR titles to mirror (e.g. `21,40`). Reads and searches outside the set, and all-titles searches, go to the live eCFR API. | all 50 titles |\n| `MCP_TRANSPORT_TYPE` | Transport: `stdio` or `http`. | `stdio` |\n| `MCP_HTTP_PORT` | HTTP server port. | `3010` |\n| `MCP_AUTH_MODE` | Authentication: `none`, `jwt`, or `oauth`. | `none` |\n| `MCP_LOG_LEVEL` | Log level (`debug`, `info`, `warning`, `error`, etc.). | `info` |\n| `STORAGE_PROVIDER_TYPE` | Storage backend: `in-memory`, `filesystem`, `supabase`, `cloudflare-kv/r2/d1`. | `in-memory` |\n| `OTEL_ENABLED` | Enable [OpenTelemetry](https://github.com/cyanheads/mcp-ts-core/tree/main/docs/telemetry). | `false` |\n\nSee [`.env.example`](./.env.example) for the full list of optional overrides.\n\n## Running the server\n\n### Local development\n\n- **Build and run:**\n\n  ```sh\n  # One-time build\n  bun run rebuild\n\n  # Run the built server\n  bun run start:stdio\n  # or\n  bun run start:http\n  ```\n\n- **Build or refresh the eCFR mirror** (out of band and idempotent; the CFR tools use the live eCFR API until the first build completes):\n\n  ```sh\n  bun run mirror:init      # full build, resumable (scope with ECFR_MIRROR_TITLES)\n  bun run mirror:refresh   # re-harvest every configured title against the latest eCFR issues\n  bun run mirror:verify    # report row counts and the last-synced issue date\n  ```\n\n- **Run checks and tests:**\n\n  ```sh\n  bun run devcheck   # Lint, format, typecheck, security, changelog sync\n  bun run test       # Vitest test suite\n  ```\n\n### Docker\n\n```sh\ndocker build -t federal-regulations-mcp-server .\ndocker run --rm -e REGULATIONS_GOV_API_KEY=your-key -p 3010:3010 federal-regulations-mcp-server\n```\n\nThe Dockerfile defaults to HTTP transport, stateless session mode, and logs to `/var/log/federal-regulations-mcp-server`. Build the mirror inside a running container with `docker exec <container> bun run mirror:init`, and mount a volume over `/usr/src/app/data` so it survives recreation. OpenTelemetry peer dependencies are installed by default; build with `--build-arg OTEL_ENABLED=false` to omit them.\n\n## Project structure\n\n| Directory | Purpose |\n|:---|:---|\n| `src/index.ts` | `createApp()` entry point: registers tools and resources, inits the three services, and schedules the mirror refresh when `ECFR_MIRROR_REFRESH_CRON` is set. |\n| `src/config` | Server-specific environment variable parsing and validation with Zod. |\n| `src/mcp-server/tools` | Tool definitions (`*.tool.ts`), the seven `regulations_*` tools. |\n| `src/mcp-server/resources` | Resource definitions (`*.resource.ts`), the document and CFR-section resources. |\n| `src/services/federal-register` | Federal Register API v1 client (keyless). |\n| `src/services/ecfr` | eCFR API client (keyless): versioner, structure, search, section XML parsing, and cite resolution. |\n| `src/services/ecfr-mirror` | eCFR codified-text mirror (SQLite + FTS5) and the opt-in refresh job. |\n| `src/services/regulations-gov` | Regulations.gov v4 client (`X-Api-Key`): dockets and comments. |\n| `src/services` | Shared request budget, text windowing, character-reference decoding, and upstream-failure handling. |\n| `scripts/ecfr-mirror-*.ts` | Out-of-band mirror lifecycle: `init`, `refresh`, `verify`. |\n| `tests/` | Unit and integration tests mirroring `src/`. |\n\n## Development guide\n\nSee [`CLAUDE.md`](./CLAUDE.md) for development guidelines and architectural rules. The short version:\n\n- Handlers throw, framework catches — no `try/catch` in tool logic\n- Use `ctx.log` for request-scoped logging, `ctx.state` for tenant-scoped storage\n- Register new tools and resources via the barrels in `src/mcp-server/*/definitions/index.ts`\n- Wrap external API calls: validate raw → normalize to the domain type → return the output schema; never fabricate missing upstream fields\n\n## Data disclaimer\n\neCFR content is \"authoritative but unofficial\" per the Office of the Federal Register, not the official legal edition of the Code of Federal Regulations; verify against [govinfo.gov](https://www.govinfo.gov/app/collection/cfr) for legal research. This server is not affiliated with or endorsed by the Office of the Federal Register, the Government Publishing Office, or the General Services Administration.\n\n## Contributing\n\nIssues are welcome. Run checks and tests before submitting:\n\n```sh\nbun run devcheck\nbun run test\n```\n\n## License\n\nApache-2.0 — see [LICENSE](LICENSE) for details.\n","readmeFilename":"README.md"}