{
  "schema_version": "1.0",
  "site_id": "grid-demand-ledger",
  "canonical_origin": "https://grid-demand-ledger.pages.dev",
  "tools": [
    {
      "id": "mw-to-mwh",
      "path": "/tools/mw-to-mwh/",
      "title": "MW to MWh scenario calculator",
      "description": "Multiply a stated capacity by assumed operating hours without turning an application into measured demand.",
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mw": {
            "title": "Capacity",
            "x-unit": "MW",
            "type": "number",
            "minimum": 0,
            "maximum": 1000000
          },
          "hours": {
            "title": "Assumed operating time",
            "x-unit": "hours",
            "type": "number",
            "minimum": 0,
            "maximum": 1000000
          },
          "capacity_basis": {
            "title": "What does the capacity describe?",
            "type": "string",
            "enum": [
              "requested",
              "scenario",
              "observed"
            ]
          }
        },
        "required": [
          "mw",
          "hours",
          "capacity_basis"
        ]
      },
      "output_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ok",
          "errors",
          "summary",
          "rows",
          "notes",
          "values"
        ],
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "field",
                "code",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "code": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          },
          "summary": {
            "type": "string"
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "label",
                "value"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "unit": {
                  "type": "string"
                }
              }
            }
          },
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "values": {
            "type": "object",
            "description": "Tool-specific deterministic values; see the tool assumptions and returned labelled rows."
          }
        }
      },
      "rule_version": "2026-11-05.1",
      "updated_on": "2026-11-05",
      "sources": [
        {
          "title": "PJM — Load Forecasting",
          "url": "https://learn.pjm.com/three-priorities/planning-for-the-future/load-forecasting",
          "reviewed_on": "2026-11-04"
        }
      ],
      "assumptions": [
        "Energy scenario (MWh) = MW × hours; GWh = MWh ÷ 1,000.",
        "The entered power is assumed constant for every entered hour. No utilization factor is inferred.",
        "Bounds: 0–1,000,000 MW and 0–1,000,000 hours."
      ],
      "limitations": [
        "Requested capacity, approved connections and measured electricity consumption are different observations.",
        "The result is a scenario, including when an observed power level is entered; it is not a load forecast."
      ]
    }
  ]
}
