Charging stations
Get detailed private information about a charge station, scoped to the caller. Returns account, billing plan, location including who is reimbursed for sessions and who is invoiced for the subscription, whether it is published publicly, the installer or maintenance account, connector specifications, active issues, and the per-connector OCPI tariff as pushed to roaming partners. Requires a verified user attached to the current session; if the session has no verified user yet, ask for their email and use the customer-request-verification and customer-verify flow. Scoped to the caller: a station at a location linked to them, or any station on the account for a caller with account-level charge-point read access, except a colleague's employee-reimburse (home) charge point, which is never shown. Anything out of scope is reported as not found, the same as a station that does not exist. The `identifier` must be precise (typically the `normalizedEvseId` returned by charge-points-find). If the user gave a description, partial id, or noisy voice input, call charge-points-find first to resolve it.
Verified customerRequiredInput1
Canonical station identifier, typically the identifier field returned by charge-points-find (round-trip it unchanged). Also accepts evseId, connector evseId, serialNumber, or OCPP identity for human-supplied input. Must be precise; this tool does not fuzzy-match. Use charge-points-find first if the user gave a description or partial id.
Output25
Canonical station identifier; round-trip unchanged to other charge-points-* tools.
Normalized EVSE id when assigned; null during setup.
Stored EVSE id as shown to humans; may contain separators.
Charge point manufacturer
Charge point model
Whether charge cards from outside this platform are accepted here, i.e. whether roaming is on, so a visiting driver can charge. Mechanically it is the fallback that authorises a token belonging to no access group. Despite the name this is not a statement about the location being publicly listed or findable on a map, which is a separate location setting. It cannot be enabled on a location where nobody is reimbursed. Stored per charge point but edited at location level and propagated down, so charge points on one location can in principle disagree.
activeIssuesobject[]REQUIRED
Issue type identifier
low: informational. medium: may need attention. high: likely impacting operation. critical: station unable to function.
connectorsobject[]REQUIRED
Maximum power in kW
available: ready for a new session. preparing: vehicle plugged in, not yet charging. ev-connected: vehicle connected but charging not started. charging: actively delivering energy. occupied: connector in use but not charging. suspended-evse: charging paused by the station. suspended-ev: charging paused by the vehicle. idle: connected but no energy flow. finishing: session ending, wrapping up. unavailable: connector not available for use (e.g. maintenance). faulted: error state, may need physical intervention. reserved: reserved for a specific user. unknown: status could not be determined.
tariffobject | nullREQUIREDThe OCPI tariff applicable to this connector — the same tariff the platform pushes to roaming partners, whichever internal source it comes from. Null when no roamed tariff exists for the connector (e.g. setup incomplete.
The OCPI tariff applicable to this connector — the same tariff the platform pushes to roaming partners, whichever internal source it comes from. Null when no roamed tariff exists for the connector (e.g. setup incomplete.
ISO 4217 currency code, e.g. EUR.
tariff_alt_textobject[] | nullREQUIREDHuman-readable tariff descriptions, one entry per language.
Human-readable tariff descriptions, one entry per language.
elementsobject[]REQUIREDOCPI tariff elements. Each element carries price components and optional restrictions; an element applies only when its restrictions are met. Idle fees appear as PARKING_TIME components, with the grace period expressed as duration-restricted elements (the fee only applies beyond min_duration). Dynamic energy-market prices appear as time-restricted ENERGY elements covering the hours for which prices are known, which can vary.
OCPI tariff elements. Each element carries price components and optional restrictions; an element applies only when its restrictions are met. Idle fees appear as PARKING_TIME components, with the grace period expressed as duration-restricted elements (the fee only applies beyond min_duration). Dynamic energy-market prices appear as time-restricted ENERGY elements covering the hours for which prices are known, which can vary.
price_componentsobject[]REQUIRED
ENERGY: price per kWh delivered. FLAT: fixed price per charging session. TIME: price per hour of active charging. PARKING_TIME: price per hour connected but not charging (idle).
Price for this dimension, excluding VAT, in the tariff currency.
Billing increment (OCPI step_size): the dimension is billed in whole multiples of this step. Null when not specified.
restrictionsobject | nullREQUIREDConditions under which this element applies. Null when the element is unconditional.
Conditions under which this element applies. Null when the element is unconditional.
Time of day (HH:mm) from which this element applies.
Time of day (HH:mm) until which this element applies.
Date (YYYY-MM-DD) from which this element applies.
Date (YYYY-MM-DD) until which this element applies.
Days of the week this element applies to.
Minimum session duration in seconds before this element applies.
Maximum session duration in seconds for which this element applies.
Minimum delivered energy (kWh) before this element applies.
Maximum delivered energy (kWh) for which this element applies.
Minimum charging power (kW) for this element to apply.
Maximum charging power (kW) for this element to apply.
ISO timestamp of when this tariff was last updated.
accountobject | nullREQUIREDAccount that owns this charge station
Account that owns this charge station
maintenanceAccountobject | nullREQUIREDAccount of the installer or maintenance party linked to this charge station. Null means none is registered in the platform, in which case the customer should contact their own installer.
Account of the installer or maintenance party linked to this charge station. Null means none is registered in the platform, in which case the customer should contact their own installer.
billingPlanobject | nullREQUIREDBilling plan assigned to this charge station
Billing plan assigned to this charge station
locationobject | nullREQUIRED
public or private. Private locations are not pushed to roaming and do not appear on any charge station map, so this is whether the location is listed rather than who is allowed to charge at it.
billingPolicyobject | nullREQUIREDThe reimbursement and subscription arrangement for this location, and the answer to who gets paid for sessions here. usageReimbursement lists who receives the session money and in what share; subscriptionBilling lists who is invoiced for the location fees, and those entries always total 100 per cent. The two are frequently different parties, which is a normal arrangement and not a misconfiguration: a residential community where the association collects the session money while a resident pays the subscription looks exactly like this. An account recipient is a business, so its reimbursement can be settled inclusive of VAT. A user recipient is a private individual and cannot be, which is what to check when a customer expects VAT on their reimbursement and is not getting it. An empty usageReimbursement means nobody is reimbursed at all, and no new price can be set on the charge point while the location is arranged that way. It does not mean sessions are free or uninvoiced: a price set beforehand may still stand and sessions may still be priced, so do not tell a customer charging here costs nothing. What does not happen is any of it being paid back to the party that owns the location. More than one usageReimbursement entry is a split.
The reimbursement and subscription arrangement for this location, and the answer to who gets paid for sessions here. usageReimbursement lists who receives the session money and in what share; subscriptionBilling lists who is invoiced for the location fees, and those entries always total 100 per cent. The two are frequently different parties, which is a normal arrangement and not a misconfiguration: a residential community where the association collects the session money while a resident pays the subscription looks exactly like this. An account recipient is a business, so its reimbursement can be settled inclusive of VAT. A user recipient is a private individual and cannot be, which is what to check when a customer expects VAT on their reimbursement and is not getting it. An empty usageReimbursement means nobody is reimbursed at all, and no new price can be set on the charge point while the location is arranged that way. It does not mean sessions are free or uninvoiced: a price set beforehand may still stand and sessions may still be priced, so do not tell a customer charging here costs nothing. What does not happen is any of it being paid back to the party that owns the location. More than one usageReimbursement entry is a split.
One-line plain statement of the arrangement, derived from the entries below. Safe to rely on and to paraphrase to a customer: it already applies the rules that distinguish a private individual from a business, and a shared community arrangement from a business paying its own subscription.
usageReimbursementobject[]REQUIRED
account or user.
Name of the account or person reimbursed. Null when the record points at an account or user that no longer exists, which is worth flagging rather than reading as nobody being reimbursed.
percentage, fixedPart or remainder. Read this before quoting a figure: only percentage makes the percentage field meaningful, fixedPart uses fixedPart, and remainder means whatever the other entries leave.
subscriptionBillingobject[]REQUIRED
account or user.
Disambiguate a charge station from fuzzy, partial, or voice-shaped input. Accepts free text (address, city, vendor, station name) or a noisy id (e.g. "NL*EFL*EV2985978*C1" or "AC 10729 126"). Returns a list of candidate stations with their canonical `normalizedEvseId`. The caller must pass that `normalizedEvseId` back into charge-points-status / -details / -reboot / -unlock to act on a station; those tools do not accept fuzzy input. No authentication required.
No verification neededOptionalInput1
Free text or noisy identifier: address, city, EVSE id (with or without separators), serial number, vendor name, or station name.
Output2
resultsobject[]REQUIRED
Canonical station identifier; round-trip unchanged to other charge-points-* tools.
Normalized EVSE id when assigned; null during setup.
Stored EVSE id as shown to humans; may contain separators.
Charge point manufacturer
Charge point model
Reboot a charge station with a built-in safety check. Before sending the reset the tool verifies, server-side, that the station is online, that no other driver is charging on it (on multi-connector stations), and that the customer's most recent attempt to start a session was not rejected for token-level reasons. It reboots the station only when those checks pass. The response is shaped as: `reset` (boolean, whether the reset actually ran), `reason` (the human-readable explanation to relay to the customer), and two independent agent hints: `needConnector` (ask the customer which connector they are using, left is 1, right is 2, and call again with connectorId) and `escalate` (the reset will not help, hand off to human support). Also returns `lastSessionAttempt` mirroring the charge-points-status tool, so the agent has context for whatever it tells the customer. Does not require authentication, but a verified session lets the tool tell the customer's own token failures apart from someone else's. The `identifier` must be precise (typically the `normalizedEvseId` returned by charge-points-find); if the user gave a description, partial id, or noisy voice input, call charge-points-find first to resolve it.
No verification neededOptionalInput2
Canonical station identifier, typically the identifier field returned by charge-points-find (round-trip it unchanged). Also accepts evseId, connector evseId, serialNumber, or OCPP identity for human-supplied input. Must be precise; this tool does not fuzzy-match. Use charge-points-find first if the user gave a description or partial id.
The connector the customer is using (left is 1, right is 2). Required on multi-connector stations; the tool returns needConnector=true until it is supplied. Omit on single-connector stations.
Output8
Outcome of the action. True only when the reset command was actually sent to the station.
Human-readable explanation of the outcome. Suitable to relay to the customer.
Agent hint. True when the tool needs connectorId before it can decide. Ask the customer which connector they are using (left is 1, right is 2) and call again.
Agent hint. True when the reset will not help and a human should take over. Mutually exclusive with needConnector in current logic.
connectorsobject[]REQUIRED
lastSessionAttemptobject | nullREQUIREDMost recent token-authorisation attempt observed on the customer's connector in the last hour, scoped to that connector when supplied. Same shape as the charge-points-status tool. Null when no attempt was found.
Most recent token-authorisation attempt observed on the customer's connector in the last hour, scoped to that connector when supplied. Same shape as the charge-points-status tool. Null when no attempt was found.
authorizationobjectREQUIRED
Lists charging sessions that took place on the account's charge points (the operator view): who charged, energy delivered, duration and revenue. Returns live (in-progress) and recent (completed) sessions. Callers with account-level charge-point session read access see all the account's charge-point sessions; other callers see only sessions at their own reimbursement locations (e.g. a home charge point). For sessions the account's users ran at other operators, use charging-card-sessions.
Verified customerRequiredInput
Output3
liveobject[]REQUIRED
chargePointobjectREQUIRED
Canonical charge-point identifier — same value used by every charge-points-* tool.
driverobject | nullREQUIRED
Token visual number — the non-secret card/token identifier.
Hashed token uid; the raw uid is secret and never returned.
revenueobjectREQUIRED
locationobject | nullREQUIRED
recentobject[]REQUIRED
chargePointobjectREQUIRED
Canonical charge-point identifier — same value used by every charge-points-* tool.
driverobject | nullREQUIRED
Token visual number — the non-secret card/token identifier.
Hashed token uid; the raw uid is secret and never returned.
revenueobjectREQUIRED
locationobject | nullREQUIRED
Gather the facts needed to reason about a charge station: connectivity, per-connector status, active issues, tariff, last successful session per connector, and the most recent token-authorisation attempt. The per-connector tariff is formatted according to the OCPI standard.Use this to answer questions about whether a station is online, available, or experiencing problems, and to understand why a customer cannot charge. Returns non-sensitive information; no authentication required. When a verified caller is attached, the most-recent-attempt section is enriched to indicate whether the attempt was made with one of the caller's own tokens. When the most recent attempt was refused because the token already had a session running elsewhere (outcome `ConcurrentTx`), `blockingSessionId` names that session, so the customer can be told what is holding their card and a human picking the case up does not have to search for it. Calling this is NEVER required before charge-points-reboot: the reboot tool runs the same checks internally as a safety gate. The `identifier` must be precise (typically the `normalizedEvseId` returned by charge-points-find); if the user gave a description, partial id, or noisy voice input, call charge-points-find first to resolve it.
No verification neededOptionalInput1
Canonical station identifier, typically the identifier field returned by charge-points-find (round-trip it unchanged). Also accepts evseId, connector evseId, serialNumber, or OCPP identity for human-supplied input. Must be precise; this tool does not fuzzy-match. Use charge-points-find first if the user gave a description or partial id.
Output24
Canonical station identifier; round-trip unchanged to other charge-points-* tools.
Normalized EVSE id when assigned; null during setup.
Stored EVSE id as shown to humans; may contain separators.
Charge point manufacturer
Charge point model
Whether charge cards from outside this platform are accepted here, i.e. whether roaming is on, so a visiting driver can charge. Mechanically it is the fallback that authorises a token belonging to no access group. Despite the name this is not a statement about the location being publicly listed or findable on a map, which is a separate location setting. It cannot be enabled on a location where nobody is reimbursed. Stored per charge point but edited at location level and propagated down, so charge points on one location can in principle disagree.
activeIssuesobject[]REQUIRED
Issue type identifier
low: informational. medium: may need attention. high: likely impacting operation. critical: station unable to function.
connectorsobject[]REQUIRED
Maximum power in kW
available: ready for a new session. preparing: vehicle plugged in, not yet charging. ev-connected: vehicle connected but charging not started. charging: actively delivering energy. occupied: connector in use but not charging. suspended-evse: charging paused by the station. suspended-ev: charging paused by the vehicle. idle: connected but no energy flow. finishing: session ending, wrapping up. unavailable: connector not available for use (e.g. maintenance). faulted: error state, may need physical intervention. reserved: reserved for a specific user. unknown: status could not be determined.
tariffobject | nullREQUIREDThe OCPI tariff applicable to this connector — the same tariff the platform pushes to roaming partners, whichever internal source it comes from. Null when no roamed tariff exists for the connector (e.g. setup incomplete.
The OCPI tariff applicable to this connector — the same tariff the platform pushes to roaming partners, whichever internal source it comes from. Null when no roamed tariff exists for the connector (e.g. setup incomplete.
ISO 4217 currency code, e.g. EUR.
tariff_alt_textobject[] | nullREQUIREDHuman-readable tariff descriptions, one entry per language.
Human-readable tariff descriptions, one entry per language.
elementsobject[]REQUIREDOCPI tariff elements. Each element carries price components and optional restrictions; an element applies only when its restrictions are met. Idle fees appear as PARKING_TIME components, with the grace period expressed as duration-restricted elements (the fee only applies beyond min_duration). Dynamic energy-market prices appear as time-restricted ENERGY elements covering the hours for which prices are known, which can vary.
OCPI tariff elements. Each element carries price components and optional restrictions; an element applies only when its restrictions are met. Idle fees appear as PARKING_TIME components, with the grace period expressed as duration-restricted elements (the fee only applies beyond min_duration). Dynamic energy-market prices appear as time-restricted ENERGY elements covering the hours for which prices are known, which can vary.
price_componentsobject[]REQUIRED
ENERGY: price per kWh delivered. FLAT: fixed price per charging session. TIME: price per hour of active charging. PARKING_TIME: price per hour connected but not charging (idle).
Price for this dimension, excluding VAT, in the tariff currency.
Billing increment (OCPI step_size): the dimension is billed in whole multiples of this step. Null when not specified.
restrictionsobject | nullREQUIREDConditions under which this element applies. Null when the element is unconditional.
Conditions under which this element applies. Null when the element is unconditional.
Time of day (HH:mm) from which this element applies.
Time of day (HH:mm) until which this element applies.
Date (YYYY-MM-DD) from which this element applies.
Date (YYYY-MM-DD) until which this element applies.
Days of the week this element applies to.
Minimum session duration in seconds before this element applies.
Maximum session duration in seconds for which this element applies.
Minimum delivered energy (kWh) before this element applies.
Maximum delivered energy (kWh) for which this element applies.
Minimum charging power (kW) for this element to apply.
Maximum charging power (kW) for this element to apply.
ISO timestamp of when this tariff was last updated.
operationalStatusobject | nullREQUIRED
lastSessionAttemptobject | nullREQUIREDThe most recent token-authorisation attempt at this station in the last hour. Useful when troubleshooting: a non-Accepted outcome means the station was responding correctly and the customer's problem is on the token side. Null when no attempt was found in the lookback window.
The most recent token-authorisation attempt at this station in the last hour. Useful when troubleshooting: a non-Accepted outcome means the station was responding correctly and the customer's problem is on the token side. Null when no attempt was found in the lookback window.
Outcome of the most recent attempt to start a session at this station. Accepted: the token was authorised. Invalid: token not recognised. Blocked: token recognised but denied. Expired: token recognised but its validity window has passed. ConcurrentTx: token recognised but already has an active session elsewhere.
ISO timestamp of the attempt.
authorizationobjectREQUIRED
true: the token used belongs to the verified caller. false: caller is verified and has tokens on file, none matched (likely another driver, or a roaming token we do not store). null: cannot determine (no verified caller, no tokens on file, or no token uid on the OCPP record).
Hashed token uid (SHA-256 with an app-wide salt, truncated). Stable across calls so the agent can reference / compare it. Null when the OCPP record carried no idTag.
Id of the charging session that refused the most recent attempt, when that attempt's outcome was ConcurrentTx. A token can only run one session at a time, so this names the session that has to end before the customer can start a new one. Use it to tell the customer what is holding their card, and pass it on when handing the case to a human so they do not have to search for it. Null for every other outcome. Also null when the block no longer stands: the session has ended, so the customer can retry, or the token has since started a different session, which cannot be the one that refused the attempt and must not be treated as if it were.
Returns an account-wide charge-point summary: how many charge points and locations the account operates, sessions currently active on them, and current-month CPO session totals (energy, duration), plus a list of the account's charge points (up to 50). Callers with account-level charge-point read access see the list; other callers see the aggregate stats only. For a single charge point's live status or owner detail use charge-points-status / -details; to look one up use charge-points-find.
Verified customerRequiredInput
Output3
statsobject | nullREQUIRED
Which charge points the list and these counts cover. "account": every charge point on the account, except a colleague's employee-reimburse (home) charge point, which is never shown. "own": only locations linked to this caller. An empty list under "own" means the caller has no charge point of their own, NOT that access was refused.
True when more charge points are in scope than the list returns. The counts still cover all of them.
Distinct locations the account's charge points sit at.
Charge points with connectivityState "connected".
Charge points not currently connected.
Charge points offline, reboot-required or disabled.
Charge points where roaming is on, i.e. a charge card from outside this platform is accepted. This is NOT a count of publicly listed or map-visible charge points; that is the location publishingMode, a separate setting.
Total active (unresolved) issues across the account's charge points.
Connector count keyed by status.
CPO sessions currently in ACTIVE status, within what this caller may see (see sessions).
sessionsobjectREQUIREDCompleted CPO session totals for the current calendar month, windowed on endedAt (the billing date, so a session spanning a month boundary counts in the month it ended). Scoped to what this caller may see: with account-level cpoSessions read, every location except a colleague's employee-reimburse charge point; without it, only locations linked to the caller. Includes excluded sessions, so these totals can read higher than the CPO dashboard.
Completed CPO session totals for the current calendar month, windowed on endedAt (the billing date, so a session spanning a month boundary counts in the month it ended). Scoped to what this caller may see: with account-level cpoSessions read, every location except a colleague's employee-reimburse charge point; without it, only locations linked to the caller. Includes excluded sessions, so these totals can read higher than the CPO dashboard.
currentMonthobjectREQUIRED
revenueobject[]REQUIREDTotal session cost this month, grouped by currency.
Total session cost this month, grouped by currency.
chargePointsobject[]REQUIRED
Canonical station identifier; round-trip unchanged to other charge-points-* tools.
Normalized EVSE id when assigned; null during setup.
Stored EVSE id as shown to humans; may contain separators.
Charge point manufacturer
Charge point model
Whether charge cards from outside this platform are accepted here, i.e. whether roaming is on, so a visiting driver can charge. Mechanically it is the fallback that authorises a token belonging to no access group. Despite the name this is not a statement about the location being publicly listed or findable on a map, which is a separate location setting. It cannot be enabled on a location where nobody is reimbursed. Stored per charge point but edited at location level and propagated down, so charge points on one location can in principle disagree.
ISO timestamp the charge point was last seen.
locationobject | nullREQUIRED
Count of active (unresolved) issues on this charge point.
connectorsobject[]REQUIRED
Maximum power in kW
available: ready for a new session. preparing: vehicle plugged in, not yet charging. ev-connected: vehicle connected but charging not started. charging: actively delivering energy. occupied: connector in use but not charging. suspended-evse: charging paused by the station. suspended-ev: charging paused by the vehicle. idle: connected but no energy flow. finishing: session ending, wrapping up. unavailable: connector not available for use (e.g. maintenance). faulted: error state, may need physical intervention. reserved: reserved for a specific user. unknown: status could not be determined.
Whether a tariff is configured for this connector.
Unlock a connector on a charge station to release a stuck cable. Use when a customer reports they cannot unplug their vehicle. Does not require authentication; intended as a self-service action for the person standing at the station. The `identifier` must be precise (typically the `normalizedEvseId` returned by charge-points-find). If the user gave a description, partial id, or noisy voice input, call charge-points-find first to resolve it.
No verification neededOptionalInput2
Canonical station identifier, typically the identifier field returned by charge-points-find (round-trip it unchanged). Also accepts evseId, connector evseId, serialNumber, or OCPP identity for human-supplied input. Must be precise; this tool does not fuzzy-match. Use charge-points-find first if the user gave a description or partial id.
The connector ID to unlock (e.g. "1", "2")