{"_id":"@ansvar/austrian-law-mcp","_rev":"4-4fec9120c2d4854908c090520458b203","name":"@ansvar/austrian-law-mcp","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@ansvar/austrian-law-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","ai","claude","at-law","austria","legal","compliance","ris-ogd","ansvar"],"author":{"name":"Ansvar Systems AB","email":"hello@ansvar.ai"},"license":"Apache-2.0","_id":"@ansvar/austrian-law-mcp@1.0.0","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"homepage":"https://github.com/Ansvar-Systems/Austria-law-mcp#readme","bugs":{"url":"https://github.com/Ansvar-Systems/Austria-law-mcp/issues"},"bin":{"austria-law-mcp":"dist/index.js"},"dist":{"shasum":"60e2b061614bb284fda136b19ab403e025ca4839","tarball":"https://registry.npmjs.org/@ansvar/austrian-law-mcp/-/austrian-law-mcp-1.0.0.tgz","fileCount":131,"integrity":"sha512-v2qN8bZq131mNevgRFSJvTznF4mi6nmXoAHAhJujOuXnJbnZvr8hvfH9lyUri4g3qXiihBcnK6wsziOb/4HylQ==","signatures":[{"sig":"MEYCIQC7aSc2zEocPCWSHMOSdGKqs/TXOAmWd6eBQu7pcXcbMgIhAIumOeLCjI6fy8Evg9YF6vomHKWCDBr9Qu2PfePgMFm0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181263},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"0534d24f0b06ab6050dc1668b566a4bb1baa6f4d","mcpName":"austrian-law-mcp","scripts":{"dev":"node --import tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","ingest":"node --import tsx scripts/ingest.ts","build:db":"node --import tsx scripts/build-db.ts","validate":"npm test && npm run test:contract","test:watch":"vitest","postinstall":"test -d dist || npm run build || true","drift:detect":"node --import tsx scripts/drift-detect.ts","check-updates":"node --import tsx scripts/check-updates.ts","test:contract":"vitest run __tests__/contract/","test:coverage":"vitest run --coverage","db:update-seed":"node --import tsx scripts/update-db-from-seed.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"},"repository":{"url":"git+https://github.com/Ansvar-Systems/Austria-law-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Austrian Law MCP — German legislation via Model Context Protocol","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@ansvar/mcp-sqlite":"^1.0.3","@modelcontextprotocol/sdk":"^1.25.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^22.15.29","@vercel/node":"^5.6.3","better-sqlite3":"^12.6.2","fast-xml-parser":"^5.3.5","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/austrian-law-mcp_1.0.0_1771573809397_0.3718672969401895","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Ansvar MCP servers are now distributed as source from github.com/Ansvar-Systems/austrian-law-mcp under Apache 2.0. Self-hosting instructions: see the repo README. Hosted gateway: ansvar.eu"},"1.0.2":{"name":"@ansvar/austrian-law-mcp","version":"1.0.2","keywords":["mcp","model-context-protocol","ai","claude","at-law","austria","legal","compliance","ris-ogd","ansvar"],"author":{"name":"Ansvar Systems AB","email":"hello@ansvar.ai"},"license":"Apache-2.0","_id":"@ansvar/austrian-law-mcp@1.0.2","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"homepage":"https://github.com/Ansvar-Systems/Austria-law-mcp#readme","bugs":{"url":"https://github.com/Ansvar-Systems/Austria-law-mcp/issues"},"bin":{"austria-law-mcp":"dist/index.js"},"dist":{"shasum":"d9958d2296d96586f0969bc80597d09999e403f8","tarball":"https://registry.npmjs.org/@ansvar/austrian-law-mcp/-/austrian-law-mcp-1.0.2.tgz","fileCount":131,"integrity":"sha512-jkNxhOpR2p2hlI9z/S/cO/k/N38kChUhigvEQq5/kmWGYfGYkK5dpPodfsP+SSgd74WCZFiI32pNXEHrnINkYQ==","signatures":[{"sig":"MEUCIAfB4NnUQoCy4TfUn6gBWZhV5UjIhpcuzlkbAegpGThLAiEAqMHVuI79nkrVhdHkoYr2iUVCarEU5YE2BozKqKBagNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ansvar%2faustrian-law-mcp@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181292},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"d0e29c1c101c337a30244ec8785233bf6d3fc533","mcpName":"austrian-law-mcp","scripts":{"dev":"node --import tsx src/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","start":"node dist/index.js","ingest":"node --import tsx scripts/ingest.ts","build:db":"node --import tsx scripts/build-db.ts","validate":"npm test && npm run test:contract","test:watch":"vitest","postinstall":"test -d dist || npm run build || true","drift:detect":"node --import tsx scripts/drift-detect.ts","check-updates":"node --import tsx scripts/check-updates.ts","test:contract":"vitest run __tests__/contract/","test:coverage":"vitest run --coverage","db:update-seed":"node --import tsx scripts/update-db-from-seed.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"},"repository":{"url":"git+https://github.com/Ansvar-Systems/Austrian-law-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Austrian Law MCP — German legislation via Model Context Protocol","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@ansvar/mcp-sqlite":"^1.0.3","@modelcontextprotocol/sdk":"^1.25.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^22.15.29","@vercel/node":"^5.6.3","better-sqlite3":"^12.6.2","fast-xml-parser":"^5.3.5","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/austrian-law-mcp_1.0.2_1771781772274_0.6108385873638291","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Ansvar MCP servers are now distributed as source from github.com/Ansvar-Systems/austrian-law-mcp under Apache 2.0. Self-hosting instructions: see the repo README. Hosted gateway: ansvar.eu"},"1.0.3":{"name":"@ansvar/austrian-law-mcp","version":"1.0.3","keywords":["mcp","model-context-protocol","ai","claude","at-law","austria","legal","compliance","ris-ogd","ansvar"],"author":{"name":"Ansvar Systems AB","email":"hello@ansvar.ai"},"license":"Apache-2.0","_id":"@ansvar/austrian-law-mcp@1.0.3","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"homepage":"https://github.com/Ansvar-Systems/Austria-law-mcp#readme","bugs":{"url":"https://github.com/Ansvar-Systems/Austria-law-mcp/issues"},"bin":{"austria-law-mcp":"dist/index.js"},"dist":{"shasum":"b87dd0b99fb5e9a495f37e25cbbb536809e9fda4","tarball":"https://registry.npmjs.org/@ansvar/austrian-law-mcp/-/austrian-law-mcp-1.0.3.tgz","fileCount":131,"integrity":"sha512-1WkZH3YtVZX37/xiBt/AaNT6Zl+jLMZTYn+iucLfUEhJHCJHMZqY5vFyopodid/ga3Zaei4AJTloaapwlr0LlA==","signatures":[{"sig":"MEYCIQCaXfdEoQ9oLgDSM7/rFk0Jipe0/VvLiDKM/nYENVffGAIhALMEQ+v5T8XIaF+11NNv7m6DWKaRvptb1Z4XuMsx81O2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ansvar%2faustrian-law-mcp@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181302},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"578afe177a24296e0918dd9b8548cbb2ab5b5ee7","mcpName":"eu.ansvar/austrian-law-mcp","scripts":{"dev":"node --import tsx src/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsc","start":"node dist/index.js","ingest":"node --import tsx scripts/ingest.ts","build:db":"node --import tsx scripts/build-db.ts","validate":"npm test && npm run test:contract","test:watch":"vitest","postinstall":"test -d dist || npm run build || true","drift:detect":"node --import tsx scripts/drift-detect.ts","check-updates":"node --import tsx scripts/check-updates.ts","test:contract":"vitest run __tests__/contract/","test:coverage":"vitest run --coverage","db:update-seed":"node --import tsx scripts/update-db-from-seed.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"},"repository":{"url":"git+https://github.com/Ansvar-Systems/Austrian-law-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Austrian Law MCP — German legislation via Model Context Protocol","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@ansvar/mcp-sqlite":"^1.0.3","@modelcontextprotocol/sdk":"^1.25.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^22.15.29","@vercel/node":"^5.6.3","better-sqlite3":"^12.6.2","fast-xml-parser":"^5.3.5","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/austrian-law-mcp_1.0.3_1771782324361_0.38698374560824456","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Ansvar MCP servers are now distributed as source from github.com/Ansvar-Systems/austrian-law-mcp under Apache 2.0. Self-hosting instructions: see the repo README. Hosted gateway: ansvar.eu"}},"time":{"created":"2026-02-20T07:50:09.295Z","modified":"2026-05-02T05:45:18.852Z","1.0.0":"2026-02-20T07:50:09.548Z","1.0.2":"2026-02-22T17:36:12.428Z","1.0.3":"2026-02-22T17:45:24.511Z"},"bugs":{"url":"https://github.com/Ansvar-Systems/Austria-law-mcp/issues"},"author":{"name":"Ansvar Systems AB","email":"hello@ansvar.ai"},"license":"Apache-2.0","homepage":"https://github.com/Ansvar-Systems/Austria-law-mcp#readme","keywords":["mcp","model-context-protocol","ai","claude","at-law","austria","legal","compliance","ris-ogd","ansvar"],"repository":{"url":"git+https://github.com/Ansvar-Systems/Austrian-law-mcp.git","type":"git"},"description":"Austrian Law MCP — German legislation via Model Context Protocol","maintainers":[{"name":"ansvar","email":"jeffrey.von.rotz@ansvar.eu"}],"readme":"# Austrian Law MCP Server\n\nProduction-oriented MCP server for Austrian federal legislation based on RIS OGD source data.\n\n## What This Server Provides\n\n- Full-text provision search over a local SQLite database (FTS5).\n- Provision retrieval by statute + section/provision reference.\n- Citation validation and formatting for Austrian citation patterns.\n- EU cross-reference lookup (Austrian law <-> EU directives/regulations).\n- Streamable HTTP transport for hosted usage and stdio transport for local usage.\n\n## Quick Start\n\n### Run Locally (stdio MCP)\n\n```bash\nnpm install\nnpm run build\nnpx @ansvar/austrian-law-mcp\n```\n\n### Run Locally in Dev Mode\n\n```bash\nnpm install\nnpm run dev\n```\n\n### Use Hosted Endpoint\n\nWhen deployed to Vercel, connect clients to:\n\n- `https://<your-domain>/mcp`\n- Health: `https://<your-domain>/health`\n- Version: `https://<your-domain>/version`\n\n## Database and Ingestion\n\n### Build Database from Seed Files\n\n```bash\nnpm run build:db\n```\n\n### Ingest from RIS OGD\n\n```bash\n# Full ingestion (slow)\nnpm run ingest\n\n# Single law refresh\nnpm run ingest -- --law 10001622\n```\n\n## Testing\n\n### Standard Tests\n\n```bash\nnpm test\n```\n\n### Contract/Golden Tests\n\n```bash\nnpm run test:contract\n```\n\n### Coverage\n\n```bash\nnpm run test:coverage\n```\n\n### Nightly Contract Mode (enables network assertions)\n\n```bash\nCONTRACT_MODE=nightly npm run test:contract\n```\n\n## Drift and Freshness Automation\n\n### Check Upstream Freshness\n\n```bash\nnpm run check-updates\n```\n\nThis checks configured anchor statutes against RIS “Fassung vom” dates and exits non-zero when updates are detected.\nIn restricted/offline environments you can run:\n\n```bash\nnpm run check-updates -- --allow-errors\n```\n\n### Drift Detection Against Anchored Upstream Pages\n\n```bash\nnpm run drift:detect\n```\n\nInitialize/update expected hashes:\n\n```bash\nnpm run drift:detect -- --update\n```\n\nAnchors are defined in `fixtures/golden-hashes.json`.\nIf outbound access is restricted, use:\n\n```bash\nnpm run drift:detect -- --allow-errors\n```\n\n### Apply Refreshed Seed Files to Existing Database\n\n```bash\n# Update DB using all local seed files\nnpm run db:update-seed\n\n# Update only specific laws\nnpm run db:update-seed -- --laws \"gesetz-10001622 gesetz-10003940\"\n```\n\n## Vercel Deployment\n\nThis repository includes `vercel.json` with:\n\n- Rewrites for `/mcp`, `/health`, `/version`.\n- Build command: `bash scripts/download-db.sh && npm run build`.\n- Bundled database + `node-sqlite3-wasm.wasm` in function artifacts.\n\n### Deploy\n\n1. Import the repository in Vercel.\n2. Ensure the tagged release contains `database.db.gz` for the current `package.json` version.\n3. Deploy. Verify:\n   - `/health` returns status JSON\n   - `/version` returns version metadata\n   - `/mcp` accepts MCP Streamable HTTP requests\n\n## GitHub Actions\n\nThe repo includes:\n\n- `CI` workflow: build, tests, contract tests, coverage.\n- `Data Freshness Check`: scheduled update checks, optional auto-refresh mode.\n- `Drift Detection`: scheduled upstream drift checks with issue creation on mismatch.\n\n## Data Provenance\n\n- Primary source: RIS OGD (`https://www.ris.bka.gv.at`).\n- Source metadata: `sources.yml`.\n- Server code license: Apache-2.0.\n\n## Disclaimer\n\nThis server is a legal research tool, not legal advice. Verify critical legal conclusions against official publications.\n","readmeFilename":"README.md"}