PolicyForge MCP Server vs Ris
A side-by-side look at the PolicyForge MCP Server and Ris MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose PolicyForge MCP Server for legal work as a local process; choose Ris for legal as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose PolicyForge MCP Server when
- You need dedicated capabilities in the Legal domain.
- You prefer a local stdio subprocess transport.
- You have the keys it needs:
POLICYFORGE_API_KEY. - You want tools like
generate_policy, generate_baa, list_policies.
Choose Ris when
- You need dedicated capabilities in the Legal domain.
- You prefer a local stdio subprocess transport.
- You want tools like
ris_bundesrecht, ris_landesrecht, ris_judikatur.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Legal | Legal |
| Quality signal | 61/100 · Good | 63/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | POLICYFORGE_API_KEY | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 19 |
| Directory activity | 3 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 16 | 13 |
| Full listing | View PolicyForge MCP Server | View Ris |
Tools & capabilities
PolicyForge MCP Server tools 16
generate_policyGenerate a legal policy (privacy policy, terms of service, cookie policy, refund policy, EULA, or disclaimer) for a business and return its Markdown content plus a hosted URL. Consumes one policy from the account's quota. IMPORTANT: if you are working inside the user's project, call get_disclosure_checklist and scan the codebase FIRST (dependencies, script tags, cookie writes, outbound hosts), then fill the optional fields below from what the code actually does — do not ask the user for facts you can read from source. Only ask for what code cannot tell you: legal company name, contact email, physical address, governing law. For terms_of_service, eula and disclaimer, always ask for governing_law: without it (or a physical address to infer it from) the document contains a marker to fill in. The result lists claims to verify: specific statements about third parties, certifications or deadlines that your inputs did not supply. Show them to the user and fix them with update_policy before publishing. Generation takes 40-60 seconds; if it is not finished within about 45 seconds this returns a job ID instead, and check_generation fetches the result. Never call generate_policy again for the same policy while a job is running.generate_baaGenerate a HIPAA Business Associate Agreement (BAA) between a covered entity and a vendor that handles Protected Health Information. Built from the clauses required by 45 CFR 164.504(e) and validated clause by clause before it is returned. Use this instead of generate_policy for BAAs — a BAA is a binding two-party contract, not a published policy, so it needs both parties' legal names and addresses and is never hosted at a public URL. Ask the user for the party details, effective date, and governing law: these are negotiated facts you cannot read from source code. Requires a Pro plan. The result is a draft for counsel to review, not executed legal advice. If it is not finished within about 45 seconds this returns a job ID; use check_generation for the result.list_policiesList the policies previously created on this PolicyForge account, newest first.get_policyRetrieve a single policy by ID, including its status, hosted URL, and full Markdown content.check_generationGet the result of a generate_policy, generate_baa or regenerate_policy call that was still running when it returned a job ID. Returns the finished policy, the error if generation failed, or says it is still running. Use this instead of starting the generation again, which would create a duplicate.update_policyUpdate an existing policy in place — the policy ID, hosted URL, and embed keep working, so links already published on the user's site stay valid. Use this instead of generate_policy when the business context changed (new SDK, new data flow, renamed company): fetch the current content with get_policy, then either send small changes as `edits` (exact find/replace pairs, best for one-line fixes) or submit the complete revised Markdown as `content`. The previous content is saved as a version first, so restore_policy_version can undo a bad update.regenerate_policyRe-run the AI generation engine over a policy's stored business context merged with the changed fields you provide — same policy ID and hosted URL, so published links keep working. The previous content is saved as a version first (see list_policy_versions / restore_policy_version). Consumes one generation from quota, like generate_policy. Use this when the business context changed substantially (new integrations, new jurisdiction, renamed company); for small wording fixes prefer update_policy, which is free and instant. If it is not finished within about 45 seconds this returns a job ID; use check_generation for the result.audit_complianceCompliance gap analysis: submit the stack manifest you built by scanning the codebase (see get_disclosure_checklist), optionally with a policy_id to audit against. PolicyForge compares what the code does with what the policy discloses and returns missing disclosures, overstated claims, missing policy types, and recommendations. Without a policy_id it audits the manifest alone (which policies are needed and what they must cover). Does not consume generation quota.check_policy_freshnessDrift detection: scan the codebase now (get_disclosure_checklist), build the current stack manifest, and compare it against the manifest stored when the policy was last generated/regenerated. Reports what changed in the stack so you know whether the policy still matches the code. Runs locally on the two manifests — no AI call, no quota.list_policy_versionsVersion history for a policy: snapshots taken before every API update, regeneration, or restore, plus any auto-generated compliance update drafts. Use get-version content via restore_policy_version, or fetch a single version's content with this policy's versions endpoint.restore_policy_versionRestore a policy to a previous version from list_policy_versions. The current content is snapshotted as a new version first, so a restore is itself reversible. The hosted URL is unchanged.delete_policyPermanently delete a policy. The hosted URL and any embeds of it stop working immediately, and this cannot be undone. Confirm with the user before deleting anything they may have linked from their site.- +4 more on the listing page
Ris tools 13
ris_bundesrechtSearch Austrian federal laws (Bundesrecht). Use this tool to find Austrian federal legislation like ABGB, StGB, UGB, etc. Search strategy: "titel" and "paragraph" are the precise entry points — prefer them whenever the law or the section is known ("paragraph" is ignored for applikation="Erv", the English translations). "suchworte" runs a broad full-text search and the RIS API returns those hits ordered alphabetically by law title, not by relevance, so a common term buries the relevant law under thousands of results. Austrian law often splits one topic across several statutes, so look for a companion law: warranty, for example, is covered both by the VGG (consumer sales, B2C, in force since 2022) and by §§ 922 ff ABGB (general warranty law, including B2B). Example queries: - suchworte="Mietrecht" -> Find laws mentioning rent law - titel="ABGB", paragraph="1295" -> Find specific ABGB section - titel="B-VG", paragraph="7", abschnitt_typ="Artikel" -> Article-based laws - titel="ABGB", fassung_vom="2015-01-01" -> Consolidated version as of a date - applikation="Begut" -> Search draft legislationris_landesrechtSearch Austrian state/provincial laws (Landesrecht). Use this tool to find laws enacted by Austrian federal states (Bundeslaender). Search strategy: "titel" and "paragraph" (together with "bundesland") are the precise entry points — prefer them whenever the law or the section is known. "suchworte" runs a broad full-text search and the RIS API returns those hits ordered alphabetically by law title, not by relevance, so a common term buries the relevant law under thousands of results. Austrian law often splits one topic across several statutes and across the federal/state divide — when the topic turns out to be federal rather than state law (warranty, for example, sits in the VGG and in §§ 922 ff ABGB), search it with ris_bundesrecht instead. Example queries: - suchworte="Bauordnung", bundesland="Salzburg" -> Find state building law - titel="Bauordnung", bundesland="Wien", paragraph="1" -> Specific section - suchworte="Naturschutz", bundesland="Tirol", fassung_vom="2020-01-01" -> Version as of a dateris_judikaturSearch Austrian court decisions (Judikatur). Use this tool to find court decisions from Austrian courts. Choose the jurisdiction via "gerichtsbarkeit" (which court system to search). RIS distinguishes two document kinds, controlled by "dokumenttyp": - Rechtssatz: abstract legal principle / headnote (Leitsatz) distilled from a decision - Entscheidungstext: the full decision text including reasoning (Begruendung) The default "beide" searches both for the most complete results. Example queries: - gerichtsbarkeit="Vfgh", suchworte="Grundrecht" -> Constitutional Court decisions - suchworte="Schadenersatz", gericht="OGH" -> Only Supreme Court (OGH) decisions - norm="1295 ABGB" -> Which decisions cite §1295 ABGB? - gerichtsbarkeit="Justiz", fachgebiet="Arbeitsrecht", sortierung="datum_ab" -> Newest labor-law decisionsris_bundesgesetzblattSearch Austrian Federal Law Gazettes (Bundesgesetzblatt). Use this tool for historical research and tracking when laws were enacted. Contains official publications of federal laws, ordinances, and treaties. Example queries: - bgblnummer="120", jahrgang="2023", teil="1" -> Find specific gazette - suchworte="Klimaschutz" -> Full-text search in gazettesris_landesgesetzblattSearch Austrian State Law Gazettes (Landesgesetzblatt). Use this tool to find official publications of state/provincial laws. Covers all 9 federal states (Bundeslaender). Example queries: - lgblnummer="50", jahrgang="2023", bundesland="Wien" - suchworte="Bauordnung", bundesland="Salzburg"ris_regierungsvorlagenSearch Austrian Government Bills (Regierungsvorlagen). Use this tool for legislative history and parliamentary materials. Contains government proposals submitted to parliament. Example queries: - suchworte="Klimaschutz" -> Full-text search in bills - einbringende_stelle="BMF (Bundesministerium für Finanzen)" -> Bills from Finance Ministry - beschlussdatum_von="2024-01-01", beschlussdatum_bis="2024-12-31" -> Bills from 2024ris_dokumentRetrieve full text of a legal document. Use this after searching to load the complete text of a specific law or decision. Note: For long documents, content may be truncated. Use specific searches to narrow down.ris_dokument_abschnittReturn one section of a document already open in the RIS document viewer. Intended for the viewer widget, not for direct use — for the full text of a document use `ris_dokument`.ris_bezirkeSearch Austrian district administrative authority announcements (Kundmachungen der Bezirksverwaltungsbehörden). Use this tool to find announcements and ordinances from district administrative authorities. Note: Only certain states publish here: Niederösterreich, Oberösterreich, Tirol, Vorarlberg, Burgenland, Steiermark. Example queries: - bundesland="Niederösterreich", suchworte="Bauordnung" - bezirksverwaltungsbehoerde="Bezirkshauptmannschaft Innsbruck"ris_gemeindenSearch Austrian municipal law (Gemeinderecht). Use this tool to find municipal regulations and local ordinances. Applications: - Gr: Municipal law (Gemeinderecht) - default - GrA: Cross-border municipal law (Gemeinderecht Authentisch/Amtsblätter) Example queries: - gemeinde="Graz", suchworte="Parkgebuehren" - bundesland="Tirol", titel="Gebuehrenordnung" - applikation="Gr", index="Baurecht" - applikation="GrA", bezirk="Bregenz"ris_sonstigeSearch miscellaneous Austrian legal collections (Sonstige). Use this tool for specialized legal documents and historical materials. Available applications: - PruefGewO: Trade licensing examinations (Gewerbeordnung) - Avsv: Social insurance announcements (Sozialversicherung) - Spg: Health structure plans (Strukturpläne Gesundheit) - Avn: Official veterinary notices (Amtliche Veterinärnachrichten) - KmGer: Court announcements (Kundmachungen der Gerichte) - Upts: Party transparency decisions (Parteien-Transparenz-Senat) - Mrp: Council of Ministers protocols (Ministerratsprotokolle) - Erlaesse: Ministerial decrees (Erlässe der Bundesministerien) Example queries: - applikation="Mrp", suchworte="Budget", einbringer="BMF..." - applikation="Erlaesse", bundesministerium="Bundesministerium für Finanzen" - applikation="Upts", partei="SPÖ - Sozialdemokratische Partei Österreichs" - applikation="KmGer", kmger_typ="Geschaeftsordnung" - applikation="Avsv", dokumentart="Richtlinie"ris_historySearch document change history (Aenderungshistorie). Use this tool to track changes to legal documents over time. Shows when documents were created, modified, or deleted. Available applications (30 total): - Bundesrecht: Bundesnormen, BgblAuth, BgblAlt, BgblPdf, RegV - Landesrecht: Landesnormen, LgblAuth, Lgbl, LgblNO, Vbl, Gemeinderecht, GemeinderechtAuth - Judikatur: Justiz, Vfgh, Vwgh, Bvwg, Lvwg, Dsk, Gbk, Pvak, AsylGH - Sonstige: Bvb, Mrp, Erlaesse, PruefGewO, Avsv, Spg, KmGer, Dok, Normenliste Example queries: - applikation="Bundesnormen", aenderungen_von="2024-01-01", aenderungen_bis="2024-01-31" - applikation="Justiz", aenderungen_von="2024-06-01"- +1 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
PolicyForge MCP Server
{
"mcpServers": {
"mcp-52": {
"command": "npx",
"args": [
"-y",
"@policyforge/mcp@latest"
],
"env": {
"POLICYFORGE_API_KEY": "YOUR_POLICYFORGE_API_KEY_HERE"
}
}
}
}
Ris
{
"mcpServers": {
"ris": {
"command": "npx",
"args": [
"-y",
"ris-mcp-ts"
]
}
}
}
Frequently asked questions
PolicyForge MCP Server is categorized under Legal and uses a local stdio subprocess. Ris belongs to Legal and uses a local stdio subprocess. Pick PolicyForge MCP Server for legal work and Ris for legal.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
PolicyForge MCP Server has no declared pricing — check the project's own site. Ris has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add mcp-52 and ris as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, PolicyForge MCP Server has a quality signal of 61/100 (Good) with 3 views, 0 installs and 0 GitHub stars. Ris has 63/100 (Good) with 1 views, 0 installs and 19 GitHub stars.