Poll or subscribe (via IEEE 2030.5 notification/subscription) to /derp/{derpId}/derc to retrieve DERControl resources; inspect the DERControlBase element for opModMaxLimW (active power limit in watts) and opModFixedPFAbsorbW (power factor) fields
Parse the interval field (startTime, duration) in UTC epoch seconds to determine the control window per IEEE 2030.5-2018 clause 10.10
Apply the received setpoint to the inverter via SunSpec Modbus model 704 (DER AC Controls): write register WMaxLimPct or WMaxLim depending on inverter model, enable the WMaxLim_Ena bit
POST a DERControlResponse resource to /rsps with status code 3 (Event Completed) or 1 (Event Received) within the replyLimit window specified in the DERControl
Log the control event with timestamp, MRID, setpoint applied, and response code for M&V and audit purposes
If the control conflicts with a higher-primacy program, implement the primacy resolution logic in IEEE 2030.5 clause 11.9 before applying
Known gotchas
Primacy values are inverted: lower number means higher priority; a utility program at primacy 1 overrides an aggregator at primacy 2 — reversing this causes customer complaints during emergency curtailments
DERControl start times use Unix epoch seconds; forgetting UTC offset during DST transitions causes the inverter to apply a setpoint an hour early or late
Some DERMS servers return DERControlBase with all optional fields absent when no active control is in effect; treat a missing opModMaxLimW as 'no limit', not zero
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