Establish the WebSocket connection from the charge point to the CSMS using the URL wss://{csms-host}/ocpp/{chargePointId}; negotiate the OCPP subprotocol by including 'ocpp2.0.1' in the WebSocket Sec-WebSocket-Protocol header.
Select and configure a Security Profile before first connection: Profile 1 uses HTTP Basic Auth in the WebSocket handshake (unencrypted); Profile 2 adds TLS with server-side certificate; Profile 3 uses mutual TLS with client certificate — as of December 2025 OCA updates, Security Profile 2 is mandatory for Core profile certification.
On BootNotification, the charge point sends its device model inventory; implement the GetVariables and SetVariables messages to allow the CSMS to read and write configuration variables in the component/variable hierarchy (e.g., Component: 'ChargingStation', Variable: 'AvailabilityState').
Use the DeviceModel component tree to expose and configure all charge point capabilities: each Variable has a type (actual, target, minSet, maxSet), mutability (ReadOnly, WriteOnly, ReadWrite), and optionally a list of supported values — populate this accurately during certification testing.
Implement the mandatory OCPP 2.0.1 Core feature profile actions: BootNotification, Heartbeat, StatusNotification, TransactionEvent (replacing Start/StopTransaction from 1.6), Authorize, and MeterValues; handle both request and response roles as applicable.
Submit to OCA certification testing using the OCA-approved test tool and the updated 2025 Core profile test plan; ensure all mandatory variables are implemented and respond correctly to GetVariables queries.
Known gotchas
OCPP 2.0.1 replaces StartTransaction/StopTransaction with a single TransactionEvent message type; CSMS implementations that still handle only 1.6 message types will silently drop transaction records from 2.0.1 charge points.
The device model variable tree must be fully populated and consistent; a CSMS sending SetVariables with a component/variable path that the charge point does not declare will receive a 'NotSupported' result, which is a common source of silent configuration failures.
Security profile upgrades must be performed in the correct order (1 → 2 → 3 only); attempting to downgrade a security profile or skipping a level is explicitly disallowed in the specification and will result in a connection rejection.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp