Register for a WattTime account via POST /v3/register with your username, password, email, and organization; on success the account is created and you can immediately authenticate.
Obtain a JWT token via GET /v3/login with HTTP Basic Auth (username:password); include the returned token as a Bearer token in the Authorization header for all subsequent requests.
Determine the balancing authority (BA) for a location via GET /v3/region?latitude=<LAT>&longitude=<LON> which returns the signal_type options and region abbreviation.
Fetch real-time marginal operating emissions rate (MOER) via GET /v3/signal-index?region=<REGION>&signal_type=co2_moer; the response includes a 'percent' field (0-100 index) and optionally raw lbs CO2/MWh values for higher tiers.
For historical data or forecasts, use GET /v3/historical or GET /v3/forecast with region, signal_type, and start/end parameters; forecast data is available on paid tiers.
Known gotchas
WattTime tokens expire after a relatively short period (typically 30 minutes); hard-coding a token obtained at startup will cause failures in long-running processes — implement token refresh or re-authentication on 401 responses.
The free tier provides only the 0-100 index (signal-index) and does not include raw lbs CO2/MWh MOER values; if absolute emission factors are needed for carbon accounting, a paid subscription is required — do not treat the index as a directly convertible emission rate.
Region coverage is limited to areas where WattTime has grid data agreements; locations in regions without coverage return an error rather than a fallback estimate — always handle the 'no coverage' response and document which regions are supported in your application.
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