Skip to main content
Sustainista
Model Context Protocol

The battery passport, operated through an AI assistant

Your data sits in SAP, WeClapp, a spreadsheet or a datasheet, never in the shape the EU regulation asks for. That gap is where an AI assistant works: it maps your columns onto the Annex XIII fields, converts units, and puts every value in front of our engine for checking. We operate this for you, or you wire it up yourself.

What this looks like in practice

Which mandatory fields is our home-storage model still missing before publication?
The passport stands at 41 of 95 mandatory fields (category industrial). 54 are open. The biggest blocks:
Use phase (BMS/telematics): 21 fields · test bench: 7 · dismantling: 7 · waste texts: 7 · CO₂: 5
Shall I turn that into a follow-up list per responsibility?

Real response structure from the engine: pass_status tool, sample passport of 27 Aug 2026

How it works

Two routes, one engine: we do the passport work, or you connect your own assistant.

1

Name the source, don’t rebuild it

SAP export, WeClapp, Excel, CSV, PDF datasheet: you deliver what you already have. No target format, no preliminary project, no access to your ERP.

2

The assistant maps it

Your columns are mapped onto catalogue fields, units converted, gaps named. The mapping is remembered: the second delivery of the same kind is a keystroke.

3

Check, confirm, release

Every machine-read value is labelled as such and put in front of a person. Only then can the passport be published, and you sign the release.

The tools

Every tool calls the engine’s public HTTP API. There is no second path around validation and tenant isolation.

Tools of the DPP MCP server with scope and purpose
ToolRequiresWhat it does
katalog_lesenpublicRead the Annex XIII catalogue: every field with its obligation flag per category (lv, industrial, ev)
feld_infopublicLook up a single catalogue field: legal basis, data type, unit, plausibility bounds
zuordnung_speichernpublicRemember the column mapping per customer and source system, so the second delivery of the same kind is a keystroke
gs1_link_pruefenpublicTake a GS1 Digital Link apart and check it against the resolver
links_lesenpublicRead a passport’s use-phase links (SoH, telematics, certificates)
pass_listedpp:ingest or dpp:publishWork queue: every passport of a customer with progress, open mandatory fields and blocking reason
pass_statusdpp:ingest or dpp:publishPassport status: completeness, missing mandatory fields, publishability, blocking reason
pass_anlegendpp:ingestOpen a passport draft, with economic operator and battery category
werte_schreibendpp:ingestWrite harmonised values flat, always as a dry run first, which changes nothing
werte_bestaetigendpp:ingestRecord the review: a person checked this value against its source. Or retract a wrong one
lieferung_validierendpp:ingestDry-run a delivery: same rules, nothing is written
lieferung_einreichendpp:ingestSubmit a delivery for real: logged, values keep their provenance label
link_hinzufuegendpp:writeAttach an external reference to a passport (e.g. a BMS data source)

In addition, readable resources (the catalogue per category, your tenant permissions) and two guided workflows: preparing customer data into a canonical delivery, and following up open mandatory fields per responsibility.

Security and limits

The AI gets tools, not privileges, and cannot claim a check it did not make.

One front door

The MCP server calls the public HTTP API only. No database access, no second validation logic. Checks, publication gate and tenant isolation stay in one place.

Two gates, two questions

Completeness (are all mandatory fields for the category filled) and provenance (did anyone look) are checked separately. A passport can be complete and still not publishable, as long as a single machine-read value remains unconfirmed.

AI values cannot disguise themselves

Every value a model reads from your documents carries the status “AI-extracted”. No caller can set the status “verified”. It arises only when a person checks the value against its source and confirms it by name.

Publishing stays human

A publish tool does not exist. Release is the economic operator’s declaration of conformity: a signature, not a machine call.

The key decides visibility

Which tools an assistant even sees is decided by the API key. A read-only key never learns that write tools exist. Write calls are logged.

Configuration

One entry, done. The key comes from the environment, never into the config file.

{
  "mcpServers": {
    "dpp": {
      "command": "npx",
      "args": ["tsx", "packages/mcp/src/index.ts"],
      "env": { "DPP_API_URL": "https://elektro-beta.vercel.app" }
    }
  }
}

Without a key the server starts in public mode: catalogue and GS1 checks work; passport and delivery tools appear once a key is present.

Become a pilot customer

We set up your tenant, harmonise your first delivery together with you, and accompany the route to a publication-ready passport, from export to QR code.

Get in touch
AI integration for the battery passport (MCP): Claude wired to the passport engine | Sustainista