Obtain API credentials from the Uplight developer portal; authenticate using OAuth 2.0 client credentials flow to the token endpoint to get a bearer token with the derms:write scope
POST a site enrollment to /api/v1/sites with fields: utility_account_id, address, device_type (e.g., battery_storage), rated_kw, and program_id; confirm 201 Created with assigned site_id
Verify device telemetry ingestion by calling GET /api/v1/sites/{site_id}/telemetry and confirming recent power_kw and soc_pct readings are present
Create a dispatch event: POST to /api/v1/events with program_id, dispatch_kw, start_time (ISO 8601), and duration_minutes; receive event_id in the 202 Accepted response
Poll GET /api/v1/events/{event_id}/status until the state field transitions from SCHEDULED to ACTIVE to COMPLETED
Retrieve event performance summary from GET /api/v1/events/{event_id}/performance to obtain enrolled_kw, dispatched_kw, and achieved_kw for settlement reporting
Known gotchas
AutoGrid was acquired by Uplight; legacy AutoGrid Flex API endpoints may differ from current Uplight API paths — confirm current base URL from the Uplight developer portal rather than legacy documentation
Bearer tokens expire in 3600 seconds; failing to refresh before expiry causes dispatch calls to return 401 mid-event, leaving the fleet in an undispatched state
The program_id must match the utility's active demand response program ID; using a test program ID against production sites results in silent no-dispatch with a 200 OK response
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