Authenticate via OAuth 2.0 client credentials to the Uplight platform API; request scope vpp:events:write vpp:telemetry:read to obtain a bearer token
Create a demand flexibility program event: POST to /api/v1/flexibility/events with payload containing program_id, event_type (SHED or SHIFT), start_time (ISO 8601 UTC), duration_minutes, target_reduction_kw, and device_filter (e.g., device_type: smart_thermostat)
Poll GET /api/v1/flexibility/events/{event_id}/enrollment to see which enrolled devices have been selected for dispatch and their pre-dispatch baseline temperatures and setpoints
Monitor real-time compliance during the event window: GET /api/v1/flexibility/events/{event_id}/realtime with a 60-second polling interval; the response includes per-device current_setpoint, baseline_setpoint, power_kw, and compliance_status (COMPLIANT / NON_COMPLIANT)
For non-compliant devices (customer override or communication failure), log the device_id and non_compliance_reason; non-compliant devices are excluded from the event's MW achievement calculation
After event completion, retrieve the final settlement report from GET /api/v1/flexibility/events/{event_id}/settlement to obtain total_kw_reduced, number_of_devices_dispatched, and performance_percentage for submission to the utility or RTO
Known gotchas
Smart thermostat dispatch operates through OEM APIs (Nest, Ecobee, Sensi) which have their own rate limits and latency; an Uplight dispatch command may take 2-5 minutes to propagate to all devices in a large fleet, so real-time compliance metrics lag behind the actual dispatch command
Customer pre-cooling override settings can cause a device to report as compliant on setpoint but show no power reduction if the thermal mass was already charged; power-based compliance metrics are more accurate than setpoint-based metrics for HVAC resources
Uplight's flexibility event API requires the program to be in ACTIVE status before events can be created; a program in DRAFT or PAUSED state returns 409 Conflict on event creation — check program status before calling the event endpoint
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