{
  "apps": [
    {
      "appId": "com.dotharness.oratorio",
      "toolNamespace": "oratorio",
      "displayName": "Oratorio",
      "developerName": "DotHarness",
      "description": "Manage Oratorio board items and review rounds from selected DotCraft threads.",
      "category": "Productivity",
      "icon": "./skills/oratorio/assets/oratorio.svg",
      "releasePage": "https://github.com/DotHarness/oratorio/releases",
      "nativeApplication": {
        "displayName": "Oratorio",
        "protocol": "oratorio",
        "installUrl": "https://github.com/DotHarness/oratorio/releases",
        "platforms": {
          "windows": { "appUserModelId": "com.oratorio.desktop", "protocol": "oratorio" },
          "macos": { "bundleId": "com.oratorio.desktop", "protocol": "oratorio" },
          "linux": { "desktopId": "oratorio.desktop", "protocol": "oratorio" }
        }
      },
      "connection": {
        "handoffModes": [
          {
            "mode": "customProtocol",
            "uriTemplate": "oratorio://dotcraft/{operation}?app={appId}&request={requestId}&token={requestToken}&endpoint={endpoint}"
          }
        ]
      },
      "scopes": [
        {
          "id": "board.read",
          "displayName": "Read boards",
          "description": "Read Oratorio board items, rounds, runs, and source state.",
          "risk": "read",
          "defaultSelected": true
        },
        {
          "id": "board.manage",
          "displayName": "Manage boards",
          "description": "Create local tasks and queue Oratorio review rounds.",
          "risk": "mutate"
        }
      ],
      "toolCatalog": [
        {
          "name": "ListBoardItems",
          "scope": "board.read",
          "risk": "read",
          "defaultExposure": "direct",
          "description": "List Oratorio board items."
        },
        {
          "name": "GetBoardItem",
          "scope": "board.read",
          "risk": "read",
          "defaultExposure": "direct",
          "description": "Read one Oratorio board item by item id or task short id."
        },
        {
          "name": "CreateBoardTask",
          "scope": "board.manage",
          "risk": "mutate",
          "defaultExposure": "deferred",
          "description": "Create a local Oratorio task."
        },
        {
          "name": "QueueReviewRound",
          "scope": "board.manage",
          "risk": "mutate",
          "defaultExposure": "deferred",
          "description": "Queue a DotCraft AppServer-backed review round for an Oratorio item."
        }
      ]
    }
  ]
}
