Complete the OCPI credentials handshake: both parties exchange their versions endpoint URL; each calls the other's /ocpi/versions endpoint, selects a mutual version (2.2), then calls /ocpi/2.2/credentials with a POST containing their own credentials object to register
After handshake, retrieve the other party's module endpoints from their /ocpi/2.2/ details response; locate the locations, tariffs, sessions, and cdrs module URLs
To share your location data, implement a GET handler on your Locations module endpoint and respond with a paginated list of Location objects containing EVSE and connector details; use the X-Limit and X-Total-Count headers for pagination
To pull another party's locations, send GET requests to their Locations endpoint using the Link header for pagination; store the data locally for display or routing
For tariff exchange, push Tariff objects via PUT to the other party's Tariffs endpoint (if push model) or expose your own Tariffs endpoint for them to pull; tariff IDs must be unique per CPO
Known gotchas
OCPI uses a push-and-pull hybrid model per module; confirm with your counterparty which modules use push (sender initiates updates) vs. pull (receiver polls) to avoid missing updates or sending unsolicited data
The Authorization token in OCPI is per-party and directional — the token you send to party A is different from the token A sends to you; storing or confusing these tokens breaks the handshake
Date-time fields in OCPI must be in UTC ISO 8601 format with a Z suffix; timezone-aware strings with offsets are not always accepted by strict implementations and cause validation failures
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