crm (britsync07-prog/crm) is an MCP server listed on the M8ven Trust Index. It scores 46 out of 100, grade D. It declares 56 tools. No publisher has claimed this listing.

D
Caution
46/100

crm

Self-hosted all-in-one CRM - LiveKit meetings, team chat, billing, MCP server for AI agents. Running in production.

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

britsync07-prog

Source: github_repo_search

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
🚨
Secret credentials may flow to a network call
5 flows detected: INTERNAL_CRON_SECRET. We can’t prove the destination matches the brand the credential belongs to.
🚨
Known vulnerabilities in dependencies: 2 critical, 24 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
🔐
You'll be asked for 10 credentials: ADMIN_PASSWORD, GLOBAL_API_KEY, INTERNAL_CRON_SECRET, JWT_SECRET, LIVEKIT_API_KEY, LIVEKIT_API_SECRET, STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, SYSTEM_SMTP_PASSWORD, UNSUBSCRIBE_SECRET
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes56 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

admin.pricing.list_plans

Admin-only view of all pricing plans, discount events, and public pricing preview used by the frontend pricing page.

admin.pricing.upsert_plan

Admin-only pricing plan create/update. Use confirm=false first to preview public pricing impact; confirm=true applies the change.

admin.pricing.upsert_discount_event

Admin-only frontend-visible pricing offer/event create/update. Use confirm=false first to preview the event; confirm=true applies it.

admin.users.search

Admin-only user search with role, status, and organization plan filters. Returns user and organization summary without secrets.

admin.users.update

Admin-only user role/status/subscription update. Requires confirm=true and blocks self-demotion or self-suspension.

admin.system_email.update_profile

Admin-only SMTP profile update for transactional or newsletter email. Password is write-only and never returned.

admin.operations.snapshot

Admin-only operational snapshot with counts, config readiness, and recent activity logs for CRM health checks.

billing.list_clients

List BritLedger billing clients for the MCP user, optionally including balance summaries.

billing.create_client

Create a BritLedger billing client for invoices and quotations.

billing.list_invoices

List BritLedger invoices and computed balance due values.

billing.create_invoice

Create a BritLedger invoice with server-side subtotal, VAT, discount, advance paid, and balance due calculation.

billing.update_invoice

Update invoice fields and recalculate totals when line items or payment inputs are supplied.

billing.record_payment

Record invoice payment by increasing advance paid and updating status/balance due.

billing.create_quotation

Create a BritLedger quotation with server-side line amount, VAT, discount, and total calculation.

billing.list_quotations

List BritLedger quotations for the MCP user.

billing.convert_quote_to_invoice

Convert a BritLedger quotation to an invoice after explicit confirmation.

billing.send_invoice

Send an existing BritLedger invoice to a client by email.

calendar.get_settings

Get availability settings for the MCP user.

calendar.update_settings

Update availability settings and reminder sender account for the MCP user.

calendar.list_events

List events for the MCP user in an optional date range.

calendar.check_availability

Compute free slots from calendar settings and existing events.

calendar.create_event

Create a manual calendar event after conflict checking.

calendar.book_client_meeting

Book a client meeting with conflict checks, LiveKit room, calendar event, and optional confirmation email.

calendar.cancel_event

Cancel/delete a calendar event and linked meeting resources after confirmation.

forms.list

List forms owned by the MCP user.

forms.create

Create a form with ordered fields for the MCP user.

forms.delete

Delete a user-owned form and its submissions after confirmation.

forms.get_submissions

Read parsed submissions for a user-owned form with CRM links.

forms.submit_public

Submit a user-owned public form as an MCP-driven intake action.

forms.generate_share_message

Generate a concise message containing the public form link.

leads.list

List CRM leads owned by the MCP user with filters. categoryId can be a category ID or category name (e.g. 'Talent', 'SentraVault').

leads.get

Get one lead with interactions, tasks, deals, and campaign history.

leads.deduplicate

Perform CRM-safe deduplication for a list of researched prospects or emails against existing CRM leads and customers.

leads.batch_create

Batch create researched prospects with built-in deduplication. Automatically avoids duplicates.

leads.create

Create one user-owned CRM lead. To assign a category (e.g. 'Talent'), provide categoryId as either the category ID or category name. Use leads.list_categories to discover available categories and IDs.

leads.update

Update one user-owned CRM lead. To assign or change category (e.g. 'Talent'), provide categoryId as either the category ID or category name. Use leads.list_categories to discover available categories and IDs.

leads.upload_csv

Import leads from CSV text into the current user's CRM leads.

leads.score

Run AI scoring for one user-owned lead.

leads.log_interaction

Log an interaction against a user-owned lead and optionally move it to Contacted.

leads.convert_to_customer

Convert a user-owned lead into a customer.

leads.list_categories

List lead categories owned by the MCP user, exposing category IDs (e.g. Talent category ID), names, and lead counts. Use this to discover category IDs before creating or updating leads.

categories.list

List lead categories owned by the MCP user, exposing category IDs, names, and lead counts (alias for leads.list_categories).

leads.create_category

Create a new lead category for the MCP user, or return the existing one if it already exists with the same name.

categories.create

Create a new category for the MCP user (alias for leads.create_category).

mail.list_accounts

List active CRM email accounts available to the MCP user without exposing secrets.

mail.search_messages

Fetch recent mailbox messages and optionally filter them by text.

mail.read_message

Read one message body from a user-owned mailbox.

mail.draft_reply

Create a reply draft for an inbox message. This tool does not send.

mail.send_email

Send or queue an email from a user-owned connected mailbox. Supports accountId, from, or senderEmail.

mail.batch_action

Archive, trash, spam, read, unread, star, or unstar multiple mailbox messages.

outreach.preview_campaign

Preview recipients, sender accounts, duplicates, and invalid emails before launching.

outreach.launch_campaign

Launch an email outreach campaign after explicit confirmation.

outreach.list_campaigns

List campaign history and metrics for the MCP user.

outreach.get_campaign

Get one campaign with lead-level delivery status and metrics.

outreach.send_follow_up

Create and launch a follow-up campaign for eligible recipients from an existing campaign.

outreach.process_replies

Scan this MCP user's connected inboxes for outreach replies and update campaign lead reply status.

// known CVEs in dependencies2 critical24 high16 medium30 low

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

criticalnext@16.1.6GHSA-2xp9-vwfh-vxw4

Next.js: Unauthenticated Remote Code Execution in Image Optimization API when AVIF files are used

criticalnext@16.1.6GHSA-p293-qw3h-jr36

Next.js: Unauthenticated Remote Code Execution on windows-hosted servers

highaxios@1.13.6GHSA-35jp-ww65-95wh

axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `config.proxy`

highaxios@1.13.6GHSA-3g43-6gmg-66jw

axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollution Gadget in Config Merge

highaxios@1.13.6GHSA-6chq-wfr3-2hj9

Axios: Header Injection via Prototype Pollution

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configADMIN_EMAIL
🔐 secretADMIN_PASSWORD
configAPP_URLhttps://example.com
configAUTO_EMAIL_DAILY_RESET
configAUTO_OUTREACH_REPLY_WORKERtrue, 180
configAUTO_REMINDER_WORKERtrue, 60
configBRITCRM_MCP_USER_EMAILlocal-dev-user
configBRITCRM_MCP_USER_IDlocal-dev-user
configEMAIL_DAILY_RESET_SECONDS
🔐 secretGLOBAL_API_KEYchange-me-random
🔐 secretINTERNAL_CRON_SECRETchange-me-random
configINTERNAL_TEST_USER_ID
🔐 secretJWT_SECRETchange-me-long-random
🔐 secretLIVEKIT_API_KEYchange-me
🔐 secretLIVEKIT_API_SECRETchange-me
configLIVEKIT_HOSThttps://meet.example.com, wss://meet.example.com
configNEXTAUTH_URLhttps://example.com
configOUTREACH_REPLY_WORKER_SECONDStrue, 180
configREMINDER_WORKER_SECONDStrue, 60
configSOCKET_ALLOWED_ORIGINShttps://example.com
🔐 secretSTRIPE_SECRET_KEYsk_test_..., whsec_...
🔐 secretSTRIPE_WEBHOOK_SECRETsk_test_..., whsec_...
configSYSTEM_SMTP_FROM_NEWSLETTER
configSYSTEM_SMTP_FROM_TRANSACTIONAL
configSYSTEM_SMTP_HOSTchange-me
🔐 secretSYSTEM_SMTP_PASSWORDchange-me
configSYSTEM_SMTP_PORT_NEWSLETTER
configSYSTEM_SMTP_PORT_TRANSACTIONAL
configSYSTEM_SMTP_USER_NEWSLETTER
configSYSTEM_SMTP_USER_TRANSACTIONAL
🔐 secretUNSUBSCRIBE_SECRETchange-me-random
Deployment configuration, supplied by whoever hosts the server. Users are not asked for these.
deployDATABASE_URL
deployNEXT_PUBLIC_API_URL
deployNEXT_PUBLIC_APP_URL
deployNEXT_PUBLIC_SITE_URL
deployPORT
// quality suggestions

Dependencies

31 runtime dependencies (14 dev), 1 flagged: puppeteer

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

56/56 tools missing one or more hints — admin.pricing.list_plans (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); admin.pricing.upsert_plan (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); admin.pricing.upsert_discount_event (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +53 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Tool test coverage

Only 0/56 tools referenced in tests (0%)

Write tests that reference each tool by name so every tool has at least one test.

Secrets stay with their owner

5 secrets sent to a request target we could not resolve (INTERNAL_CRON_SECRET → dynamic, INTERNAL_CRON_SECRET → dynamic) — often a configured endpoint, not necessarily third-party

Audit where credentials are sent. A NOTION_TOKEN should only reach api.notion.com — never a third-party host.

Secrets not logged

1 secret value sent to log

Redact or omit secret values from log output.

No arbitrary install scripts

Has postinstall/preinstall script — runs arbitrary code on npm install

Remove postinstall/preinstall hooks unless they’re essential.

Production dependencies are patched

2 critical, 24 high severity in production deps — next@16.1.6 (critical), next@16.1.6 (critical)

Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 7 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/britsync07-prog/crm?variant=verified)](https://m8ven.ai/mcp/britsync07-prog/crm)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 19165163814094eec1a8923be545d91653fdd29c
code hash: 8204fb3ad37ce7f95720a7a10df6d1e94e4be987ebe4aff04c81b908fbc661ea
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client