{
  "type": "object",
  "properties": {
    "state": {
      "const": "manual_only",
      "type": "string",
      "description": "Manual inputs are a complete context configuration."
    },
    "source": {
      "const": "manual.md",
      "type": "string",
      "description": "Manual source file label."
    },
    "inputs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "enum": [
              "target_pages",
              "site_description",
              "offering",
              "assets",
              "competitors"
            ],
            "description": "Manual input section."
          },
          "value": {
            "type": "string",
            "description": "Human or agent-authored manual value."
          },
          "source": {
            "const": "manual",
            "type": "string",
            "description": "Manual source label."
          }
        },
        "required": [
          "field",
          "value",
          "source"
        ],
        "additionalProperties": false,
        "description": "One manual entry."
      },
      "description": "Manual statements; no observation dates invented."
    },
    "pages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "page": {
            "type": "string",
            "description": "Nominated page URL."
          },
          "nominated_by": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "One recorded value."
            },
            "description": "manual or gsc_clicks nomination sources."
          },
          "observation": {
            "type": "null",
            "description": "No observation is fabricated from manual input."
          },
          "inference": {
            "type": "null",
            "description": "Reserved for separately authored judgment; always null here."
          },
          "recommendation": {
            "type": "null",
            "description": "Recommendations belong to campaign briefs; always null here."
          }
        },
        "required": [
          "page",
          "nominated_by",
          "observation",
          "inference",
          "recommendation"
        ],
        "additionalProperties": false,
        "description": "Page nomination with evidence kept separate."
      },
      "description": "Manually nominated pages."
    },
    "error": {
      "type": "string",
      "description": "Missing-file or parse diagnostic; the local MCP result sets isError."
    }
  },
  "required": [],
  "additionalProperties": false,
  "description": "Manual context or missing-file error.",
  "anyOf": [
    {
      "required": [
        "state",
        "source",
        "inputs",
        "pages"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ]
}
