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

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

+14 this week 76 Trust /100

Last scanned (14 hours ago)

Scores higher than 53% of npm servers

Category Security

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 Security81
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 30 of 93 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 6 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability63
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3398 tokens (~212/item across 16 items; 16 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 Management93
  • Stability observed for 28 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 17 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
What we tested

Checks we ran (16)

  • Malware scan
  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • Provenance
  • License
  • Maintenance
  • Security disclosure
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

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.

  • 6 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 4 Nov 26 −2
    • Stability: pass → 0.83 functional
  • 1 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 31 Oct 26 −16
    • Malware scan: pass → unverified ▼ security
    • Package version: 0.8.0 → 0.9.0 functional
  • 30 Oct 26 0
    • Package version: 0.6.1 → 0.8.0 functional
  • 28 Oct 26 0
    • Stability: 0.97 → pass security
  • 27 Oct 26 0
    • Stability: pass → 0.97 functional
  • 24 Oct 26 −5
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: pass → fail ▼ security
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 7 Nov 2026 · Analysed npm/@policyforge/mcp@0.9.0

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 →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-mrhx-c7xc-m3w5 CVE-2023-54404 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 93 packages
Packages resolved 93
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 16 exposed · ~3,152 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 ~168

Compliance gap analysis. Compares a stack manifest (the services, cookies and personal data a product uses) with a saved policy and returns missing disclosures, overstated claims, missing policy types and recommendations. Without a policy_id, it reports which policies the stack needs and what they must cover. Does not use generation quota.

NameTypeReqDescription
manifestobjectyesSummary of the services, cookies and personal data the product uses, e.g. {"analytics":["posthog"],"payments":["stripe"],"ai_features":["openai"],"cookies":["session","_ph_*"],"jurisdiction_signals":…
policy_idstring–Policy (UUID) to audit the manifest against. Omit to audit the manifest alone.

No output schema declared.

No examples provided.

check_generation ~77

Returns the state of a policy generation job: the finished document, the error if generation failed, or a note that it is still running. Takes the job ID that generate_policy, generate_baa or regenerate_policy returns when generation runs longer than about 45 seconds.

NameTypeReqDescription
job_idstringyesThe job ID returned by the generation tool.

No output schema declared.

No examples provided.

check_policy_freshness ~99

Compares a current stack manifest with the one stored when the policy was last generated or regenerated, and reports what changed in the stack, which shows whether the policy still matches the product. Works on the two manifests only: no AI call and no quota.

NameTypeReqDescription
current_manifestobjectyesThe product's current stack manifest, in the same format as stack_manifest.
idstringyesThe policy ID (UUID) to check.

No output schema declared.

No examples provided.

delete_policy ~48

Permanently deletes a policy. Its hosted URL and any embeds of it stop working immediately, and the deletion cannot be undone.

NameTypeReqDescription
idstringyesThe policy ID (UUID) to delete.

No output schema declared.

No examples provided.

generate_baa ~651

Generates 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. A BAA is a binding two-party contract rather than a published policy: it needs both parties' legal names and addresses, an effective date and a governing law state, and it is never hosted at a public URL. Requires a Pro plan. The result is a draft for counsel to review, not legal advice. If it is not finished within about 45 seconds, the tool returns a job ID instead of the document and the job keeps running.

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_daysinteger–Days 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's date.
baa_electronic_phiboolean–Default true. Adds 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_indemnificationboolean–Indemnification running from associate to covered entity.
baa_include_insuranceboolean–Pair with baa_insurance_amount.
baa_insurance_amountstring–Minimum 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_destroystring–What happens to PHI at termination.
baa_services_descriptionstringyesThe services that bring the associate into contact with PHI.
baa_term_end_datestring–YYYY-MM-DD. Required when baa_term_type is fixed_term.
baa_term_typestring–Default tied_to_services (runs with the underlying services agreement).
baa_uses_subcontractorsboolean–Default 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 ~797

Generates a legal policy (privacy policy, terms of service, cookie policy, refund policy, EULA or disclaimer) for a business, saves it to the PolicyForge account, and returns the Markdown content and a hosted URL. Uses one document from the account's quota. The optional fields describe what the product does (data collected, third-party services, payments, analytics, cookies), and the document is more accurate when they reflect the product's actual code and configuration. Company facts such as the legal name, contact email, physical address and governing law come from the user. For terms_of_service, eula and disclaimer, a document generated without governing_law or physical_address contains a placeholder where the governing law goes. The result lists claims to verify: statements about third parties, certifications or deadlines that the inputs did not supply. Generation takes 40 to 60 seconds. If it is not finished within about 45 seconds, the tool returns a job ID instead of the document and the job keeps running; calling generate_policy again starts a separate document and uses more quota.

NameTypeReqDescription
analyticsboolean–Does it use analytics?
business_typestringyesThe company's business category.
children_databoolean–Does it knowingly collect data from children?
company_namestringyesLegal/display name of the company.
consent_trackingboolean–Enable the "I agree" consent banner on the hosted page (default false).
contact_emailstringyesPublic contact email for legal inquiries.
cookiesboolean–Does it use cookies? Defaults to true for most websites.
data_collectionarray–Categories of personal data collected, e.g. ["email","name","usage"].
data_retentionstring–How long data is kept, e.g. "24 months".
dpo_emailstring–Data Protection Officer email, if any. Also sets hasDPO.
governing_lawstring–Governing law jurisdiction, e.g. "State of California, USA".
hosting_enabledboolean–Host 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…
marketingboolean–Does it send marketing communications?
paymentsboolean–Does it process payments?
physical_addressstring–Company physical address.
security_measuresarray–Security controls, e.g. ["encryption at rest","MFA"].
sells_databoolean–Does it sell or share personal data?
service_descriptionstring–Short description of what the product or service does.
stack_manifestobject–Structured summary of the services and data the product uses, e.g. {"analytics":["posthog"],"payments":["stripe"],"auth":["supabase"],"ai_features":["openai"],"cookies":["session"],"jurisdiction_sign…
table_of_contentsboolean–Add a linked table of contents to the generated document. Requires a Pro plan.
target_audiencearray–Audience segments, e.g. ["businesses","consumers"].
third_party_integrationsarray–Third-party processors, e.g. ["Stripe","Google Analytics"].
typestringyesThe kind of policy to generate.
user_accountsboolean–Does the product have user accounts?
website_urlstring–Company website URL.

No output schema declared.

No examples provided.

get_disclosure_checklist ~53

Returns PolicyForge's disclosure checklist: the SDKs, scripts and code patterns that legally require disclosure in a privacy or cookie policy, and how each one maps to generate_policy's fields and the stack manifest format.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_integration_guide ~83

Returns snippets for adding a policy to a website: the hosted link, an embed snippet, and where to place them in the chosen framework (Next.js, React, WordPress or plain HTML).

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

No output schema declared.

No examples provided.

get_policy ~46

Returns one 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 ~20

Returns the account's plan and its remaining document generation quota.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_policies ~104

Lists the policies saved on this PolicyForge account, newest first, with optional filters by status and type.

NameTypeReqDescription
limitinteger–Max results (1-100, default 20).
offsetinteger–Pagination offset.
sortBystring–Sort field (default updatedAt).
sortOrderstring–Sort direction (default desc).
statusstring–Filter by status.
typestring–Filter by policy type.

No output schema declared.

No examples provided.

list_policy_types ~23

Lists the policy types, business types and jurisdictions that generate_policy accepts.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_policy_versions ~53

Lists a policy's version history: a snapshot taken before every update, regeneration or restore, plus any auto-generated compliance update drafts, each with its version number.

NameTypeReqDescription
idstringyesThe policy ID (UUID).

No output schema declared.

No examples provided.

regenerate_policy ~572

Re-runs AI generation for an existing policy, using its stored business details merged with the changed fields provided. The policy ID and hosted URL stay the same, so published links keep working, and the previous content is saved as a version first. Suited to substantial changes such as new integrations, a new jurisdiction or a renamed company. Uses one document from the account's quota. If it is not finished within about 45 seconds, the tool returns a job ID instead of the document and the job keeps running.

NameTypeReqDescription
analyticsboolean–Does it use analytics?
business_typestring–Changed business category.
children_databoolean–Does it knowingly collect data from children?
company_namestring–Changed company name.
contact_emailstring–Changed contact email.
cookiesboolean–Does it use cookies? Defaults to true for most websites.
data_collectionarray–Categories of personal data collected, e.g. ["email","name","usage"].
data_retentionstring–How long data is kept, e.g. "24 months".
dpo_emailstring–Data Protection Officer email, if any. Also sets hasDPO.
governing_lawstring–Governing law jurisdiction, e.g. "State of California, USA".
idstringyesThe policy ID (UUID) to regenerate.
jurisdictionstring–Changed legal framework(s), e.g. "gdpr,ccpa".
marketingboolean–Does it send marketing communications?
paymentsboolean–Does it process payments?
physical_addressstring–Company physical address.
security_measuresarray–Security controls, e.g. ["encryption at rest","MFA"].
sells_databoolean–Does it sell or share personal data?
service_descriptionstring–Short description of what the product or service does.
stack_manifestobject–Structured summary of the services and data the product uses, e.g. {"analytics":["posthog"],"payments":["stripe"],"auth":["supabase"],"ai_features":["openai"],"cookies":["session"],"jurisdiction_sign…
table_of_contentsboolean–Add a linked table of contents to the generated document. Requires a Pro plan.
target_audiencearray–Audience segments, e.g. ["businesses","consumers"].
third_party_integrationsarray–Third-party processors, e.g. ["Stripe","Google Analytics"].
user_accountsboolean–Does the product have user accounts?
website_urlstring–Company website URL.

No output schema declared.

No examples provided.

restore_policy_version ~76

Restores a policy to an earlier version by version number. The current content is saved as a new version first, so a restore can itself be undone. The hosted URL does not change.

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

No output schema declared.

No examples provided.

update_policy ~282

Updates an existing policy in place. The policy ID, hosted URL and embeds stay the same, so links already published on a site keep working. Accepts small find-and-replace changes as `edits` or a complete revised document as `content`, and can also change the title, status, effective date, hosting and consent banner. The previous content is saved as a version first, so an update can be undone. Does not use generation quota.

NameTypeReqDescription
consent_trackingboolean–Enable/disable the "I agree" consent banner on the hosted page.
contentstring–Full replacement Markdown content: the complete document, not a diff. Cannot be combined with `edits`.
editsarray–Small changes applied to the current content in order, e.g. [{"find":"Paddle","replace":"Dodo Payments"}]. All edits must match or none are applied. Cannot be combined with `content`.
effective_datestring–New effective date, ISO format e.g. "2026-07-13".
hosting_enabledboolean–Enable/disable the public hosted page.
idstringyesThe policy ID (UUID) to update.
statusstring–Change publication status. Only 'published' policies are served at the hosted URL.
titlestring–New policy title.

No output schema declared.

No examples provided.

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
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 76 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 7 November 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 16 tools: generate_policy, generate_baa, list_policies, get_policy, check_generation, and 11 more. Their descriptions and schemas cost roughly 3,152 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 7 November 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.

What did VerifyMCP test on the co.policyforge/mcp server?

VerifyMCP ran 16 checks on co.policyforge/mcp, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.