co.policyforge/mcp
NPM · @POLICYFORGE/MCP · 2 COMPONENTS · SCANNED SEP 22
Generate, audit, and maintain legal policies that match what your code actually does.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 49 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability69
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3093 tokens (~206/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
- Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the co.policyforge/mcp server?
co.policyforge/mcp runs locally as an npm package, launched with npx -y @policyforge/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @policyforge/mcp
claude mcp add co-policyforge-mcp -- npx -y @policyforge/mcp
{
"mcpServers": {
"co-policyforge-mcp": {
"command": "npx",
"args": [
"-y",
"@policyforge/mcp"
]
}
}
} {
"servers": {
"co-policyforge-mcp": {
"command": "npx",
"args": [
"-y",
"@policyforge/mcp"
]
}
}
} codex mcp add co-policyforge-mcp -- npx -y @policyforge/mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"co-policyforge-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@policyforge/mcp"
],
"enabled": true
}
}
} openclaw mcp add co-policyforge-mcp --command npx --arg -y --arg @policyforge/mcp
mcp_servers:
co-policyforge-mcp:
command: "npx"
args: ["-y", "@policyforge/mcp"] {
"McpServers": {
"co-policyforge-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@policyforge/mcp"
]
}
}
} assistant mcp add co-policyforge-mcp -t stdio -c npx -a -y @policyforge/mcp
{
"mcpServers": {
"co-policyforge-mcp": {
"command": "npx",
"args": [
"-y",
"@policyforge/mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 22 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Sept 26 +1
- Security disclosure: unverified → pass ▲ functional
- 20 Sept 26 −1
- Security disclosure: pass → unverified ▼ functional
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
- Security disclosure: unverified → pass ▲ functional
- 17 Sept 26 −3
- Security disclosure: pass → unverified ▼ functional
- Stability: pass → 0.80 functional
- 16 Sept 26 0
- Stability: 0.97 → pass security
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 22 Sept 2026 · Analysed npm/@policyforge/mcp@0.6.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
audit_compliance Audit compliance ~189
Compliance 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.
| Name | Type | Req | Description |
|---|---|---|---|
| manifest | object | yes | The detected-stack summary from your codebase scan, e.g. {"analytics":["posthog"],"payments":["stripe"],"ai_features":["openai"],"cookies":["session","_ph_*"],"jurisdiction_signals":["EU locales"],"u… |
| policy_id | string | – | Policy (UUID) to audit the manifest against. Omit to audit the manifest alone. |
No output schema declared.
No examples provided.
check_policy_freshness Check policy freshness ~111
Drift 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.
| Name | Type | Req | Description |
|---|---|---|---|
| current_manifest | object | yes | The stack manifest from your fresh codebase scan. |
| id | string | yes | The policy ID (UUID) to check. |
No output schema declared.
No examples provided.
delete_policy Delete policy ~62
Permanently 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The policy ID (UUID) to delete. |
No output schema declared.
No examples provided.
generate_baa Generate a HIPAA Business Associate Agreement ~656
Generate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge_contract | boolean | yes | Must be true — a Business Associate Agreement is a binding contract, not legal advice, and should be reviewed by counsel before signing. |
| baa_breach_notification_days | integer | – | Days to report a breach after discovery. Default 30. 60 is the outer limit under 45 CFR 164.410. |
| baa_business_associate_address | string | yes | Address of the business associate. |
| baa_business_associate_name | string | yes | Legal name of the business associate. |
| baa_covered_entity_address | string | yes | Address of the covered entity. |
| baa_covered_entity_name | string | yes | Legal name of the covered entity. |
| baa_direction | string | yes | covered_entity_to_vendor (you are the practice) or business_associate_to_client (you are the vendor). |
| baa_effective_date | string | yes | YYYY-MM-DD — the date the parties agree on, not today. |
| baa_electronic_phi | boolean | – | Default true — triggers the HIPAA Security Rule safeguard obligations. |
| baa_governing_law_state | string | yes | Governing law state. Stricter state health privacy law is layered on top of HIPAA. |
| baa_include_indemnification | boolean | – | Indemnification running from associate to covered entity. |
| baa_include_insurance | boolean | – | Pair with baa_insurance_amount. |
| baa_insurance_amount | string | – | Minimum cyber liability coverage, e.g. "$1,000,000 per occurrence". |
| baa_permitted_uses | array | yes | Permitted uses and disclosures per 45 CFR 164.504(e)(2)(i). Anything not listed is not permitted. |
| baa_phi_types | array | yes | Categories of PHI involved. Including "Substance use treatment records (42 CFR Part 2)" adds a Part 2 addendum. |
| baa_return_or_destroy | string | – | What happens to PHI at termination. |
| baa_services_description | string | yes | The services that bring the associate into contact with PHI. |
| baa_term_end_date | string | – | YYYY-MM-DD — required when baa_term_type is fixed_term. |
| baa_term_type | string | – | Default tied_to_services (runs with the underlying services agreement). |
| baa_uses_subcontractors | boolean | – | Default false — true adds the subcontractor flow-down clause. |
| company_name | string | yes | Legal name of the user's own company. |
| contact_email | string | yes | Contact email for the agreement. |
No output schema declared.
No examples provided.
generate_policy Generate policy ~734
Generate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| analytics | boolean | – | Does it use analytics? |
| business_type | string | yes | The company's business category. |
| children_data | boolean | – | Does it knowingly collect data from children? |
| company_name | string | yes | Legal/display name of the company. |
| consent_tracking | boolean | – | Enable the "I agree" consent banner on the hosted page (default false). |
| contact_email | string | yes | Public contact email for legal inquiries. |
| cookies | boolean | – | Does it use cookies? Defaults to true for most websites. |
| data_collection | array | – | Categories of personal data collected, e.g. ["email","name","usage"]. |
| data_retention | string | – | How long data is kept, e.g. "24 months". |
| dpo_email | string | – | Data Protection Officer email, if any. Also sets hasDPO. |
| governing_law | string | – | Governing law jurisdiction, e.g. "State of California, USA". |
| hosting_enabled | boolean | – | Host the policy at a public policyforge.co URL (default true). |
| jurisdiction | string | yes | Target legal framework(s). One or more of: gdpr, ccpa, pipeda, lgpd, us, eu, ca, uk, au, br, global, Europe, Canada, United Kingdom, Australia, Brazil, India, Singapore, Japan, Mexico. Combine multip… |
| marketing | boolean | – | Does it send marketing communications? |
| payments | boolean | – | Does it process payments? |
| physical_address | string | – | Company physical address. |
| security_measures | array | – | Security controls, e.g. ["encryption at rest","MFA"]. |
| sells_data | boolean | – | Does it sell or share personal data? |
| service_description | string | – | Short description of what the product or service does. |
| stack_manifest | object | – | Structured summary of the stack you detected while scanning the codebase (see get_disclosure_checklist), e.g. {"analytics":["posthog"],"payments":["stripe"],"auth":["supabase"],"ai_features":["openai… |
| table_of_contents | boolean | – | Add a linked table of contents to the generated document. Requires a Pro plan. |
| target_audience | array | – | Audience segments, e.g. ["businesses","consumers"]. |
| third_party_integrations | array | – | Third-party processors, e.g. ["Stripe","Google Analytics"]. |
| type | string | yes | The kind of policy to generate. |
| user_accounts | boolean | – | Does the product have user accounts? |
| website_url | string | – | Company website URL. |
No output schema declared.
No examples provided.
get_disclosure_checklist Get disclosure checklist ~71
Get the rubric for scanning a codebase before generating or updating policies: which SDKs, scripts, and patterns legally require disclosure, and how each finding maps to generate_policy's fields. Call this before generate_policy when working inside the user's project — policies derived from the actual code beat policies from memory.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_integration_guide Get integration guide ~92
Get copy-paste instructions for wiring a generated policy into the user's site: hosted link, embed snippet, and framework-specific placement. Call this after generate_policy to finish the job — a generated policy helps nobody until it's linked from the site.
| Name | Type | Req | Description |
|---|---|---|---|
| framework | string | – | The site's framework, for tailored snippets (default: html). |
| id | string | yes | The policy ID (UUID) to integrate. |
No output schema declared.
No examples provided.
get_policy Get policy ~48
Retrieve a single policy by ID, including its status, hosted URL, and full Markdown content.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The policy ID (UUID) returned by generate_policy or list_policies. |
No output schema declared.
No examples provided.
get_usage Get usage & quota ~45
Check the account's subscription tier and remaining policy-generation quota. Call this before generate_policy on accounts that may be on the free tier, so you can plan instead of hitting quota errors.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_policies List policies ~97
List the policies previously created on this PolicyForge account, newest first.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results (1-100, default 20). |
| offset | integer | – | Pagination offset. |
| sortBy | string | – | Sort field (default updatedAt). |
| sortOrder | string | – | Sort direction (default desc). |
| status | string | – | Filter by status. |
| type | string | – | Filter by policy type. |
No output schema declared.
No examples provided.
list_policy_types List policy types ~36
List the supported policy types, business types, and jurisdictions accepted by generate_policy. Call this first if unsure which enum values are valid.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_policy_versions List policy versions ~70
Version 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The policy ID (UUID). |
No output schema declared.
No examples provided.
regenerate_policy Regenerate policy ~586
Re-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.
| Name | Type | Req | Description |
|---|---|---|---|
| analytics | boolean | – | Does it use analytics? |
| business_type | string | – | Changed business category. |
| children_data | boolean | – | Does it knowingly collect data from children? |
| company_name | string | – | Changed company name. |
| contact_email | string | – | Changed contact email. |
| cookies | boolean | – | Does it use cookies? Defaults to true for most websites. |
| data_collection | array | – | Categories of personal data collected, e.g. ["email","name","usage"]. |
| data_retention | string | – | How long data is kept, e.g. "24 months". |
| dpo_email | string | – | Data Protection Officer email, if any. Also sets hasDPO. |
| governing_law | string | – | Governing law jurisdiction, e.g. "State of California, USA". |
| id | string | yes | The policy ID (UUID) to regenerate. |
| jurisdiction | string | – | Changed legal framework(s), e.g. "gdpr,ccpa". |
| marketing | boolean | – | Does it send marketing communications? |
| payments | boolean | – | Does it process payments? |
| physical_address | string | – | Company physical address. |
| security_measures | array | – | Security controls, e.g. ["encryption at rest","MFA"]. |
| sells_data | boolean | – | Does it sell or share personal data? |
| service_description | string | – | Short description of what the product or service does. |
| stack_manifest | object | – | Structured summary of the stack you detected while scanning the codebase (see get_disclosure_checklist), e.g. {"analytics":["posthog"],"payments":["stripe"],"auth":["supabase"],"ai_features":["openai… |
| table_of_contents | boolean | – | Add a linked table of contents to the generated document. Requires a Pro plan. |
| target_audience | array | – | Audience segments, e.g. ["businesses","consumers"]. |
| third_party_integrations | array | – | Third-party processors, e.g. ["Stripe","Google Analytics"]. |
| user_accounts | boolean | – | Does the product have user accounts? |
| website_url | string | – | Company website URL. |
No output schema declared.
No examples provided.
restore_policy_version Restore policy version ~76
Restore 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The policy ID (UUID). |
| version | integer | yes | The version_number to restore (from list_policy_versions). |
No output schema declared.
No examples provided.
update_policy Update policy ~220
Update 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, revise the Markdown yourself, and submit it here. Note: there is no version history — the previous content is overwritten.
| Name | Type | Req | Description |
|---|---|---|---|
| consent_tracking | boolean | – | Enable/disable the "I agree" consent banner on the hosted page. |
| content | string | – | Full replacement Markdown content. Submit the COMPLETE document, not a diff. |
| effective_date | string | – | New effective date, ISO format e.g. "2026-07-13". |
| hosting_enabled | boolean | – | Enable/disable the public hosted page. |
| id | string | yes | The policy ID (UUID) to update. |
| status | string | – | Change publication status. Only 'published' policies are served at the hosted URL. |
| title | string | – | New policy title. |
No output schema declared.
No examples provided.
What is the co.policyforge/mcp server?
co.policyforge/mcp is listed in the public MCP registry as co.policyforge/mcp. Generate, audit, and maintain legal policies that match what your code actually does. This page covers its npm package (@policyforge/mcp).
Is the co.policyforge/mcp server safe to use?
co.policyforge/mcp scores 83 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 22 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the co.policyforge/mcp server expose?
co.policyforge/mcp exposes 15 tools: generate_policy, generate_baa, list_policies, get_policy, update_policy, and 10 more. Their descriptions and schemas cost roughly 3,093 tokens of context every time the server is loaded.
Is the co.policyforge/mcp server still maintained?
co.policyforge/mcp is still listed as active in the MCP registry. We last reached this channel on 22 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the co.policyforge/mcp server under?
co.policyforge/mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.