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.

io.github.marcosnovo/lexvibe

NPM · @LEXVIBE/MCP · 2 COMPONENTS · SCANNED SEP 21

One-step legal compliance for vibe-coded apps: privacy, terms, cookie banner and EU AI Act check.

0 this week 79 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 & Transparency45
Schema Quality & AI Usability62
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4170 tokens (~417/item across 10 items; 10 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 Management83
  • Stability observed for 25 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
  • We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 11 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 io.github.marcosnovo/lexvibe MCP server?

io.github.marcosnovo/lexvibe runs locally as an npm package, launched with npx -y @lexvibe/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 · @lexvibe/mcp

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

  • 21 Sept 26 −3
    • Stability: pass → 0.83 functional
  • 20 Sept 26 +1
    • Stability: 0.97 → pass security
  • 18 Sept 26 +1

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

  • 16 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.

  • 14 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 13 Sept 26 +1
    • Stability: 0.97 → pass security
  • 11 Sept 26 +1

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

  • 9 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.

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 21 Sept 2026 · Analysed npm/@lexvibe/mcp@1.0.3

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 · 10 exposed · ~3,937 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
check_ai_act ~1,042

Classify a product's risk level under the EU AI Act — minimal, limited, high or prohibited — and return the applicable obligations, each with its compliance deadline (limited-risk transparency duties apply from Aug 2, 2026; Annex III high risk from Dec 2, 2027). The boolean parameters fall into three groups, all optional and defaulting to the safest 'not applicable' value: (1) transparency triggers — usesAI, interactsWithPeople, generatesContent, automatedDecisions; (2) the eight prohibited practices of art. 5 — socialScoring, realtimeBiometricPublic + realtimeBiometricLawEnforcement, emotionRecognitionWorkEducation, biometricCategorisationSensitive, untargetedFaceScraping, manipulativeOrExploitative, individualPredictivePolicing; (3) high-risk triggers — embeddedInRegulatedProduct, annexIII domains. Answer from what you know about the product (scan_project's suggestedAnswers.usesGenerativeAI maps to usesAI + generatesContent); leave unknowns at their defaults, which never over-report risk. Returns {level, headline, explanation, obligations: [{title, description, deadline}]}. Read-only, no signup; requires network access to the LexVibe API (errors return {error} with isError). Use it when the user asks whether the EU AI Act applies to them or after adding an AI feature; make_compliant already includes a basic version of this check.

NameTypeReqDescription
annexIIIarrayAnnex III high-risk domains the system operates in: biometrics, critical (infrastructure), education, employment (HR/hiring), essential (credit, insurance, benefits), law (enforcement), migration, ju…
automatedDecisionsbooleanDoes it make automated decisions with legal or similarly significant effects on people (credit, hiring, admissions…)? Adds GDPR art. 22 duties; high risk only if an Annex III domain applies.
biometricCategorisationSensitivebooleanDoes it use biometric data (face, voice, gait…) to infer sensitive attributes — race, political opinion, religion, trade-union membership, sexual orientation (art. 5.1.g)? Prohibited. Ordinary face-u…
embeddedInRegulatedProductbooleanIs the AI a safety component embedded in an Annex I regulated product (toys, machinery, medical devices…)? High risk via art. 6.1, deadline Aug 2, 2028.
emotionRecognitionWorkEducationbooleanDoes it infer emotions (frustration, attention, mood…) from employees at work or students in education, e.g. to flag disengaged staff or bored students (art. 5.1.f)? Prohibited. Emotion inference on…
generatesContentbooleanDoes it generate text, images, audio or video shown to users? Triggers the art. 50 duty to label AI-generated content.
individualPredictivePolicingbooleanPredicting an individual's criminal risk based solely on profiling or personality traits (art. 5.1.d)? Prohibited.
interactsWithPeoplebooleanDo people interact directly with the AI (chatbot, voice assistant…)? Triggers the art. 50 duty to disclose they are talking to an AI.
manipulativeOrExploitativebooleanDoes it use subliminal techniques beyond a person's consciousness, or exploit a known vulnerability (age, disability, specific social or economic situation) to materially distort behavior and cause h…
realtimeBiometricLawEnforcementbooleanOnly if realtimeBiometricPublic: is it used for LAW ENFORCEMENT purposes? That combination is prohibited (art. 5.1.h) and already in force.
realtimeBiometricPublicbooleanReal-time remote biometric identification in publicly accessible spaces (e.g. live face recognition)? High risk (Annex III biometrics) — prohibited only when combined with realtimeBiometricLawEnforce…
socialScoringbooleanDoes it score people's social behavior or traits causing detrimental treatment in unrelated contexts, or disproportionate to the behavior (art. 5.1.c)? Prohibited. A seller rating or fitness points a…
untargetedFaceScrapingbooleanDoes it untargetedly scrape facial images from the internet or CCTV footage to build or expand a face-recognition database (art. 5.1.e)? Prohibited. Matching a user's own consented selfie against the…
usesAIbooleanDoes the product use AI at all (LLM calls, recommendations, computer vision…)? false ⇒ minimal risk, the AI Act does not apply.

No output schema declared.

No examples provided.

check_compliance ~295

Read-only compliance readiness check. Run this after adding any SDK, analytics, payment, auth or AI integration — it detects processing activities your legal documents don't cover yet. It scans the project, detects platforms and data processing, auto-derives what it can (app name, legal entity, contact email) and reports which human facts are still missing (including target markets). Returns {platforms, detected, derived, provided, missing, ready, agentPrompt}: `ready` is true only when no human fact is missing, and `agentPrompt` is a prompt you (the dev agent) can answer from the repo, so document generation needs no forms. Never modifies files; errors if `dir` does not exist or is not a project root. Call it before make_compliant when you want to confirm facts first; re-run it with the answers as arguments until `ready` is true.

NameTypeReqDescription
appNamestringOverride the auto-derived app name.
contactEmailstringPrivacy contact email, if already known (overrides the derived one).
dirstringyesPath of the project root to analyze (absolute paths are safest).
entitystringData controller / legal entity, if already known (overrides the derived one).
marketsarrayRegions where the app has users. Without them `ready` can never be true (markets are a required human fact).

No output schema declared.

No examples provided.

check_website ~195

Free, no-signup compliance check of a DEPLOYED website by URL (the same public checker as the LexVibe /check page). Fetches the live page server-side and detects tracking/processing that actually ships to visitors — analytics, marketing pixels, payments, generative AI, email capture, third parties. Returns {url, signals: [{signal, vendors}], recommendations: [{id, title, reason}], aiAct} — which documents/banner the site needs and whether the EU AI Act applies. Read-only and rate-limited (a burst of calls returns an error asking to wait a minute). Complements scan_project (which reads the local source): use check_website after deploying, or for a site whose code you don't have.

NameTypeReqDescription
urlstringyesPublic URL (or bare domain) of the deployed site, e.g. https://myapp.com or myapp.com. Must be publicly reachable.

No output schema declared.

No examples provided.

claim_app ~513

Create a REAL LexVibe app in the user's account (replaces the YOUR_APP_ID placeholder). Returns {claimUrl, code, expiresAt}: show claimUrl to the user so they can sign in and confirm — the link expires in 30 minutes. After they confirm, call get_claim_status with `code` to retrieve the real app id and install snippet. Requires `url` or `appName` (errors otherwise). Use this whenever no real LEXVIBE_APP_ID is configured, so hosted policies, consent proof and auto-updates get linked to the user's account; creates nothing until the user confirms the link.

NameTypeReqDescription
answersobjectCompliance flags you already know (pass scan_project's suggestedAnswers): usesAnalytics, processesPayments, usesGenerativeAI, collectsEmails, sharesWithThirdParties, platformType, companyEntity, cont…
appNamestringApp / business name (required if no url is provided).
factsobjectscan_project's `facts` object as-is: { authMethods: (apple/google/email/other)[], payments: apple_iap/google_play/stripe/other/none, ai: { userFacing, serverSide, processesPersonalData, providers },…
localesarrayscan_project's `locales` — ISO 639-1 language codes the app actually supports, e.g. ['en', 'es'].
marketsarrayRegions where the app has users; each market pack cites its own frameworks: eu → GDPR/ePrivacy, uk → UK GDPR/PECR, us → CCPA/CPRA, ca → PIPEDA, latam → LGPD…; 'global' is NOT a union of the others —…
signalsarrayscan_project's `signals` — detected processing with vendor names.
urlstringPublic URL of the app: a website URL when answers.platformType includes 'web', or the App Store / Google Play listing URL when it's mobile-only (ios/android without web). LexVibe scans whichever kind…

No output schema declared.

No examples provided.

generate_policies ~456

Generate the legal documents (privacy policy, terms of service and, if applicable, an AI disclosure) localized and tailored to the target markets' frameworks (GDPR, UK GDPR, CCPA/CPRA, PIPEDA, LGPD…). Returns {documents: [{docType, locale, content, source}]} where content is Markdown and source is 'ai' or 'template' (template ⇒ not yet personalized — tell the user). Documents are returned only, never written to disk (make_compliant writes them to /legal) and nothing is persisted server-side. Run scan_project first and pass its suggestedAnswers as `answers` so the documents disclose the right processing; requires network access to the LexVibe API.

NameTypeReqDescription
answersobjectCompliance flags; pass scan_project's suggestedAnswers. Recognized keys: usesAnalytics, processesPayments, usesGenerativeAI, collectsEmails, sharesWithThirdParties, platformType.
appNamestringyesApp / business name shown in the documents, e.g. 'Acme Notes'.
contactEmailstringPrivacy contact email published in the documents. If omitted, a [to complete] placeholder is left.
entitystringData controller / legal entity (person or company legally responsible), e.g. 'Acme Labs S.L.'. If omitted, the documents keep a [to complete] placeholder.
localesarrayLanguages to generate the documents in (ISO 639-1). Defaults to the markets' main languages; anonymous calls are capped at 3 locales. Pass scan_project's `locales` to match the languages the app actu…
marketsarrayyesRegions where the app has users (at least one). Each market pack cites its own frameworks: eu → GDPR/ePrivacy, uk → UK GDPR/PECR, us → CCPA/CPRA, ca → PIPEDA, latam → LGPD…; 'global' is NOT a union o…

No output schema declared.

No examples provided.

get_claim_status ~190

Check whether the user has confirmed a claim created with claim_app. Returns {status: 'pending' | 'expired' | 'claimed', …}. While 'pending', wait a few seconds and call again (the link expires in 30 minutes; 'expired' ⇒ create a new claim). Once 'claimed' it adds the REAL appId, the install snippet, the hosted policyUrl, `published` (if false, do NOT install the snippet yet — the policy page would be a dead link until the user publishes from their dashboard) and a `pending` list of details the code can't know (e.g. the controller's legal name): replace any YOUR_APP_ID placeholder snippet with the real one and ask the user for the pending items. Errors on an unknown code.

NameTypeReqDescription
codestringyesThe claim code returned by claim_app (not the URL — the `code` field).

No output schema declared.

No examples provided.

install_snippet ~370

Insert the LexVibe cookie-banner + hosted-policies snippet into an HTML file, right before </head>. By default the banner is themed to match the app's own colors, fonts and radius (detected from its stylesheets). Idempotent: if the snippet is already in the file, nothing changes. If the file has no literal </head> (e.g. a Next.js App Router layout.tsx), it does NOT modify the file: it returns the snippet plus exact instructions for you (the dev agent) to add it as JSX — it never corrupts user files. After deploying, confirm with verify_snippet that the snippet is live.

NameTypeReqDescription
accentstringBanner accent color as a CSS hex value, e.g. #4f46e5. Defaults to the color detected from the app's own styles (see `theme`).
appIdstringLexVibe app id, e.g. from claim_app/get_claim_status (defaults to the LEXVIBE_APP_ID env var; without either, the YOUR_APP_ID placeholder is used and flagged).
filestringyesPath of the file to install into (index.html, app/layout.tsx…).
langstringForce the banner's language as an ISO 639-1 code, e.g. 'en' or 'es' (one of the 12 LexVibe locales). Defaults to the page's own language.
positionstringWhere the banner sits on screen: bottom (full-width bar), bottom-left or bottom-right (floating card in that corner). Defaults to bottom.
themestringauto (default): match the banner to this app's colors, fonts and radius. off: LexVibe default look.

No output schema declared.

No examples provided.

make_compliant ~494

One-step legal compliance: scan the project, generate privacy policy / terms / cookie & AI disclosures (written as Markdown to <dir>/legal), install the cookie-banner snippet before </head> (web only; skipped for native apps, and JSX layouts get manual instructions instead of being modified), and classify EU AI Act risk. Use this first when the user asks to make their app legally compliant, GDPR-ready, or to add a privacy policy or cookie banner; use check_compliance instead for a read-only report. Returns {done, filesWritten, documents, source, snippet, aiAct, missingFacts, agentPrompt, nextSteps} — if source is 'template' or missingFacts is non-empty, answer the agentPrompt and re-run with appName/entity/contactEmail/markets for complete documents. Aborts without writing anything if `dir` does not exist or is not a project root.

NameTypeReqDescription
accentstringBanner accent color as a CSS hex value, e.g. #4f46e5. Defaults to the LexVibe accent.
appIdstringLexVibe app id (defaults to the LEXVIBE_APP_ID env var). Without a real id the snippet uses the YOUR_APP_ID placeholder and the result tells you to call claim_app.
appNamestringApp / business name. If omitted, it's derived from the repo (package.json / LICENSE).
contactEmailstringPrivacy contact email, if already known (overrides the derived one).
dirstringyesPath of the project root to analyze (absolute paths are safest).
entitystringData controller / legal entity, if already known (overrides the derived one).
langstringForce the banner's language as an ISO 639-1 code, e.g. 'en' or 'es' (one of the 12 LexVibe locales). Defaults to the page's own language.
marketsarrayRegions where the app has users; they decide which frameworks the documents cover (eu → GDPR, uk → UK GDPR, us → CCPA/CPRA…). Defaults to ["eu"] — confirm with the user before accepting that default.
positionstringWhere the banner sits on screen: bottom (full-width bar), bottom-left or bottom-right (floating card in that corner). Defaults to bottom.

No output schema declared.

No examples provided.

scan_project ~220

Read-only scan of a local project (dependencies + source code + mobile manifests). Detects data processing relevant to legal compliance — analytics, payments, generative AI (distinguishing user-facing AI from server-side-only AI), email collection, third-party sharing — and returns {signals, suggestedAnswers, facts, locales, platforms}: per-vendor `signals`, compliance flags in `suggestedAnswers`, structured `facts` (auth methods, payments channel, AI flags, tracking/IDFA, device permissions), the `locales` the app supports and the product platforms (web / iOS / Android). Run it first: pass suggestedAnswers to generate_policies, and `facts`, `locales` and `signals` to claim_app so the generated documents are anchored in evidence. Never modifies files; errors if `dir` does not exist or is not a project root. For a deployed site whose code you don't have, use check_website instead.

NameTypeReqDescription
dirstringyesPath of the project root to analyze (absolute paths are safest).

No output schema declared.

No examples provided.

verify_snippet ~162

Verify that the LexVibe cookie-banner snippet is actually LIVE on a deployed site: fetches the public URL and looks for the widget marker in the served HTML. Run it after deploying (install_snippet edits local files — this confirms the change reached production). Only public http(s) hosts are allowed — localhost, private-network and reserved addresses are rejected. Returns {status: 'ok' | 'missing' | 'unknown'}. If 'missing', the snippet was not found: check that the deploy included the change, or re-run install_snippet and deploy again.

NameTypeReqDescription
urlstringyesPublic URL (or bare domain) of the deployed site to verify, e.g. https://myapp.com or myapp.com. Must be publicly reachable.

No output schema declared.

No examples provided.

Common questions

What is the io.github.marcosnovo/lexvibe MCP server?

io.github.marcosnovo/lexvibe is an MCP server listed in the public MCP registry as io.github.marcosnovo/lexvibe. One-step legal compliance for vibe-coded apps: privacy, terms, cookie banner and EU AI Act check. This page covers its npm package (@lexvibe/mcp).

Is the io.github.marcosnovo/lexvibe MCP server safe to use?

io.github.marcosnovo/lexvibe scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 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 io.github.marcosnovo/lexvibe MCP server expose?

io.github.marcosnovo/lexvibe exposes 10 tools: scan_project, check_compliance, generate_policies, install_snippet, check_ai_act, and 5 more. Their descriptions and schemas cost roughly 3,937 tokens of context every time the server is loaded.

Is the io.github.marcosnovo/lexvibe MCP server still maintained?

io.github.marcosnovo/lexvibe is still listed as active in the MCP registry. We last reached this channel on 21 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 io.github.marcosnovo/lexvibe MCP server under?

io.github.marcosnovo/lexvibe declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.