Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

co.policyforge/mcp

NPM · @POLICYFORGE/MCP · 2 COMPONENTS · SCANNED SEP 22

Generate, audit, and maintain legal policies that match what your code actually does.

0 this week 83 Trust /100
Trust breakdown (7 categories)

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
Install

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

# add to Claude Code
claude mcp add co-policyforge-mcp -- npx -y @policyforge/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "co-policyforge-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@policyforge/mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "co-policyforge-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@policyforge/mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add co-policyforge-mcp -- npx -y @policyforge/mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "co-policyforge-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@policyforge/mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add co-policyforge-mcp --command npx --arg -y --arg @policyforge/mcp
# ~/.hermes/config.yaml
mcp_servers:
  co-policyforge-mcp:
    command: "npx"
    args: ["-y", "@policyforge/mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "co-policyforge-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@policyforge/mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add co-policyforge-mcp -t stdio -c npx -a -y @policyforge/mcp
// mcp.json
{
  "mcpServers": {
    "co-policyforge-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@policyforge/mcp"
      ]
    }
  }
}
Changelog

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.

Diagnostics

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 →

MCP tools · 15 exposed · ~3,093 tokens

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 →

Tool Tokens
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.

NameTypeReqDescription
manifestobjectyesThe 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_idstringPolicy (UUID) to audit the manifest against. Omit to audit the manifest alone.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
current_manifestobjectyesThe stack manifest from your fresh codebase scan.
idstringyesThe policy ID (UUID) to check.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
idstringyesThe policy ID (UUID) to delete.

No output schema declared.

No examples provided.

generate_baa ~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.

NameTypeReqDescription
acknowledge_contractbooleanyesMust be true — a Business Associate Agreement is a binding contract, not legal advice, and should be reviewed by counsel before signing.
baa_breach_notification_daysintegerDays to report a breach after discovery. Default 30. 60 is the outer limit under 45 CFR 164.410.
baa_business_associate_addressstringyesAddress of the business associate.
baa_business_associate_namestringyesLegal name of the business associate.
baa_covered_entity_addressstringyesAddress of the covered entity.
baa_covered_entity_namestringyesLegal name of the covered entity.
baa_directionstringyescovered_entity_to_vendor (you are the practice) or business_associate_to_client (you are the vendor).
baa_effective_datestringyesYYYY-MM-DD — the date the parties agree on, not today.
baa_electronic_phibooleanDefault true — triggers the HIPAA Security Rule safeguard obligations.
baa_governing_law_statestringyesGoverning law state. Stricter state health privacy law is layered on top of HIPAA.
baa_include_indemnificationbooleanIndemnification running from associate to covered entity.
baa_include_insurancebooleanPair with baa_insurance_amount.
baa_insurance_amountstringMinimum cyber liability coverage, e.g. "$1,000,000 per occurrence".
baa_permitted_usesarrayyesPermitted uses and disclosures per 45 CFR 164.504(e)(2)(i). Anything not listed is not permitted.
baa_phi_typesarrayyesCategories of PHI involved. Including "Substance use treatment records (42 CFR Part 2)" adds a Part 2 addendum.
baa_return_or_destroystringWhat happens to PHI at termination.
baa_services_descriptionstringyesThe services that bring the associate into contact with PHI.
baa_term_end_datestringYYYY-MM-DD — required when baa_term_type is fixed_term.
baa_term_typestringDefault tied_to_services (runs with the underlying services agreement).
baa_uses_subcontractorsbooleanDefault false — true adds the subcontractor flow-down clause.
company_namestringyesLegal name of the user's own company.
contact_emailstringyesContact email for the agreement.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
analyticsbooleanDoes it use analytics?
business_typestringyesThe company's business category.
children_databooleanDoes it knowingly collect data from children?
company_namestringyesLegal/display name of the company.
consent_trackingbooleanEnable the "I agree" consent banner on the hosted page (default false).
contact_emailstringyesPublic contact email for legal inquiries.
cookiesbooleanDoes it use cookies? Defaults to true for most websites.
data_collectionarrayCategories of personal data collected, e.g. ["email","name","usage"].
data_retentionstringHow long data is kept, e.g. "24 months".
dpo_emailstringData Protection Officer email, if any. Also sets hasDPO.
governing_lawstringGoverning law jurisdiction, e.g. "State of California, USA".
hosting_enabledbooleanHost the policy at a public policyforge.co URL (default true).
jurisdictionstringyesTarget 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…
marketingbooleanDoes it send marketing communications?
paymentsbooleanDoes it process payments?
physical_addressstringCompany physical address.
security_measuresarraySecurity controls, e.g. ["encryption at rest","MFA"].
sells_databooleanDoes it sell or share personal data?
service_descriptionstringShort description of what the product or service does.
stack_manifestobjectStructured 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_contentsbooleanAdd a linked table of contents to the generated document. Requires a Pro plan.
target_audiencearrayAudience segments, e.g. ["businesses","consumers"].
third_party_integrationsarrayThird-party processors, e.g. ["Stripe","Google Analytics"].
typestringyesThe kind of policy to generate.
user_accountsbooleanDoes the product have user accounts?
website_urlstringCompany website URL.

No output schema declared.

No examples provided.

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 ~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.

NameTypeReqDescription
frameworkstringThe site's framework, for tailored snippets (default: html).
idstringyesThe policy ID (UUID) to integrate.

No output schema declared.

No examples provided.

get_policy ~48

Retrieve a single policy by ID, including its status, hosted URL, and full Markdown content.

NameTypeReqDescription
idstringyesThe policy ID (UUID) returned by generate_policy or list_policies.

No output schema declared.

No examples provided.

get_usage ~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 ~97

List the policies previously created on this PolicyForge account, newest first.

NameTypeReqDescription
limitintegerMax results (1-100, default 20).
offsetintegerPagination offset.
sortBystringSort field (default updatedAt).
sortOrderstringSort direction (default desc).
statusstringFilter by status.
typestringFilter by policy type.

No output schema declared.

No examples provided.

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 ~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.

NameTypeReqDescription
idstringyesThe policy ID (UUID).

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
analyticsbooleanDoes it use analytics?
business_typestringChanged business category.
children_databooleanDoes it knowingly collect data from children?
company_namestringChanged company name.
contact_emailstringChanged contact email.
cookiesbooleanDoes it use cookies? Defaults to true for most websites.
data_collectionarrayCategories of personal data collected, e.g. ["email","name","usage"].
data_retentionstringHow long data is kept, e.g. "24 months".
dpo_emailstringData Protection Officer email, if any. Also sets hasDPO.
governing_lawstringGoverning law jurisdiction, e.g. "State of California, USA".
idstringyesThe policy ID (UUID) to regenerate.
jurisdictionstringChanged legal framework(s), e.g. "gdpr,ccpa".
marketingbooleanDoes it send marketing communications?
paymentsbooleanDoes it process payments?
physical_addressstringCompany physical address.
security_measuresarraySecurity controls, e.g. ["encryption at rest","MFA"].
sells_databooleanDoes it sell or share personal data?
service_descriptionstringShort description of what the product or service does.
stack_manifestobjectStructured 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_contentsbooleanAdd a linked table of contents to the generated document. Requires a Pro plan.
target_audiencearrayAudience segments, e.g. ["businesses","consumers"].
third_party_integrationsarrayThird-party processors, e.g. ["Stripe","Google Analytics"].
user_accountsbooleanDoes the product have user accounts?
website_urlstringCompany website URL.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
idstringyesThe policy ID (UUID).
versionintegeryesThe version_number to restore (from list_policy_versions).

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
consent_trackingbooleanEnable/disable the "I agree" consent banner on the hosted page.
contentstringFull replacement Markdown content. Submit the COMPLETE document, not a diff.
effective_datestringNew effective date, ISO format e.g. "2026-07-13".
hosting_enabledbooleanEnable/disable the public hosted page.
idstringyesThe policy ID (UUID) to update.
statusstringChange publication status. Only 'published' policies are served at the hosted URL.
titlestringNew policy title.

No output schema declared.

No examples provided.

Common questions

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.