nuravolt (jeffreymokumtech/nuravolt) is an MCP server listed on the M8ven Trust Index. It scores 36 out of 100, grade F. It declares 17 tools. No publisher has claimed this listing.

F
Warning
36/100

nuravolt

Energy intelligence platform for solar, wind and battery storage: per-inverter soiling forecasts, fault detection and RUL, BESS warranty and revenue ledger, digital twins, an operations agent with an MCP server, Iceberg/DuckDB/dbt lakehouse. Next.js + Python.

Warning. Serious findings were identified. Review the full report before connecting. 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

jeffreymokumtech

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
10 flows detected: INTERNAL_API_SECRET, HUBSPOT_API_KEY. We can’t prove the destination matches the brand the credential belongs to.
🚨
Known vulnerabilities in dependencies: 4 critical, 31 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
🔐
You'll be asked for 8 credentials: BETTER_AUTH_SECRET, DEMO_PASSWORD, INTERNAL_API_SECRET, STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, EARTHDATA_PASSWORD, EARTHDATA_TOKEN, AWS_SECRET_ACCESS_KEY
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes17 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.

nuravolt_list_plants

List the solar PV / BESS / Wind / Hybrid plants this API key has access to. Call this first to discover plant ids before any plant-scoped tool. Returns id, slug, name, asset_type, status, capacity, location.

nuravolt_list_inverters

List the inverters at a plant with their model and rated capacity. ALWAYS call this before nuravolt_diagnose_inverter or nuravolt_get_inverter_classification to obtain a real inverter id — never invent ids.

nuravolt_get_soiling_forecast

Get the 365-day soiling forecast for a PV plant. Returns daily predicted soiling ratio (SR), confidence bounds, and cleaning recommendations. Optionally includes rain-driven recovery events.

nuravolt_get_inverter_classification

Deterministic rule-based maintenance classification for one inverter. Returns likely cause (SOILING/SHADING/THERMAL/STRING_DEGRADATION/BYPASS_DIODE/INVERTER_DERATE/NORMAL), confidence, ETA, and recommended action. Fast and free — call before nuravolt_diagnose_inverter to get a grounded baseline.

nuravolt_diagnose_inverter

Run AI diagnosis (Bedrock-backed) for a specific inverter using 30 days of digital-twin metrics. Returns severity, fault hypothesis, and recommended actions. PRECONDITION: call nuravolt_list_inverters first to obtain a real inverter id.

nuravolt_get_chart

Fetch a daily timeseries for a plant (or one inverter) over a range preset. Twin metrics (power_ac, temperature, voltage_dc, current_dc) return predicted vs actual; measured metrics (energy_daily, irradiance_poa/ghi, soiling_ratio, temp_ambient/module, power_dc) return daily telemetry. Returns summa

nuravolt_get_irradiance_quality

Assess the quality of a plant's on-site irradiance measurement by comparing the on-site sensor track against the Open-Meteo reference model. Returns correlation, bias, RMSE, a monthly trend, and quality alerts (calibration drift, systematic deviation). If the result says no_data the plant has no on-

nuravolt_get_bess_revenue

Return ancillary-services and wholesale revenue for a BESS plant over the last N days. Breakdown covers Dynamic Containment, Dynamic Moderation, Dynamic Regulation, Balancing Mechanism, Capacity Market, and wholesale arbitrage.

nuravolt_get_warranty_position

Get the BESS warranty guardian position for a battery plant: health score, state of health against the contractual capacity floor, cycle budget consumption, projected floor crossing, open violations, and the latest capacity test. Backed by the weekly audit dossier. Returns no_warranty_dossier when t

nuravolt_get_optimizer_audit

Get the dispatch strategy benchmark for a battery plant: capture ratio against a perfect foresight optimum on the same day ahead prices, revenue gap, and annualized gap. Always keep the perfect foresight framing from the returned note. Returns no_optimizer_audit when the audit job has not covered th

nuravolt_list_tickets

List maintenance tickets with optional plant/status/priority filters. Status values: NEW, VALIDATED, ASSIGNED, IN_PROGRESS, DONE, WONT_FIX. Priority values: CRITICAL, HIGH, MEDIUM, LOW.

nuravolt_search_knowledge_base

Search the organization's uploaded knowledge base (manuals, datasheets, runbooks, prior incident reports) for passages relevant to the query. Returns ranked excerpts with document title and chunk index for citation. Use BEFORE answering questions that depend on equipment specs, fault codes, or OEM p

nuravolt_create_ticket

Create a maintenance/inspection ticket (status=NEW). PERSISTS to the database — the customer's ticketing queue will pick it up immediately. Provide an idempotency_key (any string) to make retries safe: replays return the original ticket id without creating a duplicate.

nuravolt_update_ticket_status

Move a ticket forward in the workflow. Allowed transitions: NEW → VALIDATED|WONT_FIX, VALIDATED → ASSIGNED|IN_PROGRESS|WONT_FIX, ASSIGNED → IN_PROGRESS|WONT_FIX, IN_PROGRESS → DONE|WONT_FIX. Writes a TicketHistory row. Provide idempotency_key to make retries safe.

nuravolt_comment_on_ticket

Add a comment to an existing ticket. The comment is attributed to the API key (mcp_key_<id>) so it's clear in the timeline that it came from an external AI assistant. Provide idempotency_key to make retries safe.

nuravolt_schedule_report

Create a recurring email report schedule (creates a ScheduledReport row). PERSISTS immediately. Reports send as portfolio PDFs at 07:00 UTC on the scheduled day; a plantId narrows the report to that plant. Provide idempotency_key to make retries safe.

nuravolt_approve_cleaning_schedule

Persist a cleaning schedule for a PV plant (creates a CleaningSchedule row). Use this AFTER analysing soiling forecast and economics. Provide ALL three economics: estimatedEnergyRecoveredMwh, estimatedRevenueRecoveredEur, estimatedCleaningCostEur (positive). The server computes net_benefit, ROI, pay

// known CVEs in dependencies4 critical31 high14 medium22 low

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

criticaljspdf@3.0.1GHSA-f8cm-6447-x5h2

jsPDF has Local File Inclusion/Path Traversal vulnerability

criticaljspdf@3.0.1GHSA-wfv2-pwc8-crg5

jsPDF has HTML Injection in New Window paths

criticalnext@14.2.35GHSA-2xp9-vwfh-vxw4

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

criticalnext@14.2.35GHSA-p293-qw3h-jr36

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

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

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

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.
configAGENT_KEY_ENV_FILE
🔐 secretBETTER_AUTH_SECRETSession signing (openssl rand -base64 32)
configDEMO_EMAIL
🔐 secretDEMO_PASSWORD
configHOSTNAME
🔐 secretINTERNAL_API_SECRET
🔐 secretSTRIPE_SECRET_KEYSelf-service billing (the demo org has enterprise entitlements without it)
🔐 secretSTRIPE_WEBHOOK_SECRET
configREQUESTS_CA_BUNDLE
configSSL_CERT_FILE
configEARTHDATA_USERNAME
🔐 secretEARTHDATA_PASSWORD
🔐 secretEARTHDATA_TOKEN
configLAKE_BUCKETThe S3 lakehouse; LAKE_ENV=dev uses a local folder
configAWS_REGION
configAWS_ACCESS_KEY_IDBedrock: Shams chat, briefings, alert narration, knowledge base embeddings
🔐 secretAWS_SECRET_ACCESS_KEYBedrock: Shams chat, briefings, alert narration, knowledge base embeddings
configSTRINGS_PER_MPPT
configNURAVOLT_AI_CLASSIFY_ENABLED
configNURAVOLT_AI_DEMO_MODE
Deployment configuration, supplied by whoever hosts the server. Users are not asked for these.
deployNEXT_PUBLIC_APP_URL
deployNEXT_PUBLIC_ENABLE_LEMLIST_TRACKER
deployNEXT_PUBLIC_POSTHOG_KEY
deployPORT
// quality suggestions

Dependencies

94 runtime dependencies (26 dev), 1 flagged: puppeteer-core

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

17/17 tools missing one or more hints — nuravolt_list_plants (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); nuravolt_list_inverters (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); nuravolt_get_soiling_forecast (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +14 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 inputs are validated

16/17 tool handlers declare input schemas (94%)

Declare an inputSchema with zod/joi/yup on every tool definition.

License file

No license file

Add a LICENSE file (MIT, Apache-2.0, etc.).

Tool test coverage

Only 2/17 tools referenced in tests (12%)

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

Secrets stay with their owner

9 secrets sent to a request target we could not resolve (INTERNAL_API_SECRET → dynamic, INTERNAL_API_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.

Production dependencies are patched

4 critical, 29 high severity in production deps — jspdf@3.0.1 (critical), jspdf@3.0.1 (critical)

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

Dev dependencies

2 critical/high in dev-only deps (does not ship to users)

Upgrade dev dependencies when convenient.

Dependency freshness

5/94 production deps abandoned (no release in 2+ years): wpapi@2022-06-29 (4.2y), parquetjs@2022-09-23 (4y), prop-types@2023-08-24 (3.1y)

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 9 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/jeffreymokumtech/nuravolt?variant=verified)](https://m8ven.ai/mcp/jeffreymokumtech/nuravolt)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: dced4d9972118a7597d11af8d707c2e20f1bb83f
code hash: 34e6e8e13a413b043bb46b319d0434d727b5e22b20a1646028523487a8abd033
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