{
  "format": "schemary-agent-capabilities/v1",
  "release": "release.json",
  "workspace": "agent.html",
  "transport": "visible-browser-form",
  "installationRequired": false,
  "storage": "same-origin; local file bridge when served locally",
  "operations": {
    "task-context": {
      "form": "#agent-task",
      "input": {
        "purpose": [
          "copy",
          "bindings"
        ],
        "pageIds": "optional ID array",
        "groupIds": "optional ID array; union with pageIds",
        "fields": "optional field filter",
        "cursor": "non-negative integer",
        "limit": "1..100"
      },
      "output": [
        "projectId",
        "revision",
        "total",
        "items",
        "nextCursor"
      ]
    },
    "scope": {
      "form": "#agent-short-loop",
      "input": [
        "pageIds"
      ],
      "output": [
        "revision",
        "pages",
        "related",
        "relations"
      ]
    },
    "check-change": {
      "form": "#agent-change-check",
      "input": [
        "changePackage",
        "revision"
      ],
      "output": [
        "valid",
        "review.candidateId",
        "review.diff",
        "review.configurationDiff",
        "behavior",
        "review.reviewPaths",
        "review.impact"
      ]
    },
    "save-change": {
      "form": "#agent-change-save",
      "input": [
        "same changePackage",
        "same revision",
        "checked candidateId"
      ],
      "output": [
        "savedRevision",
        "changed",
        "behavior",
        "export",
        "previewUrl",
        "impact"
      ]
    },
    "behavior": {
      "form": "#agent-behavior",
      "guide": "behavior-guide.md"
    },
    "webmcp": {
      "interface": "schemary-webmcp/v1",
      "registration": "document.modelContext.registerTool()",
      "tools": [
        "schemary_describe",
        "schemary_list_projects",
        "schemary_create_project",
        "schemary_read_context",
        "schemary_review_change",
        "schemary_save_change",
        "schemary_run_cases",
        "schemary_export_project",
        "schemary_preview_project"
      ]
    }
  },
  "changePackage": {
    "allowed": [
      "patches",
      "pages",
      "shared",
      "sharedContent",
      "conditionNodes",
      "testCases",
      "preview",
      "groups",
      "scenarios",
      "defaults",
      "settings"
    ],
    "groups": "upsert by stable ID; fields supplied replace that property",
    "scenarios": "upsert by stable ID; supplied state replaces that scenario state",
    "defaults": "merge declared state fields",
    "settings": [
      "entry",
      "defaultGroup",
      "defaultScenario"
    ],
    "unknownFields": "reject"
  },
  "limits": {
    "projectBytes": 5242880,
    "taskPageItems": 100,
    "cases": 50,
    "stepsPerCase": 100,
    "impactBatchPages": 100
  },
  "guides": {
    "start": "agent.md",
    "author": "authoring-guide.md",
    "read": "reading-guide.md",
    "reference": "agent-reference.md",
    "components": "components.md",
    "schema": "project.schema.json"
  },
  "boundaries": [
    "No arbitrary code or domain adapters",
    "No cloud data synchronization",
    "Behavioral pass covers only executed declared cases",
    "Static hosting has no invented HTTP API",
    "Static impact distinguishes direct edits, possible consumers and downstream paths; uncertain scopes are explicit"
  ],
  "projectDisplay": {
    "creationOnly": true,
    "types": [
      "phone",
      "tablet",
      "desktop",
      "web"
    ],
    "phone": "portrait",
    "others": "landscape"
  }
}
