{
  "$comment": "GENERATED from src/tools — do not edit by hand. Compact gateway surface (default for HTTP); every operation routes through the full tool contract in tools.json.",
  "version": 1,
  "toolCount": 19,
  "fullToolCount": 74,
  "stats": {
    "compact": {
      "toolCount": 19,
      "schemaBytes": 46834
    },
    "hybrid": {
      "toolCount": 49,
      "schemaBytes": 113271
    },
    "full": {
      "toolCount": 74,
      "schemaBytes": 237859
    }
  },
  "tools": [
    {
      "name": "project_overview",
      "title": "Project overview",
      "description": "Bootstrap tool: returns the workspace root, workspaceId + workspaceEpoch (required by every other tool), trust policy, capabilities, detected manifests/languages, runnable task recipes, a shallow file tree, and a scoped git summary. Read-only; never executes project code. Call this first. This connection uses the COMPACT tool surface: capabilities are invoked through juju_* gateway tools; call juju_discover to find an operation and its exact schema.",
      "requiredScope": "juju:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_discover",
      "title": "Discover operations behind the compact gateways",
      "description": "Find which gateway operation covers a capability. With query/domain it returns matching operations (name, gateway, scope, short description — no schemas). With operation=\"<name>\" it returns that operation's full input JSON Schema, deterministic schemaHash, required scope, action class and usage notes. Discovery never grants permissions and never reveals tokens, grants or owner state.",
      "requiredScope": "juju:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "query": {
            "description": "Free-text capability search, e.g. \"edit a TypeScript file\"",
            "type": "string",
            "maxLength": 200
          },
          "domain": {
            "description": "Restrict matches to one capability domain",
            "type": "string",
            "enum": [
              "code",
              "exec",
              "git",
              "desktop",
              "media",
              "browser",
              "game",
              "workflow",
              "schedule",
              "web"
            ]
          },
          "operation": {
            "description": "Exact operation name for full schema detail",
            "type": "string",
            "maxLength": 64
          },
          "limit": {
            "default": 8,
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "cursor": {
            "description": "nextCursor from a previous juju_discover result",
            "type": "string",
            "maxLength": 32
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "limit"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_read",
      "title": "Read workspace state",
      "description": "Gateway: read-only workspace access: files, search, symbols, jobs, history and agent notes. Set operation to one of: list_files, read_files, read_image, read_instructions, search_code, glob_files, symbols, references, diagnostics, change_history, approval_status, environment_info, todo_read, handoff_read, job_status, job_output, job_wait, list_jobs. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "domain": "code",
      "operations": [
        "list_files",
        "read_files",
        "read_image",
        "read_instructions",
        "search_code",
        "glob_files",
        "symbols",
        "references",
        "diagnostics",
        "change_history",
        "approval_status",
        "environment_info",
        "todo_read",
        "handoff_read",
        "job_status",
        "job_output",
        "job_wait",
        "list_jobs"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "list_files",
              "read_files",
              "read_image",
              "read_instructions",
              "search_code",
              "glob_files",
              "symbols",
              "references",
              "diagnostics",
              "change_history",
              "approval_status",
              "environment_info",
              "todo_read",
              "handoff_read",
              "job_status",
              "job_output",
              "job_wait",
              "list_jobs"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_write",
      "title": "Change workspace files",
      "description": "Gateway: hash-verified, journaled file changes: write/edit/patch, preview→apply→rollback, todos and handoff. Set operation to one of: write_file, edit_file, apply_patch, replace_in_files, delete_path, move_path, make_directory, preview_changes, apply_changes, rollback_changes, preview_rename, todo_write, handoff_write. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:write",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "domain": "code",
      "operations": [
        "write_file",
        "edit_file",
        "apply_patch",
        "replace_in_files",
        "delete_path",
        "move_path",
        "make_directory",
        "preview_changes",
        "apply_changes",
        "rollback_changes",
        "preview_rename",
        "todo_write",
        "handoff_write"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "write_file",
              "edit_file",
              "apply_patch",
              "replace_in_files",
              "delete_path",
              "move_path",
              "make_directory",
              "preview_changes",
              "apply_changes",
              "rollback_changes",
              "preview_rename",
              "todo_write",
              "handoff_write"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_exec",
      "title": "Run commands and control jobs",
      "description": "Gateway: shell/argv commands, task recipes, and stdin/cancel for owned background jobs. Set operation to one of: run_command, run_commands, run_task, exec_command, job_input, job_cancel. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:exec",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "exec",
      "operations": [
        "run_command",
        "run_commands",
        "run_task",
        "exec_command",
        "job_input",
        "job_cancel"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "run_command",
              "run_commands",
              "run_task",
              "exec_command",
              "job_input",
              "job_cancel"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_git_read",
      "title": "Inspect git state",
      "description": "Gateway: git status, diff and log for the workspace repository. Set operation to one of: git_status, git_diff, git_log. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "domain": "git",
      "operations": [
        "git_status",
        "git_diff",
        "git_log"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "git_status",
              "git_diff",
              "git_log"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_git_write",
      "title": "Commit to git",
      "description": "Gateway: create a git commit from staged JUJU changes (never pushes). Set operation to one of: git_commit. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:exec",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "domain": "git",
      "operations": [
        "git_commit"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "git_commit"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_desktop_view",
      "title": "View permitted desktop windows",
      "description": "Gateway: status, window list, capture and accessibility text for owner-permitted apps only. Set operation to one of: desktop_status, desktop_windows, desktop_capture, desktop_accessibility. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "desktop",
      "operations": [
        "desktop_status",
        "desktop_windows",
        "desktop_capture",
        "desktop_accessibility"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "desktop_status",
              "desktop_windows",
              "desktop_capture",
              "desktop_accessibility"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_desktop_control",
      "title": "Act in a permitted desktop window",
      "description": "Gateway: one bounded input action (focus/click/type/key/scroll/drag) in an owner-permitted window. Set operation to one of: desktop_action. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:exec",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "desktop",
      "operations": [
        "desktop_action"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "desktop_action"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_assist_read",
      "title": "Coding-task analysis",
      "description": "Gateway: task context, static impact analysis and single-symbol reads. Set operation to one of: context_for_task, analyze_impact, read_symbol. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "domain": "code",
      "operations": [
        "context_for_task",
        "analyze_impact",
        "read_symbol"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "context_for_task",
              "analyze_impact",
              "read_symbol"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_assist_change",
      "title": "Refactor previews and verification",
      "description": "Gateway: preview-only symbol-body refactors and explicit verification plan/run/report. Set operation to one of: preview_refactor, verify_changes. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:write",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "code",
      "operations": [
        "preview_refactor",
        "verify_changes"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "preview_refactor",
              "verify_changes"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_media",
      "title": "Screen, image, media and speech",
      "description": "Gateway: bounded screen/image views, local video/audio evidence, transcription, subtitles and local speech synthesis. Set operation to one of: multimodal_status, screen_observe, image_view, media_open, media_extract, media_transcribe, media_subtitles, media_search, media_read, media_job, media_close, speech_synthesize. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:read",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "media",
      "operations": [
        "multimodal_status",
        "screen_observe",
        "image_view",
        "media_open",
        "media_extract",
        "media_transcribe",
        "media_subtitles",
        "media_search",
        "media_read",
        "media_job",
        "media_close",
        "speech_synthesize"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "multimodal_status",
              "screen_observe",
              "image_view",
              "media_open",
              "media_extract",
              "media_transcribe",
              "media_subtitles",
              "media_search",
              "media_read",
              "media_job",
              "media_close",
              "speech_synthesize"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_browser",
      "title": "Isolated browser",
      "description": "Gateway: open/observe/act in the isolated local Chromium session. Set operation to one of: browser_session, browser_observe, browser_action. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:exec",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "browser",
      "operations": [
        "browser_session",
        "browser_observe",
        "browser_action"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "browser_session",
              "browser_observe",
              "browser_action"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_game",
      "title": "Turn-based visual game",
      "description": "Gateway: step-based visual game sessions with fresh observations per move. Set operation to one of: game_session, game_step. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:exec",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "game",
      "operations": [
        "game_session",
        "game_step"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "game_session",
              "game_step"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_workflow_read",
      "title": "Find remembered procedures",
      "description": "Gateway: search or read revisioned demonstration workflows. Set operation to one of: workflow_search. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "workflow",
      "operations": [
        "workflow_search"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "workflow_search"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_workflow_write",
      "title": "Save a demonstrated procedure",
      "description": "Gateway: save or revise a demonstration workflow (never executes it). Set operation to one of: workflow_save. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:write",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "workflow",
      "operations": [
        "workflow_save"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "workflow_save"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_workflow_run",
      "title": "Run a remembered procedure",
      "description": "Gateway: apply a saved workflow one checked step at a time. Set operation to one of: workflow_run. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:exec",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "workflow",
      "operations": [
        "workflow_run"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "workflow_run"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_schedule",
      "title": "Propose a scheduled command",
      "description": "Gateway: propose an immutable scheduled command; the owner approves it locally before it ever runs. Set operation to one of: schedule_propose. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:exec",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "domain": "schedule",
      "operations": [
        "schedule_propose"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "schedule_propose"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "juju_web",
      "title": "Fetch a public URL",
      "description": "Gateway: SSRF-guarded outbound HTTPS fetch (only when the owner enabled allowWebFetch). Set operation to one of: fetch_url. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call juju_discover with operation=\"<name>\" for the exact input schema.",
      "requiredScope": "juju:read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      },
      "domain": "web",
      "operations": [
        "fetch_url"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace id from project_overview"
          },
          "workspaceEpoch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
          },
          "operation": {
            "type": "string",
            "enum": [
              "fetch_url"
            ],
            "description": "Target operation to invoke"
          },
          "args": {
            "default": {},
            "description": "The selected operation's own arguments, exactly as its schema defines (juju_discover returns it). Never include workspaceId/workspaceEpoch here.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "workspaceId",
          "workspaceEpoch",
          "operation",
          "args"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "workspaceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "workspaceEpoch": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "recovery": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "ok",
          "workspaceId",
          "workspaceEpoch",
          "data",
          "error",
          "warnings",
          "truncated",
          "nextCursor"
        ],
        "additionalProperties": false
      }
    }
  ]
}
