Back to overview
Setup guide

Connect NuraVolt to Claude, ChatGPT, or Cursor.

Three real steps. If everything is in place, ten minutes end-to-end. This page is also the technical reference — scopes, rate limits, idempotency, troubleshooting.


Before you start

Prerequisites

  • A NuraVolt organisation. If you haven't signed up yet, book a demo — we onboard your plants first.
  • Admin role in the org. Only admins can mint MCP API keys. Contact your NuraVolt admin if you don't have this.
  • An MCP-aware client. Claude Desktop (Nov 2025 or later), ChatGPT Business / Enterprise, Cursor, or Continue.dev. Anything speaking the current MCP HTTP-streaming spec works.

Step 1

Generate a scoped key

  1. 1.Open Settings › MCP API keys in the dashboard.
  2. 2.Click Generate key.
  3. 3.Give the key a name that identifies the human or app using it (e.g. Claude Desktop — Anna). This name only shows in your dashboard.
  4. 4.Pick scopes. Start with Read-only preset for a first connection, upgrade to Full agent preset when you're ready to let the AI create tickets and cleaning schedules.
  5. 5.Copy the raw token — nv_live_… — the reveal dialog shows once and never again.
Keep it safe. We store only the SHA-256 hash. If you lose the token, revoke the key and generate a new one — we can't recover it for you.
On Enterprise? Skip the key entirely. Add NuraVolt as a connector by URL and your client walks each user through OAuth sign-in with their own NuraVolt account. Access follows per-user plant permissions and every tool call is attributed to the person who authorized it.

Step 2

Install the connector

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "nuravolt": {
      "url": "https://nuravolt.com/api/mcp/mcp",
      "headers": {
        "Authorization": "Bearer nv_live_YOUR_KEY_HERE"
      }
    }
  }
}

Restart Claude Desktop after editing. NuraVolt tools appear in the tool tray at the bottom of the composer.

Replace nv_live_YOUR_KEY_HERE with a real key from Settings › MCP API keys.


Step 3

Verify it works

Restart your client. In a new conversation, ask it:

“Using the NuraVolt connector, list my plants.”

The assistant should call nuravolt_list_plants and return your real plants. If it does, connectivity + auth + scopes are all good.

You can also confirm in the dashboard — the call should show up in the Recent tool calls audit panel within seconds.


Reference

Scopes

Ten fine-grained scopes. Every tool declares exactly which scope it needs; a key without that scope gets a forbidden error with the specific missing scope named.

ScopeWhat it grants
plants:readList and view plant metadata.
inverters:readList and view inverters at a plant.
soiling:readQuery soiling forecasts and recovery windows.
bess:readQuery BESS revenue and ancillary services data.
faults:readDeterministic rule-based fault classifier.
tickets:readList and view maintenance tickets.
kb:readSemantic search over uploaded knowledge base.
diagnosis:runRun AI diagnosis on an inverter (paid inference).
tickets:writeCreate tickets, transition status, add comments.
cleaning:writePersist a cleaning schedule with ROI economics.

Reference

Tools

Every tool the MCP server exposes. All schemas are Zod-validated on the server — malformed args get rejected with a structured error.

ToolPurposeScope
nuravolt_list_plantsList every plant this key can see, with asset type, capacity, and location.plants:read
nuravolt_list_invertersList inverters at a plant, with model and rated capacity.inverters:read
nuravolt_get_soiling_forecast365-day soiling ratio forecast, confidence bounds, cleaning recommendations.soiling:read
nuravolt_get_inverter_classificationRule-based diagnosis for one inverter — cause, confidence, ETA, recommended action.faults:read
nuravolt_diagnose_inverterBedrock-backed 30-day digital-twin analysis. Severity, fault hypothesis, actions.diagnosis:run
nuravolt_get_bess_revenueAncillary services + wholesale revenue breakdown for a BESS plant.bess:read
nuravolt_list_ticketsMaintenance tickets with filters — plant, status, priority, limit.tickets:read
nuravolt_search_knowledge_baseSemantic search over uploaded manuals, datasheets, runbooks, incident reports.kb:read
nuravolt_create_ticketwriteCreate a maintenance ticket (status NEW). Idempotency key required.tickets:write
nuravolt_update_ticket_statuswriteMove a ticket forward: NEW → VALIDATED → ASSIGNED → IN_PROGRESS → DONE.tickets:write
nuravolt_comment_on_ticketwriteAdd a comment. Attributed to the API key so the timeline shows the AI source.tickets:write
nuravolt_approve_cleaning_schedulewritePersist a cleaning schedule with dates + economics. Auto-computes ROI + payback.cleaning:write

Operations

Rate limits, idempotency, audit

Rate limits

60 requests per minute and 5,000 per day per key, per plan tier. Bursts over the limit return a structured rate_limited error with retry_after_sec. Well-behaved clients back off automatically.

Idempotency

Every write tool takes an idempotency_key. Retries with the same key + tool return the original result, no duplicate row. Use a stable key per logical action (e.g. a UUID your agent generates once per user intent).

Audit

Every call — read, write, forbidden, rate-limited — writes an audit row with duration, args, status, and (for writes) the row it created. Visible in the dashboard's Recent tool calls panel and queryable via the admin API.


If something breaks

Troubleshooting

HTTP 401 on every call

Bearer token is missing, malformed, or the key has been revoked. Copy the token again from the reveal dialog if you still have it; otherwise revoke and regenerate.

forbidden: Missing required scope: <scope>

The key doesn't grant that scope. In Settings → MCP API keys, revoke the current key and generate a new one with the required scope ticked.

rate_limited: minute_limit

Your client is bursting. Wait retry_after_sec seconds, then retry. If you need higher throughput sustainably, talk to us about plan tiers.

invalid_transition: NEW → DONE

Tickets must move through the workflow — you can only jump from NEW to VALIDATED or WONT_FIX. Read the allowed-transitions map in the tool schema.

Tool doesn't appear in the assistant

Restart the client fully. In Claude Desktop, use ⌘Q to quit, not just close the window. In Cursor, toggle NuraVolt off and on in Settings → MCP.


Ready when you are.

MCP endpoint: https://nuravolt.com/api/mcp/mcp