components:
  schemas:
    BaseSuccess:
      description: Common REST success envelope.
      properties:
        data:
          description: Endpoint-specific payload.
          type: object
        success:
          enum:
            - true
          type: boolean
        timestamp:
          description: Local ISO-8601 timestamp without timezone suffix.
          type: string
      required:
        - success
        - timestamp
      type: object
    ErrorResponse:
      description: Common REST error envelope.
      properties:
        error:
          description: Human-readable failure reason.
          type: string
        success:
          enum:
            - false
          type: boolean
        timestamp:
          description: Local ISO-8601 timestamp without timezone suffix.
          type: string
      required:
        - success
        - error
        - timestamp
      type: object
    WebDriverError:
      description: W3C WebDriver error envelope.
      properties:
        value:
          properties:
            error:
              description: "WebDriver error code, e.g. \"invalid session id\"."
              type: string
            message:
              description: Human-readable detail.
              type: string
            stacktrace:
              type: string
          required:
            - error
            - message
          type: object
      required:
        - value
      type: object
    WebDriverValue:
      description: W3C WebDriver envelope.
      properties:
        value:
          description: Command result; null for commands with no return value.
      required:
        - value
      type: object
  securitySchemes:
    ApiKeyAuth:
      description: API key (UUID v4) supplied in the X-Api-Key header.
      in: header
      name: X-Api-Key
      type: apiKey
    BearerAuth:
      bearerFormat: UUID
      description: "API key (UUID v4) supplied as: Authorization: Bearer <api_key>"
      scheme: bearer
      type: http
info:
  description: |-
    Unified API for **MetaDock**, a Windows power-user workspace app combining
    browser automation, native-app docking, workspace/layout management, and AI
    control. It covers the programmable surfaces exposed by the embedded local
    server:

    | Surface | Base path | Protocol | Scope token |
    |---------|-----------|----------|-------------|
    | REST API | `/api/...` | HTTP + JSON | `rest` |
    | Selenium / WebDriver | `/wd/hub/...` | HTTP + JSON (W3C WebDriver) | `selenium` |
    | CDP (Chrome DevTools Protocol) | `/json/...`, `/devtools/...` | HTTP discovery + WebSocket | `cdp` |
    | WebSocket events | `/ws` | WebSocket (JSON messages) | `websocket` |

    The WebSocket surface is documented separately in `asyncapi.yaml`. Availability of
    individual surfaces and operations depends on your MetaDock edition.

    ## Enabling surfaces
    Every surface is off by default. Each has its own toggle in MetaDock Settings ->
    API, Automation & AI (`api.rest.enable`, `selenium.enable`, `cdp.enable`,
    `api.websocket.enable`). Requesting a surface whose toggle is off is rejected
    regardless of credentials.

    Creating an API key is a separate step, and the server does not wait for one: a
    surface you have enabled accepts connections immediately and answers 401 to
    every request until a key exists, because nothing can authenticate against an
    empty key list.

    ## Authentication
    API keys are UUID v4 strings created in MetaDock Settings -> API, Automation & AI. A
    key carries a set of scopes (`rest`, `websocket`, `mcp`, `cdp`, `selenium`); a
    request is accepted only if the key's scope set allows the surface it targets.
    Two credential locations are accepted on HTTP surfaces:

    - `Authorization: Bearer <api_key>`
    - `X-Api-Key: <api_key>`

    Query-parameter authentication is not supported. First-time connections may
    additionally require an in-app approval prompt unless "Allow All" is enabled, and
    repeated failed attempts trigger a per-IP lockout. A key may further be scoped to
    a set of profiles/layouts, in which case fleet-wide operations and out-of-scope
    browsers are rejected with 403.

    ## Response envelopes
    REST (`/api/...`) uses `{ "success": true, "data": { }, "timestamp": "..." }` on
    success and `{ "success": false, "error": "...", "timestamp": "..." }` on failure;
    `timestamp` is local ISO-8601 without a timezone suffix. Selenium uses the W3C
    `{ "value": ... }` envelope and CDP discovery returns raw Chrome DevTools
    Protocol JSON.

    ## Rate limiting
    There is no request quota on any surface: requests are not counted, metered or
    billed, and no endpoint returns 429. The only throttle is the per-IP lockout on
    repeated authentication failures described above, which answers 401.
  license:
    name: Proprietary
  title: MetaDock API
  version: 1.0.0
openapi: 3.0.3
paths:
  /api/adblock/auto-update:
    post:
      description: Configure periodic auto-update of filter lists
      operationId: setAutoUpdate
      requestBody:
        content:
          application/json:
            schema:
              properties:
                enabled:
                  description: Enable periodic auto-update (default true)
                  type: boolean
                interval_hours:
                  description: Hours between updates (default 24)
                  maximum: 8760
                  minimum: 1
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set auto update
      tags:
        - Adblock
  /api/adblock/lists:
    get:
      description: "List all adblock filter lists (id, name, url, enabled, rule_count, last_updated)"
      operationId: listFilters
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of filter lists
                            type: integer
                          lists:
                            description: "Filter lists (id, name, url, enabled, rule_count, last_updated)"
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                        required:
                          - count
                          - lists
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List filters
      tags:
        - Adblock
    post:
      description: Add a new adblock filter list by URL
      operationId: addFilter
      requestBody:
        content:
          application/json:
            schema:
              properties:
                enabled:
                  description: Enable immediately and download (default true)
                  type: boolean
                name:
                  description: Display name for the list
                  type: string
                url:
                  description: Filter list URL
                  type: string
              required:
                - name
                - url
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Add filter
      tags:
        - Adblock
  "/api/adblock/lists/{id}":
    delete:
      description: Remove an adblock filter list by id
      operationId: removeFilter
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Remove filter
      tags:
        - Adblock
  "/api/adblock/lists/{id}/enable":
    post:
      description: Enable or disable an adblock filter list by id
      operationId: enableFilter
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                enabled:
                  description: "true to enable, false to disable (default true)"
                  type: boolean
                id:
                  description: Filter list id
                  type: integer
              required:
                - id
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Enable filter
      tags:
        - Adblock
  "/api/adblock/lists/{id}/update":
    post:
      description: Trigger a refresh/download of a single filter list by id
      operationId: updateFilter
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                id:
                  description: Filter list id
                  type: integer
              required:
                - id
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Update filter
      tags:
        - Adblock
  /api/adblock/override:
    get:
      description: "Get a profile's adblock override (on/off/inherit) and the effective enabled state"
      operationId: getOverride
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          effective_enabled:
                            description: Effective enabled state for the profile
                            type: boolean
                          override:
                            description: "Override value (on, off, or inherit)"
                            type: string
                          profile:
                            description: Profile name
                            type: string
                        required:
                          - profile
                          - override
                          - effective_enabled
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get override
      tags:
        - Adblock
    post:
      description: "Set a profile's adblock override"
      operationId: setOverride
      requestBody:
        content:
          application/json:
            schema:
              properties:
                override:
                  description: "Per-profile adblock override; 'inherit' follows the global adblock_enabled setting"
                  enum:
                    - "on"
                    - "off"
                    - inherit
                  type: string
                profile:
                  description: Profile name
                  type: string
              required:
                - profile
                - override
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set override
      tags:
        - Adblock
  /api/adblock/update:
    post:
      description: Trigger a refresh/download of all enabled filter lists
      operationId: updateAll
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Update all
      tags:
        - Adblock
  /api/adblock/whitelist:
    get:
      description: List the hosts that are excepted from adblocking. Each entry also covers its subdomains.
      operationId: listWhitelist
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          count:
                            type: integer
                          hosts:
                            description: "Whitelisted hosts, sorted"
                            items:
                              type: string
                            type: array
                        required:
                          - count
                          - hosts
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List whitelist
      tags:
        - Adblock
    post:
      description: "Add or remove a host from the adblock site exceptions. Adding a host that is already excepted is a no-op, reported as changed=false."
      operationId: setWhitelist
      requestBody:
        content:
          application/json:
            schema:
              properties:
                host:
                  description: Host to except. A full URL is accepted and reduced to its host.
                  type: string
                whitelisted:
                  description: "true to except the host from adblocking, false to resume blocking on it"
                  type: boolean
              required:
                - host
                - whitelisted
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          changed:
                            description: False when the host was already in that state
                            type: boolean
                          host:
                            description: The normalized host that was written
                            type: string
                          whitelisted:
                            description: The state requested
                            type: boolean
                        required:
                          - host
                          - whitelisted
                          - changed
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set whitelist
      tags:
        - Adblock
  /api/adblock/whitelist/check:
    get:
      description: "Check whether a host is excepted from adblocking. Matching is subdomain-inclusive, so an entry for example.com reports true for www.example.com."
      operationId: getWhitelist
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          host:
                            description: The normalized host that was checked
                            type: string
                          whitelisted:
                            type: boolean
                        required:
                          - host
                          - whitelisted
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get whitelist
      tags:
        - Adblock
  /api/aliases:
    get:
      description: "List website aliases (short keyword -> URL shortcuts used in the omnibox)"
      operationId: listAliases
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          aliases:
                            description: "List of website aliases (id, alias, url)"
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                          count:
                            description: Number of aliases returned
                            type: integer
                        required:
                          - count
                          - aliases
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List aliases
      tags:
        - Search
    post:
      description: Create or update a website alias
      operationId: setAlias
      requestBody:
        content:
          application/json:
            schema:
              properties:
                alias:
                  description: Alias keyword
                  type: string
                url:
                  description: Destination URL
                  type: string
              required:
                - alias
                - url
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          alias:
                            description: Alias keyword that was set
                            type: string
                          url:
                            description: Destination URL the alias points to
                            type: string
                        required:
                          - alias
                          - url
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set alias
      tags:
        - Search
  "/api/aliases/{alias}":
    delete:
      description: Delete a website alias
      operationId: deleteAlias
      parameters:
        - in: path
          name: alias
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete alias
      tags:
        - Search
    get:
      description: Resolve a website alias to its URL
      operationId: resolveAlias
      parameters:
        - in: path
          name: alias
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          alias:
                            description: Alias keyword that was resolved
                            type: string
                          url:
                            description: Destination URL the alias resolves to
                            type: string
                        required:
                          - alias
                          - url
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Resolve alias
      tags:
        - Search
  /api/apps:
    get:
      description: List native app docks mounted in a layout (full JSON)
      operationId: listApps
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          apps:
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                          count:
                            type: integer
                          layout_uuid:
                            type: string
                        required:
                          - apps
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List apps
      tags:
        - App
    post:
      description: Mount a running native window as a dock in a layout
      operationId: mountApp
      requestBody:
        content:
          application/json:
            schema:
              properties:
                custom_title:
                  description: Custom dock title (optional)
                  type: string
                layout_uuid:
                  description: "Layout UUID (optional, defaults to first layout)"
                  type: string
                pid:
                  description: Specific process id to disambiguate (optional)
                  type: integer
                process_name:
                  description: Process/window name to mount
                  type: string
              required:
                - process_name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          layout_uuid:
                            type: string
                          process_name:
                            type: string
                          uuid:
                            type: string
                        required:
                          - uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Mount app
      tags:
        - App
  /api/apps/processes:
    get:
      description: "List visible top-level OS windows that can be mounted as native app docks, including process name, PID, window title and whether the process is a game"
      operationId: listProcesses
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            type: integer
                          processes:
                            items:
                              additionalProperties: false
                              properties:
                                is_game:
                                  description: True when the process is a game (known list or launched by a game launcher)
                                  type: boolean
                                pid:
                                  type: integer
                                process_name:
                                  type: string
                                title:
                                  type: string
                              required:
                                - process_name
                                - pid
                                - title
                                - is_game
                              type: object
                            type: array
                        required:
                          - count
                          - processes
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List processes
      tags:
        - App
  "/api/apps/{uuid}":
    delete:
      description: Dismount (unembed) a native app dock by UUID
      operationId: dismountApp
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Dismount app
      tags:
        - App
    get:
      description: Get full info for a mounted native app by UUID
      operationId: getApp
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          custom_title:
                            type: string
                          is_game:
                            description: True when the docked process is a game
                            type: boolean
                          is_locked:
                            type: boolean
                          is_running:
                            type: boolean
                          is_valid:
                            type: boolean
                          layout_uuid:
                            type: string
                          pid:
                            type: integer
                          process_name:
                            type: string
                          uuid:
                            type: string
                        required:
                          - uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get app
      tags:
        - App
  "/api/apps/{uuid}/click":
    post:
      description: "Click at a point inside a mounted native app, in the same pixel coordinates as native_app_screenshot. Best effort: some apps ignore synthesized clicks, so prefer native_app_uia_act when the element is in the control tree. Works while other windows cover MetaDock. The click is delivered asynchronously, so allow a moment before taking a screenshot to see its effect. Not available for games."
      operationId: clickApp
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                button:
                  description: Mouse button (default left)
                  enum:
                    - left
                    - right
                  type: string
                double:
                  description: Double-click (default false)
                  type: boolean
                uuid:
                  description: Native app UUID
                  type: string
                x:
                  description: X in window pixels
                  type: integer
                y:
                  description: Y in window pixels
                  type: integer
              required:
                - uuid
                - x
                - y
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          ok:
                            type: boolean
                          target_hwnd_class:
                            description: Window class that received the click
                            type: string
                          uuid:
                            type: string
                          x:
                            type: integer
                          y:
                            type: integer
                        required:
                          - uuid
                          - x
                          - y
                          - ok
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Click app
      tags:
        - App
  "/api/apps/{uuid}/key":
    post:
      description: "Press a single named key in a mounted native app, sent to whichever control has focus inside the app (focus one first with native_app_uia_act 'focus'). No modifier combinations such as Ctrl+S. Delivered asynchronously. Not available for games."
      operationId: pressAppKey
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                key:
                  enum:
                    - backspace
                    - delete
                    - down
                    - end
                    - enter
                    - escape
                    - home
                    - insert
                    - left
                    - page_down
                    - page_up
                    - right
                    - space
                    - tab
                    - up
                  type: string
                uuid:
                  description: Native app UUID
                  type: string
              required:
                - uuid
                - key
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          key:
                            type: string
                          ok:
                            type: boolean
                          target_hwnd_class:
                            description: Window class that received the key
                            type: string
                          uuid:
                            type: string
                        required:
                          - uuid
                          - key
                          - ok
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Press app key
      tags:
        - App
  "/api/apps/{uuid}/lock":
    post:
      description: Lock or unlock a native app dock
      operationId: lockApp
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                locked:
                  description: "true to lock, false to unlock (default true)"
                  type: boolean
                uuid:
                  description: Native app UUID
                  type: string
              required:
                - uuid
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          is_locked:
                            type: boolean
                          success:
                            type: boolean
                          uuid:
                            type: string
                        required:
                          - success
                          - uuid
                          - is_locked
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Lock app
      tags:
        - App
  "/api/apps/{uuid}/screenshot":
    get:
      description: "Capture the contents of a mounted native app window. At full size, image pixels match native_app_uia_tree rects and native_app_click points; when max_width shrinks the image, divide image coordinates by the returned scale to get window coordinates. Not available for games."
      operationId: screenshotApp
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          height:
                            description: Image height
                            type: integer
                          mime_type:
                            type: string
                          scale:
                            description: Image pixels per window pixel (1 at full size)
                            type: number
                          uuid:
                            type: string
                          width:
                            description: Image width
                            type: integer
                          window_height:
                            description: Window height in window pixels
                            type: integer
                          window_width:
                            description: Window width in window pixels
                            type: integer
                        required:
                          - uuid
                          - width
                          - height
                          - window_width
                          - window_height
                          - scale
                          - mime_type
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Screenshot app
      tags:
        - App
  "/api/apps/{uuid}/title":
    post:
      description: Set the custom title of a native app dock
      operationId: setAppTitle
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                title:
                  description: New custom title
                  type: string
                uuid:
                  description: Native app UUID
                  type: string
              required:
                - uuid
                - title
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          custom_title:
                            type: string
                          success:
                            type: boolean
                          uuid:
                            type: string
                        required:
                          - success
                          - uuid
                          - custom_title
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set app title
      tags:
        - App
  "/api/apps/{uuid}/type":
    post:
      description: "Type text into a mounted native app as keyboard character input, sent to whichever control has focus inside the app (focus one first with native_app_uia_act 'focus'). Unlike native_app_uia_act 'set_value', rich editors register it as real typing. Use native_app_press_key for Enter, Tab and other named keys. Delivered asynchronously. Not available for games."
      operationId: typeAppText
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                text:
                  maxLength: 2000
                  minLength: 1
                  type: string
                uuid:
                  description: Native app UUID
                  type: string
              required:
                - uuid
                - text
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          length:
                            type: integer
                          ok:
                            type: boolean
                          target_hwnd_class:
                            description: Window class that received the text
                            type: string
                          uuid:
                            type: string
                        required:
                          - uuid
                          - length
                          - ok
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Type app text
      tags:
        - App
  "/api/apps/{uuid}/uia":
    get:
      description: "Read the UI Automation control tree of a mounted native app: buttons, fields, menus and their ids, names, rects and supported actions. Includes the app's open dialogs and menus. Prefer this plus native_app_uia_act over clicking by pixel. Not available for games."
      operationId: uiaTree
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          node_count:
                            type: integer
                          truncated:
                            description: True when max_depth/max_nodes cut the tree short
                            type: boolean
                          uuid:
                            type: string
                          windows:
                            items:
                              additionalProperties: true
                              properties:
                                automation_id:
                                  type: string
                                children:
                                  items:
                                    type: object
                                  type: array
                                control_type:
                                  type: string
                                enabled:
                                  type: boolean
                                id:
                                  description: Element id for native_app_uia_act; changes when the app rebuilds its UI
                                  type: string
                                name:
                                  type: string
                                patterns:
                                  description: Actions this element supports
                                  items:
                                    type: string
                                  type: array
                                rect:
                                  description: "x, y, width, height in window pixels"
                                  type: object
                                value:
                                  description: "Current text value, when the element has one (truncated)"
                                  type: string
                              type: object
                            type: array
                        required:
                          - uuid
                          - truncated
                          - node_count
                          - windows
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Uia tree
      tags:
        - App
  "/api/apps/{uuid}/uia/act":
    post:
      description: "Perform an action on a UI Automation element of a mounted native app, by the id from native_app_uia_tree. Does not move the mouse or use the keyboard. set_value can bypass rich-text editors (chat boxes, web-based editors) so the app never sees the text; for those, use 'focus' here and then native_app_type. Not available for games."
      operationId: uiaAct
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                action:
                  enum:
                    - collapse
                    - expand
                    - focus
                    - invoke
                    - select
                    - set_value
                    - toggle
                  type: string
                element_id:
                  description: Element id from native_app_uia_tree
                  type: string
                uuid:
                  description: Native app UUID
                  type: string
                value:
                  description: Text to set (required for set_value)
                  type: string
              required:
                - uuid
                - element_id
                - action
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          action:
                            type: string
                          element_id:
                            type: string
                          ok:
                            type: boolean
                          uuid:
                            type: string
                        required:
                          - uuid
                          - element_id
                          - action
                          - ok
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Uia act
      tags:
        - App
  /api/bookmarks:
    get:
      description: "List bookmarks (id, name, url, category_id, tags). Optional profile filter. Supports limit + offset paging; response includes total."
      operationId: listBookmarks
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          bookmarks:
                            description: "Bookmarks (id, name, url, category_id, origin_profile_id, tags)"
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                          count:
                            type: integer
                        required:
                          - count
                          - bookmarks
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List bookmarks
      tags:
        - Bookmark
    post:
      description: Create a bookmark
      operationId: createBookmark
      requestBody:
        content:
          application/json:
            schema:
              properties:
                category_id:
                  description: Category id (optional)
                  type: integer
                name:
                  description: Bookmark title
                  type: string
                profile:
                  description: Profile name (optional)
                  type: string
                tags:
                  description: Tags (optional)
                  items:
                    type: string
                  type: array
                url:
                  description: Bookmark URL
                  type: string
              required:
                - name
                - url
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          id:
                            type: integer
                          name:
                            type: string
                          url:
                            type: string
                        required:
                          - id
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Create bookmark
      tags:
        - Bookmark
  /api/bookmarks/categories:
    get:
      description: "List bookmark categories (id, name, parent_id, color, path, depth)"
      operationId: listCategories
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          categories:
                            description: "Categories (id, name, parent_id, color, path, depth)"
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                          count:
                            type: integer
                        required:
                          - count
                          - categories
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List categories
      tags:
        - Bookmark
    post:
      description: "Create a bookmark category and return its id, which bookmark_create and bookmark_update take as category_id."
      operationId: createCategory
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Category name
                  type: string
                parent_id:
                  description: Parent category id to nest under (from bookmark_list_categories). Omit for a top-level category.
                  type: integer
                profile:
                  description: Profile name (optional)
                  type: string
              required:
                - name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          category_id:
                            description: Id of the created category
                            type: integer
                          name:
                            type: string
                          parent_id:
                            description: Present only when the category was nested
                            type: integer
                          success:
                            type: boolean
                        required:
                          - success
                          - category_id
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Create category
      tags:
        - Bookmark
  "/api/bookmarks/categories/{p1}":
    delete:
      description: Delete a bookmark category. Fails if it still holds bookmarks or child categories unless delete_contents is true.
      operationId: deleteCategory
      parameters:
        - in: path
          name: p1
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          category_id:
                            type: integer
                          deleted_contents:
                            description: Whether contents were deleted along with the category
                            type: boolean
                          success:
                            type: boolean
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete category
      tags:
        - Bookmark
    put:
      description: Rename a bookmark category
      operationId: renameCategory
      parameters:
        - in: path
          name: p1
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                category_id:
                  description: Category id (from bookmark_list_categories)
                  type: integer
                name:
                  description: New category name
                  type: string
              required:
                - category_id
                - name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          category_id:
                            type: integer
                          name:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Rename category
      tags:
        - Bookmark
  /api/bookmarks/tags:
    get:
      description: "List every distinct tag used across saved bookmarks, sorted alphabetically. Call this to discover valid values for the tags parameter on bookmark_create and bookmark_update. Unlike bookmark_list, this is not scoped to a profile - tags are shared across all bookmarks."
      operationId: listTags
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          count:
                            type: integer
                          tags:
                            description: "Distinct tag names, sorted"
                            items:
                              type: string
                            type: array
                        required:
                          - count
                          - tags
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List tags
      tags:
        - Bookmark
  "/api/bookmarks/{id}":
    delete:
      description: Delete a bookmark by id
      operationId: deleteBookmark
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete bookmark
      tags:
        - Bookmark
    put:
      description: "Update a bookmark's title, url, and/or category by id (unspecified fields keep their current value)"
      operationId: updateBookmark
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                category_id:
                  description: New category id (optional)
                  type: integer
                id:
                  description: Bookmark id
                  type: integer
                title:
                  description: New title (optional)
                  type: string
                url:
                  description: New URL (optional)
                  type: string
              required:
                - id
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Update bookmark
      tags:
        - Bookmark
  "/api/bookmarks/{id}/open":
    post:
      description: Open a bookmark in a new browser
      operationId: openBookmark
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                id:
                  description: Bookmark id
                  type: integer
                layout_uuid:
                  description: "Layout UUID (optional, defaults to first layout)"
                  type: string
                profile:
                  description: Profile to open under (optional)
                  type: string
              required:
                - id
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          bookmark_id:
                            type: integer
                          browser_uuid:
                            type: string
                          url:
                            type: string
                        required:
                          - bookmark_id
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Open bookmark
      tags:
        - Bookmark
  /api/browsers:
    get:
      description: List all browsers
      operationId: getAllBrowsers
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browsers:
                            description: Open browsers
                            items:
                              additionalProperties: true
                              properties:
                                custom_title:
                                  description: "Agent-set label, distinct from the document title"
                                  type: string
                                layout_uuid:
                                  type: string
                                profile:
                                  type: string
                                title:
                                  description: "Live document title, empty when the page has none"
                                  type: string
                                url:
                                  type: string
                                uuid:
                                  type: string
                              required:
                                - uuid
                              type: object
                            type: array
                          count:
                            description: Number of open browsers
                            type: integer
                        required:
                          - count
                          - browsers
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get all browsers
      tags:
        - Browser
  /api/browsers/close-all:
    post:
      description: Close all browsers
      operationId: closeAllBrowsers
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Close all browsers
      tags:
        - Browser
  /api/browsers/close-others:
    post:
      description: Close all browsers except one
      operationId: closeOtherBrowsers
      requestBody:
        content:
          application/json:
            schema:
              properties:
                keep_browser_uuid:
                  description: UUID of the browser to keep open (from browsers_list)
                  type: string
              required:
                - keep_browser_uuid
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Close other browsers
      tags:
        - Browser
  /api/browsers/close-others-in-layout:
    post:
      description: Close all browsers in a layout except one
      operationId: closeOtherBrowsersInDock
      requestBody:
        content:
          application/json:
            schema:
              properties:
                keep_browser_uuid:
                  description: UUID of the browser to keep open (from browsers_list)
                  type: string
                layout_uuid:
                  description: "Layout UUID to scope the close to (optional, defaults to first layout)"
                  type: string
              required:
                - keep_browser_uuid
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Close other browsers in dock
      tags:
        - Browser
  /api/browsers/create:
    post:
      description: Create a new browser instance
      operationId: createBrowser
      requestBody:
        content:
          application/json:
            schema:
              properties:
                auto_refresh_interval:
                  description: Auto-refresh interval in seconds (0 = off)
                  type: integer
                custom_title:
                  description: Custom title for browser tab
                  type: string
                disable_javascript:
                  description: Create the browser with JavaScript disabled
                  type: boolean
                headless:
                  description: "Create browser in headless mode (hidden, no UI - for automation)"
                  type: boolean
                hide:
                  description: "Create the browser blanked: its dock stays in the layout, titled \"Hidden window\", with the page covered and audio muted (the privacy hide). To keep a browser out of the layout entirely use headless."
                  type: boolean
                layout_uuid:
                  description: "Layout UUID to create browser in (optional, defaults to first layout)"
                  type: string
                lock:
                  description: Lock the dock against moving or closing
                  type: boolean
                mute:
                  description: Start the browser muted
                  type: boolean
                profile:
                  description: Browser profile name
                  type: string
                show_extended_titlebar_profile:
                  description: Show the profile name in the dock titlebar
                  type: boolean
                show_extended_titlebar_proxy:
                  description: Show the proxy in the dock titlebar
                  type: boolean
                toolbar_visible:
                  description: Show the browser toolbar
                  type: boolean
                url:
                  description: Initial URL to navigate to
                  type: string
                zoom_factor:
                  description: "Initial zoom factor (1.0 = 100%)"
                  type: number
              required:
                - url
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Create browser
      tags:
        - Browser
  /api/browsers/create-multiple:
    post:
      description: Create multiple browsers with different configurations
      operationId: createMultipleBrowsers
      requestBody:
        content:
          application/json:
            schema:
              properties:
                browsers:
                  description: Array of browser configurations
                  items:
                    properties:
                      custom_title:
                        description: Custom title for browser tab
                        type: string
                      headless:
                        description: "Create browser in headless mode (hidden, no UI - for automation)"
                        type: boolean
                      layout_uuid:
                        description: "Layout UUID to create browser in (optional, defaults to first layout)"
                        type: string
                      mute:
                        description: Mute audio
                        type: boolean
                      profile:
                        description: Browser profile name
                        type: string
                      proxy:
                        description: Proxy settings
                        type: string
                      toolbar_visible:
                        description: Show toolbar
                        type: boolean
                      url:
                        description: Initial URL to navigate to
                        type: string
                      zoom_factor:
                        description: "Zoom factor (1.0 = 100%)"
                        type: number
                    required:
                      - url
                    type: object
                  type: array
              required:
                - browsers
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Create multiple browsers
      tags:
        - Browser
  /api/browsers/execute-all:
    post:
      description: "Execute JavaScript on all browsers and return each browser's result"
      operationId: executeJavaScriptOnAll
      requestBody:
        content:
          application/json:
            schema:
              properties:
                script:
                  description: JavaScript code to execute on all browsers
                  type: string
                timeout_ms:
                  description: "Max time to wait for each browser's result (default 5000)"
                  type: integer
              required:
                - script
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browsers_affected:
                            description: Number of browsers the script was dispatched to
                            type: integer
                          results:
                            additionalProperties:
                              type: string
                            description: Map of browser UUID to its JavaScript result
                            type: object
                          timed_out:
                            description: UUIDs of browsers that did not return a result in time
                            items:
                              type: string
                            type: array
                        required:
                          - browsers_affected
                          - results
                          - timed_out
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute java script on all
      tags:
        - Browser
  /api/browsers/gpu-presets:
    get:
      description: "List the GPU presets browser_set_fingerprint_webgl accepts as gpu_preset, with a description of each."
      operationId: getGpuPresets
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of presets returned
                            type: integer
                          presets:
                            description: Available GPU presets
                            items:
                              additionalProperties: true
                              properties:
                                description:
                                  type: string
                                name:
                                  description: Value to pass as gpu_preset
                                  type: string
                              required:
                                - name
                              type: object
                            type: array
                        required:
                          - count
                          - presets
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get gpu presets
      tags:
        - Browser
  /api/browsers/navigate-all:
    post:
      description: Navigate all browsers to a URL
      operationId: navigateAll
      requestBody:
        content:
          application/json:
            schema:
              properties:
                url:
                  description: URL to navigate all browsers to
                  type: string
              required:
                - url
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Navigate all
      tags:
        - Browser
  /api/browsers/reload-all:
    post:
      description: Reload all browsers
      operationId: reloadAll
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Reload all
      tags:
        - Browser
  /api/browsers/urls:
    get:
      description: "Get every open browser's uuid, url and title (copy all URLs)"
      operationId: getAllBrowserUrls
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browsers:
                            description: "Open browsers (uuid, url, title)"
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                          count:
                            description: Number of open browsers
                            type: integer
                        required:
                          - count
                          - browsers
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get all browser urls
      tags:
        - Browser
  "/api/browsers/{uuid}/back":
    post:
      description: Navigate browser back in history
      operationId: goBack
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Go back
      tags:
        - Browser
  "/api/browsers/{uuid}/batch":
    post:
      description: Execute multiple browser operations in sequence on one or multiple browsers (100 operations per browser max)
      operationId: executeBatch
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                browsers:
                  description: Array of browser configurations for multi-browser operations
                  items:
                    properties:
                      browser_uuid:
                        description: Browser UUID
                        type: string
                      operations:
                        description: Operations for this browser (max 100 per browser)
                        items:
                          properties:
                            params:
                              description: Tool parameters
                              type: object
                            tool:
                              description: Tool name
                              type: string
                          required:
                            - tool
                            - params
                          type: object
                        type: array
                    required:
                      - browser_uuid
                      - operations
                    type: object
                  type: array
                continue_on_error:
                  description: "Continue executing if an operation fails (default: false)"
                  type: boolean
                operations:
                  description: Operations for single browser mode (max 100 per browser)
                  items:
                    properties:
                      params:
                        description: Parameters for the tool
                        type: object
                      tool:
                        description: "Tool name (e.g., 'navigate', 'click', 'type')"
                        type: string
                    required:
                      - tool
                      - params
                    type: object
                  type: array
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        description: "Single-browser mode reports browser_uuid and operations; multi-browser mode reports browsers, each with its own operations."
                        properties:
                          browser_uuid:
                            description: Present in single-browser mode only
                            type: string
                          browsers:
                            description: Per-browser results. Present in multi-browser mode only.
                            items:
                              additionalProperties: true
                              properties:
                                browser_index:
                                  description: Position of this browser in the submitted array
                                  type: integer
                                browser_uuid:
                                  type: string
                                failure_count:
                                  type: integer
                                operations:
                                  description: Per-operation results for this browser
                                  items:
                                    additionalProperties: true
                                    type: object
                                  type: array
                                success_count:
                                  type: integer
                                total_operations:
                                  type: integer
                              required:
                                - browser_uuid
                                - operations
                              type: object
                            type: array
                          continue_on_error:
                            description: Whether the batch was told to keep going past a failure
                            type: boolean
                          failed:
                            type: integer
                          operations:
                            description: "Per-operation results, in submission order. Present in single-browser mode only."
                            items:
                              additionalProperties: true
                              properties:
                                bytes:
                                  description: Encoded size of an image result
                                  type: integer
                                error:
                                  description: Failure message. Present only when success is false.
                                  type: string
                                mime_type:
                                  description: Present for image results
                                  type: string
                                operation_index:
                                  type: integer
                                structuredContent:
                                  additionalProperties: true
                                  description: "The sub-tool's own payload, whole and untruncated. Present when that tool emits one."
                                  type: object
                                success:
                                  type: boolean
                                text:
                                  description: "The sub-tool's text output, untruncated. Present when it emits no structured payload."
                                  type: string
                                tool:
                                  type: string
                                type:
                                  description: Set to image for screenshot operations
                                  type: string
                              required:
                                - operation_index
                                - tool
                                - success
                              type: object
                            type: array
                          screenshots:
                            description: "Number of image results. Present only when the batch captured any; the images themselves travel as content items, not in this payload."
                            type: integer
                          successful:
                            type: integer
                          total_browsers:
                            description: Present in multi-browser mode only
                            type: integer
                          total_operations:
                            description: Operations actually attempted
                            type: integer
                        required:
                          - total_operations
                          - successful
                          - failed
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute batch
      tags:
        - Browser
  "/api/browsers/{uuid}/cache/clear":
    post:
      description: "Clear this browser's HTTP cache (CDP Network.clearBrowserCache). Does not touch cookies."
      operationId: executeMcpAction19
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/clear":
    post:
      description: Clear an input field
      operationId: clearInput
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                selector:
                  description: CSS selector of input element
                  type: string
                timeout_ms:
                  description: "Timeout in milliseconds (default: 5000)"
                  type: number
              required:
                - selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear input
      tags:
        - Browser
  "/api/browsers/{uuid}/click":
    post:
      description: Click an element by CSS selector
      operationId: clickElement
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                selector:
                  description: CSS selector of element to click
                  type: string
                timeout_ms:
                  description: "Timeout in milliseconds (default: 5000)"
                  type: number
              required:
                - selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Click element
      tags:
        - Browser
  "/api/browsers/{uuid}/click-at":
    post:
      description: Click at raw viewport pixel coordinates using a real (trusted) mouse event. Use when you have coordinates rather than a CSS selector (e.g. from a screenshot or element box).
      operationId: executeMcpAction20
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                x:
                  description: X coordinate in CSS/viewport pixels
                  type: integer
                y:
                  description: Y coordinate in CSS/viewport pixels
                  type: integer
              required:
                - x
                - y
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/close":
    post:
      description: Close a browser instance
      operationId: closeBrowser
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Close browser
      tags:
        - Browser
  "/api/browsers/{uuid}/console":
    get:
      description: Get console messages from the browser
      operationId: getConsoleMessages
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          count:
                            description: Number of captured messages
                            type: integer
                          messages:
                            description: "Captured console messages, oldest first, as recorded text. Severity, source file and line number are not currently captured."
                            items:
                              type: string
                            type: array
                        required:
                          - browser_uuid
                          - count
                          - messages
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get console messages
      tags:
        - Browser
  "/api/browsers/{uuid}/console/clear":
    post:
      description: Clear console messages for the browser
      operationId: clearConsoleMessages
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear console messages
      tags:
        - Browser
  "/api/browsers/{uuid}/cookie":
    get:
      description: Get a cookie value from the browser
      operationId: getCookie
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          found:
                            description: False when no such cookie exists. A cookie set to an empty value also reports false.
                            type: boolean
                          name:
                            description: The cookie that was requested
                            type: string
                          value:
                            description: "Cookie value, empty when not found. Use browser_get_all_cookies for domain, path and expiry."
                            type: string
                        required:
                          - browser_uuid
                          - name
                          - found
                          - value
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get cookie
      tags:
        - Browser
    post:
      description: Set a cookie for the browser
      operationId: setCookie
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                domain:
                  description: Cookie domain (optional)
                  type: string
                name:
                  description: Cookie name
                  type: string
                value:
                  description: Cookie value
                  type: string
              required:
                - name
                - value
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set cookie
      tags:
        - Browser
  "/api/browsers/{uuid}/cookie/{name}":
    delete:
      description: Delete a specific cookie from the browser
      operationId: deleteCookie
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
        - in: path
          name: name
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete cookie
      tags:
        - Browser
  "/api/browsers/{uuid}/cookies":
    get:
      description: Get all cookies for the browser
      operationId: getAllCookies
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          cookies:
                            description: "Full cookie records, not just name and value"
                            items:
                              additionalProperties: true
                              properties:
                                name:
                                  type: string
                                value:
                                  type: string
                              required:
                                - name
                              type: object
                            type: array
                          count:
                            description: Number of cookies returned
                            type: integer
                        required:
                          - browser_uuid
                          - count
                          - cookies
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get all cookies
      tags:
        - Browser
  "/api/browsers/{uuid}/cookies/clear":
    post:
      description: Clear all cookies for the browser
      operationId: clearCookies
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear cookies
      tags:
        - Browser
  "/api/browsers/{uuid}/device":
    get:
      description: "Get which device browser_emulate_device is currently applying, or null when none is applied. Recorded when emulation is successfully applied rather than inferred from the user agent, and reported as the resolved catalogue name."
      operationId: getEmulatedDevice
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          browser_uuid:
                            type: string
                          device:
                            description: null when no device emulation is applied
                            enum:
                              - mobile
                              - tablet
                              - iphone15
                              - ipadpro
                              - pixel8
                              - null
                            type:
                              - string
                              - "null"
                        required:
                          - browser_uuid
                          - device
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get emulated device
      tags:
        - Browser
    post:
      description: "Emulate a device: viewport, device pixel ratio, touch support and user agent (with matching client hints where the device is Chromium-based). Applies to the live page and survives navigation."
      operationId: emulateDevice
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                device_name:
                  description: "Device to emulate. Spaces, hyphens and underscores are ignored, so 'iPhone 15' and 'iphone15' are the same. mobile: iPhone-class, 375x812 @3x. tablet: iPad-class, 768x1024 @2x. iphone15: 393x852 @3x. ipadpro: 1024x1366 @2x. pixel8: 412x915 @2.625x, Android/Chrome with client hints."
                  enum:
                    - mobile
                    - tablet
                    - iphone15
                    - ipadpro
                    - pixel8
                  type: string
              required:
                - device_name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          browser_uuid:
                            type: string
                          device:
                            description: Resolved catalogue name
                            type: string
                          device_name:
                            type: string
                          device_pixel_ratio:
                            type: number
                          height:
                            type: integer
                          max_touch_points:
                            type: integer
                          mobile:
                            type: boolean
                          platform:
                            type: string
                          success:
                            type: boolean
                          user_agent:
                            type: string
                          width:
                            type: integer
                        required:
                          - browser_uuid
                          - success
                          - device_name
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Emulate device
      tags:
        - Browser
  "/api/browsers/{uuid}/device/clear":
    post:
      description: "Clear device emulation: drop the viewport, device pixel ratio, touch and user-agent overrides and restore the browser's own identity."
      operationId: clearDeviceEmulation
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear device emulation
      tags:
        - Browser
  "/api/browsers/{uuid}/devtools/close":
    post:
      description: Close developer tools for the browser
      operationId: closeDevTools
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Close dev tools
      tags:
        - Browser
  "/api/browsers/{uuid}/devtools/enable":
    post:
      description: Enable or disable developer tools for the browser
      operationId: enableDevTools
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                enable:
                  description: "Enable or disable DevTools (default: true)"
                  type: boolean
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Enable dev tools
      tags:
        - Browser
  "/api/browsers/{uuid}/devtools/open":
    post:
      description: Open developer tools for the browser
      operationId: openDevTools
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Open dev tools
      tags:
        - Browser
  "/api/browsers/{uuid}/dialog-policy":
    get:
      description: "Get how a browser answers JavaScript dialogs. Readable counterpart to browser_set_dialog_policy. For the last dialog that was actually captured, use browser_get_last_dialog."
      operationId: getDialogPolicy
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          browser_uuid:
                            type: string
                          policy:
                            enum:
                              - default
                              - accept
                              - dismiss
                            type: string
                        required:
                          - browser_uuid
                          - policy
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get dialog policy
      tags:
        - Browser
    post:
      description: "Control how this browser handles JavaScript dialogs (alert/confirm/prompt/beforeunload). 'default' shows the native dialog (which blocks automation); 'accept' auto-accepts (OK / prompt returns prompt_text); 'dismiss' auto-cancels. IMPORTANT: this takes effect from the NEXT navigation/reload, so set the policy BEFORE navigating to (or reloading) the page that may pop dialogs. Handles page-initiated dialogs (load handlers, timers, events, beforeunload); use browser_get_last_dialog to see what was intercepted."
      operationId: executeMcpActionPost
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                policy:
                  description: How to handle dialogs
                  enum:
                    - default
                    - accept
                    - dismiss
                  type: string
                prompt_text:
                  description: "Text returned for prompt() when policy is 'accept' (optional)"
                  type: string
              required:
                - policy
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/drag":
    post:
      description: "Drag from one element to another using real (trusted) mouse events: press at the source center, move in steps to the target center, release. Works for sliders, sortable lists, and canvas/custom drag handlers."
      operationId: executeMcpAction14
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                source_selector:
                  description: CSS selector of the element to drag from
                  type: string
                target_selector:
                  description: CSS selector of the element to drop onto
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - source_selector
                - target_selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/element/attribute":
    post:
      description: Get an attribute value of an element by CSS selector
      operationId: getElementAttribute
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                attribute:
                  description: Attribute name to get
                  type: string
                selector:
                  description: CSS selector of the element
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - selector
                - attribute
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          attribute:
                            description: The attribute that was requested
                            type: string
                          browser_uuid:
                            type: string
                          found:
                            description: Whether the element was found. Null value with found true means the element exists but carries no such attribute.
                            type: boolean
                          selector:
                            type: string
                          value:
                            description: "Attribute value, null when the element does not carry it. Absent when found is false."
                            type:
                              - string
                              - "null"
                        required:
                          - browser_uuid
                          - selector
                          - attribute
                          - found
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get element attribute
      tags:
        - Browser
  "/api/browsers/{uuid}/element/box":
    post:
      description: "Get an element's bounding box (x/y/width/height/top/left/bottom/right) and key computed styles (display, visibility, opacity, font-size, color, background, z-index, position). Useful for spatial reasoning."
      operationId: executeMcpAction7
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                selector:
                  description: CSS selector of the element
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          backgroundColor:
                            type: string
                          bottom:
                            type: number
                          browser_uuid:
                            type: string
                          color:
                            type: string
                          display:
                            description: Computed style value
                            type: string
                          fontSize:
                            type: string
                          found:
                            description: False when the selector matched nothing. The geometry and style fields are absent in that case.
                            type: boolean
                          height:
                            type: number
                          left:
                            type: number
                          opacity:
                            type: string
                          position:
                            type: string
                          right:
                            type: number
                          selector:
                            type: string
                          top:
                            type: number
                          visibility:
                            type: string
                          width:
                            type: number
                          x:
                            description: "Viewport-relative position, in CSS pixels"
                            type: number
                          y:
                            type: number
                          zIndex:
                            type: string
                        required:
                          - browser_uuid
                          - selector
                          - found
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/element/text":
    post:
      description: Get the text content of an element by CSS selector
      operationId: getElementText
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                selector:
                  description: CSS selector of the element
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          found:
                            description: False when the selector matched nothing
                            type: boolean
                          selector:
                            type: string
                          text:
                            description: "The element's text content. Absent when found is false."
                            type: string
                        required:
                          - browser_uuid
                          - selector
                          - found
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get element text
      tags:
        - Browser
  "/api/browsers/{uuid}/element/visible":
    post:
      description: Check if an element is visible on the page
      operationId: isElementVisible
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                selector:
                  description: CSS selector of the element
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          exists:
                            description: Whether the selector matched an element
                            type: boolean
                          rect:
                            additionalProperties: true
                            description: Viewport-relative geometry in CSS pixels. Present only when the element exists.
                            properties:
                              height:
                                type: number
                              left:
                                type: number
                              top:
                                type: number
                              width:
                                type: number
                            type: object
                          selector:
                            type: string
                          visible:
                            description: Whether the matched element is actually visible
                            type: boolean
                        required:
                          - browser_uuid
                          - selector
                          - exists
                          - visible
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Is element visible
      tags:
        - Browser
  "/api/browsers/{uuid}/execute":
    post:
      description: "Execute JavaScript code in browser. The value of the last expression is returned; a returned promise is awaited and top-level await works. A thrown exception, or a promise still pending at timeout_ms, is reported as an error."
      operationId: executeJavaScript
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                script:
                  description: JavaScript code to execute
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, including any awaited promise, in ms. Default 5000."
                  type: integer
              required:
                - script
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          result:
                            description: "The value the script evaluated to, decoded from its JSON form. Absent on timeout."
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute java script
      tags:
        - Browser
  "/api/browsers/{uuid}/execute-with-result":
    post:
      description: "Execute JavaScript code in browser. The value of the last expression is returned; a returned promise is awaited and top-level await works. A thrown exception, or a promise still pending at timeout_ms, is reported as an error."
      operationId: executeJavaScriptWithResult
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                script:
                  description: JavaScript code to execute
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, including any awaited promise, in ms. Default 5000."
                  type: integer
              required:
                - script
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          result:
                            description: "The value the script evaluated to, decoded from its JSON form. Absent on timeout."
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute java script with result
      tags:
        - Browser
  "/api/browsers/{uuid}/extract":
    post:
      description: "Structured, schema-driven extraction. Provide a 'fields' map of {fieldName: {selector, attr, all}} and get back JSON. attr: 'text' (default), 'html', or an attribute name like 'href'. all:true returns an array of matches."
      operationId: extractContent
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                fields:
                  description: "Map of fieldName -> {selector, attr, all}"
                  type: object
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - fields
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          data:
                            additionalProperties: true
                            description: "One key per entry in the requested fields map. A field with all:true yields an array of matches, otherwise a single value, and null when nothing matched."
                            type: object
                        required:
                          - data
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Extract content
      tags:
        - Browser
  "/api/browsers/{uuid}/find":
    post:
      description: Find visible interactive elements whose role or accessible name matches a text query. Returns matches with CSS selectors usable by browser_click/browser_set_value.
      operationId: executeMcpAction4
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                frame:
                  description: Optional CSS selector for a same-origin iframe to search inside
                  type: string
                limit:
                  description: Max matches to return (0 = no limit)
                  type: integer
                query:
                  description: Text to match against element name/role
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - query
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of matches returned (see the limit parameter)
                            type: integer
                          matches:
                            description: Visible interactive elements whose role or accessible name matched the query
                            items:
                              additionalProperties: true
                              properties:
                                checked:
                                  description: Present only for checkboxes and radios
                                  type: boolean
                                disabled:
                                  description: Present only when the element is disabled
                                  type: boolean
                                href:
                                  description: Present only for links
                                  type: string
                                name:
                                  description: Accessible name
                                  type: string
                                role:
                                  description: "Explicit role attribute, or one derived from the tag and input type"
                                  type: string
                                selector:
                                  description: CSS selector usable by browser_click and browser_set_value
                                  type: string
                              required:
                                - role
                                - name
                                - selector
                              type: object
                            type: array
                        required:
                          - matches
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/fingerprint":
    get:
      description: Get current fingerprint protection configuration for a browser
      operationId: getFingerprint
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          audio:
                            additionalProperties: true
                            type: object
                          canvas:
                            additionalProperties: true
                            type: object
                          client_rects:
                            additionalProperties: true
                            type: object
                          device:
                            additionalProperties: true
                            type: object
                          device_override:
                            additionalProperties: true
                            type: object
                          enabled:
                            type: boolean
                          font:
                            additionalProperties: true
                            type: object
                          identity:
                            additionalProperties: true
                            type: object
                          media_prefs:
                            additionalProperties: true
                            type: object
                          navigator:
                            additionalProperties: true
                            type: object
                          network:
                            additionalProperties: true
                            type: object
                          permissions:
                            additionalProperties: true
                            type: object
                          platform:
                            type: string
                          preset:
                            type: string
                          randomize_on_refresh:
                            type: boolean
                          seed:
                            type: string
                          timing:
                            additionalProperties: true
                            type: object
                          webgl:
                            additionalProperties: true
                            type: object
                        required:
                          - enabled
                          - preset
                          - platform
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get fingerprint
      tags:
        - Browser
    post:
      description: "Set fingerprint protection config for a browser. Supports canvas, WebGL, and audio protection with per-profile deterministic fingerprints or random-per-refresh mode. REPLACES the whole config: any section left out of the body is reset to its default, not kept as it was, so a partial body silently clears identity, network, device, timing and permissions. To change one section and leave the rest alone, use browser_set_fingerprint_canvas, browser_set_fingerprint_webgl or browser_set_fingerprint_audio, which preserve everything they do not name."
      operationId: setFingerprint
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                audio:
                  description: Audio fingerprint protection config
                  properties:
                    enabled:
                      type: boolean
                    noise_level:
                      enum:
                        - subtle
                        - moderate
                        - aggressive
                      type: string
                  type: object
                canvas:
                  description: Canvas fingerprint protection config
                  properties:
                    enabled:
                      type: boolean
                    noise_level:
                      enum:
                        - subtle
                        - moderate
                        - aggressive
                      type: string
                  type: object
                client_rects:
                  additionalProperties: true
                  description: getClientRects/getBoundingClientRect noise config
                  type: object
                device:
                  additionalProperties: true
                  description: "Device surfaces: battery, plugins, screen orientation, media capabilities, speech voices"
                  type: object
                device_override:
                  additionalProperties: true
                  description: Explicit device value pins overriding the sampled persona
                  type: object
                enabled:
                  description: Enable fingerprint protection
                  type: boolean
                font:
                  additionalProperties: true
                  description: Font enumeration/metrics protection config
                  type: object
                identity:
                  additionalProperties: true
                  description: "User-Agent identity: enabled, follow_profile_ua, override_ua"
                  type: object
                media_prefs:
                  additionalProperties: true
                  description: prefers-color-scheme / reduced-motion / contrast overrides
                  type: object
                navigator:
                  additionalProperties: true
                  description: "navigator surface protection config (hardwareConcurrency, deviceMemory, ...)"
                  type: object
                network:
                  additionalProperties: true
                  description: "Network surfaces: webrtc_enabled, webrtc_mode (disable|strip-host|strip-srflx|proxy-only), connection_*, accept_language_*"
                  type: object
                permissions:
                  additionalProperties: true
                  description: "Permissions API answers: camera_state, microphone_state, geolocation_state, notifications_state"
                  type: object
                platform:
                  description: Claimed OS for the persona
                  enum:
                    - windows
                    - macos
                    - linux
                  type: string
                preset:
                  description: "Preset: none, balanced, maximum, custom"
                  enum:
                    - none
                    - balanced
                    - maximum
                    - custom
                  type: string
                randomize_on_refresh:
                  description: Generate new random fingerprint on every page load
                  type: boolean
                seed:
                  description: Custom seed (blank = auto from profile)
                  type: string
                timing:
                  additionalProperties: true
                  description: "Clock quantization: clock_quantization_enabled, quantization_ms"
                  type: object
                webgl:
                  description: WebGL fingerprint protection config
                  properties:
                    enabled:
                      type: boolean
                    gpu_preset:
                      description: "GPU profile: Intel HD 630, NVIDIA GTX 1060, AMD RX 580, Apple M1, Generic Integrated, Custom"
                      type: string
                  type: object
              required:
                - enabled
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set fingerprint
      tags:
        - Browser
  "/api/browsers/{uuid}/fingerprint/audio":
    post:
      description: Configure audio fingerprint protection for a browser
      operationId: setFingerprintAudio
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                enabled:
                  description: Enable audio fingerprint protection
                  type: boolean
                noise_level:
                  description: "Noise level: subtle, moderate, aggressive. Left unchanged when omitted."
                  enum:
                    - subtle
                    - moderate
                    - aggressive
                  type: string
              required:
                - enabled
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set fingerprint audio
      tags:
        - Browser
  "/api/browsers/{uuid}/fingerprint/canvas":
    post:
      description: Configure canvas fingerprint protection for a browser
      operationId: setFingerprintCanvas
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                enabled:
                  description: Enable canvas fingerprint protection
                  type: boolean
                noise_level:
                  description: "Noise level: subtle, moderate, aggressive. Left unchanged when omitted."
                  enum:
                    - subtle
                    - moderate
                    - aggressive
                  type: string
              required:
                - enabled
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set fingerprint canvas
      tags:
        - Browser
  "/api/browsers/{uuid}/fingerprint/clear":
    post:
      description: Disable all fingerprint protection for a browser
      operationId: clearFingerprint
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear fingerprint
      tags:
        - Browser
  "/api/browsers/{uuid}/fingerprint/webgl":
    post:
      description: Configure WebGL fingerprint protection for a browser
      operationId: setFingerprintWebGL
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                custom_profile:
                  description: "Custom GPU profile fields, used when gpu_preset is Custom"
                  type: object
                enabled:
                  description: Enable WebGL fingerprint protection
                  type: boolean
                gpu_preset:
                  description: "GPU profile to emulate. Use browser_list_gpu_presets for the full set, or Custom with custom_profile. Left unchanged when omitted."
                  type: string
              required:
                - enabled
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set fingerprint web GL
      tags:
        - Browser
  "/api/browsers/{uuid}/forms":
    post:
      description: "Enumerate forms and their fields {name, id, type, label, placeholder, required, options, selector}. Lets you fill forms by known field names instead of guessing selectors. Password/sensitive values are never returned."
      operationId: executeMcpAction2
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                frame:
                  description: Optional CSS selector for a same-origin iframe to read inside
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of forms returned
                            type: integer
                          forms:
                            description: Forms in document order
                            items:
                              additionalProperties: true
                              properties:
                                action:
                                  type:
                                    - string
                                    - "null"
                                fields:
                                  description: Visible fields. Hidden inputs are omitted.
                                  items:
                                    additionalProperties: true
                                    properties:
                                      id:
                                        type:
                                          - string
                                          - "null"
                                      label:
                                        description: "Associated label text, truncated to 200 characters"
                                        type: string
                                      name:
                                        type:
                                          - string
                                          - "null"
                                      options:
                                        description: Present only for select fields. Capped at 50 options.
                                        items:
                                          additionalProperties: true
                                          properties:
                                            label:
                                              type: string
                                            value:
                                              type: string
                                          type: object
                                        type: array
                                      placeholder:
                                        type:
                                          - string
                                          - "null"
                                      required:
                                        type: boolean
                                      selector:
                                        description: CSS selector usable by browser_set_value
                                        type: string
                                      type:
                                        description: "Input type, or the tag name for select and textarea"
                                        type: string
                                      value:
                                        description: "Current value, truncated to 200 characters. Omitted entirely for password and other sensitive fields."
                                        type: string
                                    required:
                                      - type
                                      - selector
                                      - required
                                    type: object
                                  type: array
                                id:
                                  type:
                                    - string
                                    - "null"
                                index:
                                  description: Position of the form in the document
                                  type: integer
                                method:
                                  description: "Lowercased submit method, defaulting to get"
                                  type: string
                                name:
                                  type:
                                    - string
                                    - "null"
                                selector:
                                  description: CSS selector for the form
                                  type: string
                              required:
                                - index
                                - selector
                                - method
                                - fields
                              type: object
                            type: array
                        required:
                          - forms
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/forward":
    post:
      description: Navigate browser forward in history
      operationId: goForward
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Go forward
      tags:
        - Browser
  "/api/browsers/{uuid}/geo-override":
    get:
      description: "Get the geolocation, timezone and locale override configuration for a browser, including the last resolved result in auto mode."
      operationId: getGeoOverride
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get geo override
      tags:
        - Browser
    post:
      description: "Set the geolocation, timezone and locale override for a browser. In auto mode the values are resolved from the profile's proxy IP. This is the persisted per-profile configuration - browser_set_geolocation is a different thing, a raw lat/lng CDP override that is not stored and applies no timezone. Requires fingerprint protection to be enabled on the same profile."
      operationId: setGeoOverride
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                enabled:
                  description: Enable geolocation override
                  type: boolean
                manual_accuracy:
                  description: Manual mode accuracy in metres
                  type: number
                manual_latitude:
                  description: Manual mode latitude
                  type: number
                manual_locale:
                  description: "Manual mode locale, e.g. en-GB. Only used when no Accept-Language is configured"
                  type: string
                manual_longitude:
                  description: Manual mode longitude
                  type: number
                manual_timezone:
                  description: "Manual mode IANA timezone, e.g. Europe/London"
                  type: string
                mode:
                  description: "auto = resolve from the proxy IP, manual = use the values below"
                  enum:
                    - auto
                    - manual
                  type: string
              required:
                - enabled
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set geo override
      tags:
        - Browser
  "/api/browsers/{uuid}/geo-override/clear":
    post:
      description: "Disable the geolocation, timezone and locale override for a browser and release the overrides."
      operationId: clearGeoOverride
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear geo override
      tags:
        - Browser
  "/api/browsers/{uuid}/geolocation":
    post:
      description: Set geolocation for the browser
      operationId: setGeolocation
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                latitude:
                  description: Latitude coordinate
                  type: number
                longitude:
                  description: Longitude coordinate
                  type: number
              required:
                - latitude
                - longitude
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set geolocation
      tags:
        - Browser
  "/api/browsers/{uuid}/geolocation/clear":
    post:
      description: Clear geolocation override for the browser
      operationId: clearGeolocation
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear geolocation
      tags:
        - Browser
  "/api/browsers/{uuid}/headers":
    get:
      description: List the custom request headers currently applied to a browser. Readable counterpart to browser_set_header and browser_remove_header. These are session-only and do not survive a restart.
      operationId: getCustomHeaders
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          browser_uuid:
                            type: string
                          count:
                            type: integer
                          headers:
                            additionalProperties:
                              type: string
                            description: Header name to value
                            type: object
                        required:
                          - browser_uuid
                          - headers
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get custom headers
      tags:
        - Browser
    post:
      description: "Add or override a custom HTTP request header sent by this browser on subsequent requests (e.g. Authorization, X-* headers)."
      operationId: executeMcpAction
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Header name
                  type: string
                value:
                  description: Header value
                  type: string
              required:
                - name
                - value
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/headers/remove":
    post:
      description: Remove a previously-set custom request header from this browser.
      operationId: executeMcpAction18
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Header name to remove
                  type: string
              required:
                - name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/headless":
    post:
      description: "Toggle headless mode for a browser. When switching from headless to visible, the browser is automatically docked into the layout."
      operationId: setHeadless
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                headless:
                  description: "true = headless (hidden, no UI), false = visible (docked into layout)"
                  type: boolean
              required:
                - headless
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set headless
      tags:
        - Browser
  "/api/browsers/{uuid}/history/go":
    post:
      description: "Move within the browser's session history by a relative delta (e.g. -1 = back, 1 = forward, -2 = back twice)."
      operationId: executeMcpAction6
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                delta:
                  description: "Relative history offset (negative = back, positive = forward)"
                  type: integer
              required:
                - delta
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/hover":
    post:
      description: "Hover the pointer over an element (dispatches pointer/mouse enter+over+move events), triggering hover menus and tooltips. Scrolls the element into view first."
      operationId: executeMcpAction9
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                selector:
                  description: CSS selector of the element to hover
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/inject/script":
    post:
      description: Inject a script URL into the page
      operationId: addScriptToDocument
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                script_url:
                  description: URL of script to inject
                  type: string
              required:
                - script_url
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Add script to document
      tags:
        - Browser
  "/api/browsers/{uuid}/inject/style":
    post:
      description: Inject CSS into the page
      operationId: addStyleToDocument
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                css:
                  description: CSS code to inject
                  type: string
              required:
                - css
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Add style to document
      tags:
        - Browser
  "/api/browsers/{uuid}/last-dialog":
    post:
      description: "Get the most recent JavaScript dialog captured for this browser (only captured while a non-default dialog policy is active): {policy, kind, message, uri, captured}."
      operationId: executeMcpAction22
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          captured:
                            description: Whether a dialog has been captured for this browser
                            type: boolean
                          kind:
                            description: "Dialog kind, empty when nothing has been captured"
                            type: string
                          message:
                            description: Dialog message text
                            type: string
                          policy:
                            description: "Active dialog policy (see browser_set_dialog_policy): default, accept or dismiss"
                            type: string
                          registered:
                            description: Whether dialog interception is currently registered
                            type: boolean
                          uri:
                            description: Page that raised the dialog
                            type: string
                        required:
                          - browser_uuid
                          - policy
                          - captured
                          - registered
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/links":
    post:
      description: "Extract all hyperlinks on the page as a compact list of {text, href, rel}. Deduplicated. A token-cheap navigation map instead of raw HTML."
      operationId: getLinks
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                frame:
                  description: Optional CSS selector for a same-origin iframe to read inside
                  type: string
                limit:
                  description: Max links to return (0 = no limit)
                  type: integer
                selector:
                  description: Optional CSS selector to scope link collection
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of links returned (see the limit parameter)
                            type: integer
                          links:
                            description: Deduplicated hyperlinks in document order
                            items:
                              additionalProperties: true
                              properties:
                                href:
                                  description: Absolute URL
                                  type: string
                                rel:
                                  description: "The rel attribute, null when absent"
                                  type:
                                    - string
                                    - "null"
                                text:
                                  description: "Link text or aria-label, truncated to 300 characters"
                                  type: string
                              required:
                                - text
                                - href
                              type: object
                            type: array
                        required:
                          - links
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get links
      tags:
        - Browser
  "/api/browsers/{uuid}/metadata":
    get:
      description: "Get page metadata: title, description, canonical URL, author, published/modified dates, language, favicon, Open Graph + Twitter cards, word count and reading time."
      operationId: getMetadata
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          metadata:
                            additionalProperties: true
                            description: Page metadata. String fields are null when the page does not declare them.
                            properties:
                              author:
                                type:
                                  - string
                                  - "null"
                              canonical:
                                description: "Canonical URL from link[rel=canonical]"
                                type:
                                  - string
                                  - "null"
                              description:
                                type:
                                  - string
                                  - "null"
                              favicon:
                                description: "Declared icon, falling back to the origin's /favicon.ico"
                                type: string
                              image:
                                type:
                                  - string
                                  - "null"
                              lang:
                                description: The lang attribute on the document element
                                type:
                                  - string
                                  - "null"
                              modified:
                                description: "article:modified_time, as declared by the page"
                                type:
                                  - string
                                  - "null"
                              og:
                                additionalProperties: true
                                description: "Open Graph properties, keyed without the og: prefix"
                                type: object
                              published:
                                description: "article:published_time, as declared by the page"
                                type:
                                  - string
                                  - "null"
                              readingTimeMin:
                                description: "Estimated reading time in minutes at 200 words per minute, minimum 1"
                                type: integer
                              siteName:
                                type:
                                  - string
                                  - "null"
                              title:
                                type: string
                              twitter:
                                additionalProperties: true
                                description: "Twitter card properties, keyed without the twitter: prefix"
                                type: object
                              type:
                                description: "The og:type value"
                                type:
                                  - string
                                  - "null"
                              url:
                                description: "The page's current location"
                                type: string
                              wordCount:
                                description: Whitespace-delimited word count of the rendered body text
                                type: integer
                            required:
                              - title
                              - url
                              - favicon
                              - wordCount
                              - readingTimeMin
                            type: object
                        required:
                          - metadata
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get metadata
      tags:
        - Browser
  "/api/browsers/{uuid}/muted":
    post:
      description: "Mute or unmute a single browser's audio."
      operationId: executeMcpAction21
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                muted:
                  description: "true to mute, false to unmute (default true)"
                  type: boolean
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/navigate":
    post:
      description: Navigate a browser to a specific URL
      operationId: navigate
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                url:
                  description: URL to navigate to
                  type: string
              required:
                - url
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Navigate
      tags:
        - Browser
  "/api/browsers/{uuid}/network":
    post:
      description: "List the network requests the page has made (from the Resource Timing API): url, type, protocol, size, and duration, plus navigation timing. Note: does NOT include status codes, headers, or response bodies."
      operationId: executeMcpAction12
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                filter:
                  description: Only requests whose URL contains this substring (optional)
                  type: string
                limit:
                  description: Max requests to return (0 = all)
                  type: integer
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of requests returned (see the filter and limit parameters)
                            type: integer
                          navigation:
                            additionalProperties: true
                            description: Navigation timing for the current document. Absent when the browser reports no navigation entry.
                            properties:
                              domContentLoadedMs:
                                type: integer
                              durationMs:
                                type: integer
                              loadEventMs:
                                type: integer
                              type:
                                description: "How the document was reached, for example navigate, reload or back_forward"
                                type: string
                              url:
                                type: string
                            type: object
                          requests:
                            description: "Resource Timing entries. Excludes status codes, headers and response bodies."
                            items:
                              additionalProperties: true
                              properties:
                                decodedSize:
                                  type: integer
                                durationMs:
                                  type: integer
                                encodedSize:
                                  type: integer
                                protocol:
                                  description: "Next-hop protocol, null when the origin does not expose it"
                                  type:
                                    - string
                                    - "null"
                                startMs:
                                  description: Start time in milliseconds relative to navigation start
                                  type: integer
                                transferSize:
                                  description: "Bytes over the wire, 0 for cached responses"
                                  type: integer
                                type:
                                  description: "What initiated the request, for example script, img or fetch"
                                  type: string
                                url:
                                  type: string
                              required:
                                - url
                                - type
                                - startMs
                                - durationMs
                              type: object
                            type: array
                        required:
                          - requests
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/offline":
    get:
      description: Get whether offline network emulation is active for a browser. Readable counterpart to browser_set_offline.
      operationId: getOffline
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          browser_uuid:
                            type: string
                          offline:
                            type: boolean
                        required:
                          - browser_uuid
                          - offline
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get offline
      tags:
        - Browser
    post:
      description: Set offline mode for the browser
      operationId: setOffline
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                offline:
                  description: Enable offline mode
                  type: boolean
              required:
                - offline
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set offline
      tags:
        - Browser
  "/api/browsers/{uuid}/pdf":
    post:
      description: Print page to PDF. Output is restricted to your Documents or Downloads folder.
      operationId: printToPdf
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                file_path:
                  description: "Absolute path ending in .pdf, inside your Documents or Downloads folder. Paths elsewhere, relative paths and UNC paths are rejected. WSL users: use Windows paths (C:\\Users\\<you>\\Documents\\file.pdf), readable at /mnt/c/Users/<you>/Documents/file.pdf"
                  type: string
              required:
                - file_path
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Print to pdf
      tags:
        - Browser
  "/api/browsers/{uuid}/press-key":
    post:
      description: "Send a real (trusted) key press to the focused element via native input. Accepts a named key or a single printable character. Named keys (case-insensitive): Enter/Return, Tab, Escape/Esc, Backspace, Delete/Del, Space, Up/ArrowUp, Down/ArrowDown, Left/ArrowLeft, Right/ArrowRight, Home, End, PageUp, PageDown, Insert, and F1-F24. Use this for Enter-to-submit / Tab-between-fields where synthetic JS key events do not work. Modifier combos (Ctrl+A etc.) are not yet supported."
      operationId: executeMcpAction5
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                key:
                  description: "A named key from the tool description (e.g. Enter, Tab, ArrowDown, F5) or a single printable character. Anything else is rejected."
                  type: string
              required:
                - key
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/read":
    post:
      description: "Read the page as clean, LLM-friendly content instead of raw HTML. Strips boilerplate (article mode), converts to markdown or plain text, and supports paging via max_chars + offset. Prefer this over browser_get_source."
      operationId: readContent
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                format:
                  description: Output format. Default markdown.
                  enum:
                    - markdown
                    - text
                  type: string
                frame:
                  description: Optional CSS selector for a same-origin iframe to read inside (cross-origin frames are not accessible)
                  type: string
                include_images:
                  description: Keep images in markdown (default false)
                  type: boolean
                include_links:
                  description: Keep links in markdown (default true)
                  type: boolean
                max_chars:
                  description: Max characters to return (0 = no limit). Use with offset to page.
                  type: integer
                mode:
                  description: article = main content only (boilerplate stripped); full = whole page cleaned; text = plain readable text (lightest). Default article.
                  enum:
                    - article
                    - full
                    - text
                  type: string
                offset:
                  description: Character offset to start from (for paging)
                  type: integer
                selector:
                  description: Optional CSS selector to scope extraction to a subtree
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          base_url:
                            description: "Page URL the content was read from, used to resolve relative links"
                            type: string
                          browser_uuid:
                            type: string
                          content:
                            description: "The windowed content, without the paging footer that the text block carries"
                            type: string
                          format:
                            description: The output format that was applied
                            type: string
                          max_chars:
                            description: "The requested window size, 0 when unlimited"
                            type: integer
                          mode:
                            description: The read mode that was applied
                            type: string
                          offset:
                            description: "Character offset this window starts at, clamped to the content length"
                            type: integer
                          returned_chars:
                            description: Length of the content field
                            type: integer
                          total_chars:
                            description: "Length of the converted content, before windowing"
                            type: integer
                          truncated:
                            description: True when more characters remain past this window
                            type: boolean
                        required:
                          - browser_uuid
                          - mode
                          - format
                          - total_chars
                          - offset
                          - returned_chars
                          - truncated
                          - content
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Read content
      tags:
        - Browser
  "/api/browsers/{uuid}/reload":
    post:
      description: Reload the current page
      operationId: reload
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Reload
      tags:
        - Browser
  "/api/browsers/{uuid}/right-click":
    post:
      description: Right-click (context-menu) an element by dispatching mousedown/mouseup/contextmenu with the secondary button. Scrolls the element into view first.
      operationId: executeMcpAction10
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                selector:
                  description: CSS selector of the element to right-click
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/screenshot":
    post:
      description: "Take a screenshot of the page - returns base64-encoded PNG image data. Use save=true for batch operations to reduce token usage (returns UUID instead of image data, use browser_get_screenshot to retrieve)."
      operationId: takeScreenshot
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                format:
                  description: "Output format (default: 'jpeg')"
                  enum:
                    - png
                    - jpeg
                  type: string
                full_page:
                  description: "Capture entire scrollable page (default: false)"
                  type: boolean
                height:
                  description: "Viewport height in pixels (default: 1080)"
                  maximum: 16384
                  minimum: 1
                  type: number
                quality:
                  description: "JPEG quality (default: 90, ignored for PNG)"
                  maximum: 100
                  minimum: 0
                  type: number
                save:
                  description: "If true, store screenshot server-side and return UUID only (RECOMMENDED for batch operations to reduce token usage). Use browser_get_screenshot to retrieve. Screenshots expire after 5 minutes. (default: false)"
                  type: boolean
                width:
                  description: "Viewport width in pixels (default: 1920)"
                  maximum: 16384
                  minimum: 1
                  type: number
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Take screenshot
      tags:
        - Browser
  "/api/browsers/{uuid}/screenshot/element":
    post:
      description: "Screenshot a single element (scrolls it into view, captures just its bounding box). Returns an image. Far smaller than a full-page screenshot when you only need one component."
      operationId: executeMcpAction13
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                format:
                  description: Image format (default png)
                  enum:
                    - png
                    - jpeg
                  type: string
                quality:
                  description: JPEG quality (ignored for png)
                  maximum: 100
                  minimum: 0
                  type: integer
                selector:
                  description: CSS selector of the element to capture
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/scroll-by":
    post:
      description: Scroll by offset amount
      operationId: scrollBy
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                delta_x:
                  description: X offset
                  type: number
                delta_y:
                  description: Y offset
                  type: number
              required:
                - delta_x
                - delta_y
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Scroll by
      tags:
        - Browser
  "/api/browsers/{uuid}/scroll-to":
    post:
      description: Scroll to specific coordinates
      operationId: scrollTo
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                x:
                  description: X coordinate
                  type: number
                y:
                  description: Y coordinate
                  type: number
              required:
                - x
                - y
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Scroll to
      tags:
        - Browser
  "/api/browsers/{uuid}/set-value":
    post:
      description: Set value of an input element
      operationId: setInputValue
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                selector:
                  description: CSS selector of input element
                  type: string
                timeout_ms:
                  description: "Timeout in milliseconds (default: 5000)"
                  type: number
                value:
                  description: Value to set
                  type: string
              required:
                - selector
                - value
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set input value
      tags:
        - Browser
  "/api/browsers/{uuid}/snapshot":
    post:
      description: "Token-efficient interactive snapshot: a compact list of visible interactive elements (links, buttons, inputs, selects) each with role, accessible name and a CSS selector usable by browser_click/browser_set_value, plus a heading outline. Far cheaper than a screenshot for driving a page."
      operationId: executeMcpAction3
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                frame:
                  description: Optional CSS selector for a same-origin iframe to snapshot inside
                  type: string
                limit:
                  description: Max interactive elements to return (0 = no limit)
                  type: integer
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of interactive elements returned (see the limit parameter)
                            type: integer
                          headings:
                            description: "Heading outline in document order, capped at 100 entries"
                            items:
                              additionalProperties: true
                              properties:
                                level:
                                  description: "Heading level, 1 through 6"
                                  type: integer
                                text:
                                  description: "Heading text, truncated to 200 characters"
                                  type: string
                              required:
                                - level
                                - text
                              type: object
                            type: array
                          interactive:
                            description: Visible interactive elements
                            items:
                              additionalProperties: true
                              properties:
                                checked:
                                  description: Present only for checkboxes and radios
                                  type: boolean
                                disabled:
                                  description: Present only when the element is disabled
                                  type: boolean
                                href:
                                  description: Present only for links
                                  type: string
                                name:
                                  description: Accessible name
                                  type: string
                                role:
                                  description: "Explicit role attribute, or one derived from the tag and input type"
                                  type: string
                                selector:
                                  description: CSS selector usable by browser_click and browser_set_value
                                  type: string
                              required:
                                - role
                                - name
                                - selector
                              type: object
                            type: array
                          title:
                            description: Live document title
                            type: string
                          url:
                            description: "The page's current location"
                            type: string
                        required:
                          - title
                          - url
                          - headings
                          - interactive
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/source":
    get:
      description: Get raw page source HTML. Token-heavy - prefer browser_read for clean content. Supports clean (strip script/style/svg/etc.) and max_chars + offset paging to avoid dumping the whole document.
      operationId: getPageSource
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          clean:
                            description: Whether the noise-stripping mode was applied
                            type: boolean
                          max_chars:
                            description: "The requested window size, 0 when unlimited"
                            type: integer
                          offset:
                            description: "Character offset this window starts at, clamped to the document length"
                            type: integer
                          returned_chars:
                            description: Length of the source field
                            type: integer
                          source:
                            description: "The windowed HTML, without the paging footer that the text block carries"
                            type: string
                          total_chars:
                            description: "Length of the whole document, before windowing"
                            type: integer
                          truncated:
                            description: True when more characters remain past this window
                            type: boolean
                        required:
                          - browser_uuid
                          - total_chars
                          - offset
                          - returned_chars
                          - truncated
                          - source
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get page source
      tags:
        - Browser
  "/api/browsers/{uuid}/state":
    get:
      description: "Get comprehensive browser state as structured JSON: identity, navigation, zoom, muted, headless, offline, viewport, user agent, emulated device, dialog policy and custom request headers. One call returns everything the per-setting getters return individually."
      operationId: getBrowserState
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          can_go_back:
                            type: boolean
                          can_go_forward:
                            type: boolean
                          custom_title:
                            description: "Agent-set label, distinct from the document title"
                            type: string
                          dialog_policy:
                            description: How JavaScript dialogs are answered
                            enum:
                              - default
                              - accept
                              - dismiss
                            type: string
                          emulated_device:
                            description: "Device class applied by browser_emulate_device, or null when none is applied"
                            enum:
                              - mobile
                              - tablet
                              - null
                            type:
                              - string
                              - "null"
                          found:
                            description: False when no browser has this uuid
                            type: boolean
                          headers:
                            additionalProperties:
                              type: string
                            description: "Custom request headers set via browser_set_header, keyed by header name"
                            type: object
                          headless:
                            type: boolean
                          is_loading:
                            type: boolean
                          layout_uuid:
                            type: string
                          muted:
                            type: boolean
                          offline:
                            description: Whether browser_set_offline network emulation is active
                            type: boolean
                          profile:
                            type: string
                          title:
                            description: Live document title
                            type: string
                          url:
                            type: string
                          user_agent:
                            description: "User agent as the engine reports it. With fingerprint identity enabled a CDP override takes precedence at the network layer, so this is not necessarily what the site sees."
                            type: string
                          uuid:
                            type: string
                          viewport:
                            description: "Live viewport size in pixels, not the last value passed to browser_set_viewport - docking and window resizing move it independently"
                            properties:
                              height:
                                type: integer
                              width:
                                type: integer
                            type: object
                          zoom:
                            description: "Zoom factor (1.0 = 100%)"
                            type: number
                        required:
                          - uuid
                          - found
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get browser state
      tags:
        - Browser
  "/api/browsers/{uuid}/stop":
    post:
      description: Stop loading the current page
      operationId: stop
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Stop
      tags:
        - Browser
  "/api/browsers/{uuid}/storage":
    post:
      description: "Read the page's localStorage or sessionStorage. With a key, returns that value; without, returns all entries for the origin."
      operationId: executeMcpAction15
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                key:
                  description: Specific key to read (optional; omit for all entries)
                  type: string
                store:
                  description: Which store (default local)
                  enum:
                    - local
                    - session
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          count:
                            description: Number of entries in the store. Present only when reading all entries.
                            type: integer
                          entries:
                            additionalProperties:
                              type: string
                            description: All key/value pairs for the origin. Present only when no key was requested.
                            type: object
                          key:
                            description: The key that was read. Present only when a key was requested.
                            type: string
                          store:
                            description: Which store was read
                            type: string
                          value:
                            description: "Value for the requested key, null when the store has no such key. Present only when a key was requested."
                            type:
                              - string
                              - "null"
                        required:
                          - browser_uuid
                          - store
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/storage/clear":
    post:
      description: "Clear the page's localStorage or sessionStorage. With a key, removes just that key; without, clears the whole store for the origin."
      operationId: executeMcpAction17
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                key:
                  description: Specific key to remove (optional; omit to clear all)
                  type: string
                store:
                  description: Which store (default local)
                  enum:
                    - local
                    - session
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/storage/set":
    post:
      description: "Set a key in the page's localStorage or sessionStorage."
      operationId: executeMcpAction16
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                key:
                  description: Key to set
                  type: string
                store:
                  description: Which store (default local)
                  enum:
                    - local
                    - session
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
                value:
                  description: Value to store
                  type: string
              required:
                - key
                - value
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/submit":
    post:
      description: Submit a form
      operationId: submitForm
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                selector:
                  description: CSS selector of form element
                  type: string
                timeout_ms:
                  description: "Timeout in milliseconds (default: 5000)"
                  type: number
              required:
                - selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Submit form
      tags:
        - Browser
  "/api/browsers/{uuid}/tables":
    post:
      description: "Extract HTML tables as markdown (default), CSV, or JSON rows. Avoids the model parsing <td> soup."
      operationId: getTables
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                format:
                  description: Output format. Default markdown.
                  enum:
                    - markdown
                    - csv
                    - json
                  type: string
                selector:
                  description: Optional CSS selector to scope which tables are read
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          content:
                            description: "The tables rendered as markdown or CSV. Absent for format json, whose rendering is the rows themselves."
                            type: string
                          count:
                            description: Number of tables found
                            type: integer
                          format:
                            description: How the text block was rendered. The structured rows below are the same in every format.
                            type: string
                          tables:
                            description: "Tables in document order, as rows rather than rendered text"
                            items:
                              additionalProperties: true
                              properties:
                                caption:
                                  description: "Table caption, empty when it has none"
                                  type: string
                                headers:
                                  description: Header cells
                                  items:
                                    type: string
                                  type: array
                                index:
                                  description: Position of the table in the document
                                  type: integer
                                rows:
                                  description: "Body rows, each an array of cell values"
                                  items:
                                    items:
                                      type: string
                                    type: array
                                  type: array
                                selector:
                                  description: CSS selector for the table
                                  type: string
                              required:
                                - index
                                - headers
                                - rows
                              type: object
                            type: array
                        required:
                          - count
                          - tables
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get tables
      tags:
        - Browser
  "/api/browsers/{uuid}/title":
    get:
      description: Get current page title
      operationId: getCurrentTitle
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          title:
                            description: "Live document title. Empty when the page has none, or when the browser was not found."
                            type: string
                        required:
                          - browser_uuid
                          - title
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get current title
      tags:
        - Browser
  "/api/browsers/{uuid}/type":
    post:
      description: Type text at current cursor position
      operationId: typeText
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                text:
                  description: Text to type
                  type: string
              required:
                - text
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Type text
      tags:
        - Browser
  "/api/browsers/{uuid}/upload":
    post:
      description: "Attach files to a file <input> element. You supply the file CONTENT as base64 (not a local path), so the tool never reads the machine's disk. Each file is materialized in-page and assigned to the input."
      operationId: executeMcpAction11
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                files:
                  description: Files to attach
                  items:
                    properties:
                      content_base64:
                        description: "File contents, base64-encoded"
                        type: string
                      mime_type:
                        description: "MIME type (optional, default application/octet-stream)"
                        type: string
                      name:
                        description: Filename to present to the page
                        type: string
                    required:
                      - name
                      - content_base64
                    type: object
                  type: array
                selector:
                  description: "CSS selector of the <input type=file> element"
                  type: string
                timeout_ms:
                  description: "Max time to wait for the in-page result, in ms"
                  type: integer
              required:
                - selector
                - files
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/url":
    get:
      description: "Get current URL of a browser. Like an address bar, this is the URL that was navigated to even when it failed to load; load_failed says whether an error page is showing instead."
      operationId: getCurrentUrl
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          found:
                            description: Always true on success; an unknown uuid is a tool error.
                            type: boolean
                          load_failed:
                            description: "True when the last navigation failed and an error page is shown instead of url's content."
                            type: boolean
                          url:
                            description: Current URL. Empty on a blank page.
                            type: string
                        required:
                          - browser_uuid
                          - url
                          - found
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get current url
      tags:
        - Browser
  "/api/browsers/{uuid}/user-agent":
    get:
      description: "Get a browser's CONFIGURED user agent, as the engine settings report it. Readable counterpart to browser_set_user_agent. This is not necessarily what the site sees: a CDP override (fingerprint identity, or device emulation) takes precedence at the network layer. To read what the page itself reports, evaluate navigator.userAgent with browser_execute_js."
      operationId: getUserAgent
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          browser_uuid:
                            type: string
                          user_agent:
                            type: string
                        required:
                          - browser_uuid
                          - user_agent
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get user agent
      tags:
        - Browser
    post:
      description: Set user agent for the browser
      operationId: setUserAgent
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                user_agent:
                  description: User agent string
                  type: string
              required:
                - user_agent
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set user agent
      tags:
        - Browser
  "/api/browsers/{uuid}/viewport":
    get:
      description: "Get a browser's live viewport size in pixels. Note this is the current size, not the last value passed to browser_set_viewport - docking and window resizing move it independently of the API."
      operationId: getViewportSize
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          browser_uuid:
                            type: string
                          height:
                            type: integer
                          width:
                            type: integer
                        required:
                          - browser_uuid
                          - width
                          - height
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get viewport size
      tags:
        - Browser
    post:
      description: "Resize the browser's web view. While the browser is docked the dock layout owns its size and re-applies it, so a docked browser snaps back and browser_get_viewport reports the dock's size; for a stable page viewport use browser_emulate_device."
      operationId: setViewportSize
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                height:
                  description: Viewport height
                  type: number
                width:
                  description: Viewport width
                  type: number
              required:
                - width
                - height
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set viewport size
      tags:
        - Browser
  "/api/browsers/{uuid}/wait/element":
    post:
      description: Wait for an element to appear on the page
      operationId: waitForElement
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                selector:
                  description: CSS selector of element to wait for
                  type: string
                timeout_ms:
                  description: "Timeout in milliseconds (default: 5000)"
                  type: number
              required:
                - selector
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Wait for element
      tags:
        - Browser
  "/api/browsers/{uuid}/wait/load":
    post:
      description: Wait for page to finish loading
      operationId: waitForPageLoad
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                timeout_ms:
                  description: "Timeout in milliseconds (default: 30000)"
                  type: number
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Wait for page load
      tags:
        - Browser
  "/api/browsers/{uuid}/wait/network-idle":
    post:
      description: "Wait until the page has finished loading and no new network requests have started for a quiet period. Use after navigation or an action that triggers async loading, before reading/snapshotting."
      operationId: executeMcpAction8
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                idle_ms:
                  description: Quiet period with no new requests that counts as idle (default 500)
                  type: integer
                timeout_ms:
                  description: Max time to wait (default 30000)
                  type: integer
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          error:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Browser
  "/api/browsers/{uuid}/zoom":
    get:
      description: Get current zoom factor for the browser
      operationId: getZoom
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            type: string
                          zoom:
                            description: "Zoom factor (1.0 = 100%). Reported as 0 when the browser was not found."
                            type: number
                        required:
                          - browser_uuid
                          - zoom
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get zoom
      tags:
        - Browser
    post:
      description: Set zoom factor for the browser
      operationId: setZoom
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                factor:
                  description: "Zoom factor (1.0 = 100%)"
                  type: number
              required:
                - factor
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set zoom
      tags:
        - Browser
  /api/downloads:
    get:
      description: "List active/recent downloads (uuid, filename, url, status, bytes, speed). Supports limit + offset paging; response includes total."
      operationId: listDownloads
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            type: integer
                          downloads:
                            items:
                              additionalProperties: true
                              properties:
                                end_time:
                                  type: string
                                error:
                                  type: string
                                filename:
                                  type: string
                                profile:
                                  type: string
                                received_bytes:
                                  type: integer
                                save_path:
                                  type: string
                                speed_bps:
                                  type: number
                                start_time:
                                  type: string
                                status:
                                  type: string
                                total_bytes:
                                  type: integer
                                url:
                                  type: string
                                uuid:
                                  type: string
                              type: object
                            type: array
                        required:
                          - count
                          - downloads
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List downloads
      tags:
        - Download
  /api/downloads/clear-all:
    post:
      description: Remove every download (cancels in-flight first)
      operationId: clearAll
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear all
      tags:
        - Download
  /api/downloads/clear-completed:
    post:
      description: Remove all completed/cancelled/failed downloads
      operationId: clearCompleted
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear completed
      tags:
        - Download
  /api/downloads/start:
    post:
      description: "Start a managed download to the app's configured download directory and return its UUID and initial state. The transfer can be observed and controlled with the other download tools. There is intentionally no destination-path parameter, and the request does not use a browser login session."
      operationId: startDownload
      requestBody:
        content:
          application/json:
            schema:
              properties:
                url:
                  description: http(s) URL of the file to download
                  type: string
              required:
                - url
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          filename:
                            type: string
                          status:
                            type: string
                          success:
                            type: boolean
                          url:
                            type: string
                          uuid:
                            type: string
                        required:
                          - success
                          - uuid
                          - url
                          - filename
                          - status
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Start download
      tags:
        - Download
  "/api/downloads/{uuid}":
    delete:
      description: Remove a download from the list (cancels first if active)
      operationId: removeDownload
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          action:
                            type: string
                          success:
                            type: boolean
                          uuid:
                            type: string
                        required:
                          - success
                          - uuid
                          - action
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Remove download
      tags:
        - Download
    get:
      description: Get one download by uuid
      operationId: getDownload
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          end_time:
                            type: string
                          error:
                            type: string
                          filename:
                            type: string
                          profile:
                            type: string
                          received_bytes:
                            type: integer
                          save_path:
                            type: string
                          speed_bps:
                            type: number
                          start_time:
                            type: string
                          status:
                            type: string
                          total_bytes:
                            type: integer
                          url:
                            type: string
                          uuid:
                            type: string
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get download
      tags:
        - Download
  "/api/downloads/{uuid}/cancel":
    post:
      description: Cancel an in-flight download
      operationId: cancelDownload
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                uuid:
                  description: Download uuid
                  type: string
              required:
                - uuid
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          action:
                            type: string
                          success:
                            type: boolean
                          uuid:
                            type: string
                        required:
                          - success
                          - uuid
                          - action
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Cancel download
      tags:
        - Download
  "/api/downloads/{uuid}/pause":
    post:
      description: Pause an in-flight download
      operationId: pauseDownload
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                uuid:
                  description: Download uuid
                  type: string
              required:
                - uuid
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          action:
                            type: string
                          success:
                            type: boolean
                          uuid:
                            type: string
                        required:
                          - success
                          - uuid
                          - action
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Pause download
      tags:
        - Download
  "/api/downloads/{uuid}/resume":
    post:
      description: Resume a paused download
      operationId: resumeDownload
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                uuid:
                  description: Download uuid
                  type: string
              required:
                - uuid
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          action:
                            type: string
                          success:
                            type: boolean
                          uuid:
                            type: string
                        required:
                          - success
                          - uuid
                          - action
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Resume download
      tags:
        - Download
  /api/history:
    delete:
      description: Clear all browsing history across every profile
      operationId: clearHistory
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear history
      tags:
        - History
    get:
      description: "List/search browsing history visits (visit_id, uri, title, host, profile, visit_time, counts)"
      operationId: listHistory
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of visits returned in this page
                            type: integer
                          total:
                            description: Total matching visits across all pages
                            type: integer
                          visits:
                            description: "History visit rows (visit_id, uri, title, host, profile, visit_time, counts)"
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                        required:
                          - count
                          - total
                          - visits
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List history
      tags:
        - History
  /api/history/profiles:
    get:
      description: List distinct profiles that have history visits
      operationId: listProfilesGet
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of distinct profiles
                            type: integer
                          profiles:
                            description: Distinct profile names with history
                            items:
                              type: string
                            type: array
                        required:
                          - count
                          - profiles
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List profiles
      tags:
        - History
  /api/history/remove-uri:
    post:
      description: Remove all history for a specific URL
      operationId: removeUri
      requestBody:
        content:
          application/json:
            schema:
              properties:
                uri:
                  description: Exact URL to forget
                  type: string
              required:
                - uri
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Remove uri
      tags:
        - History
  "/api/history/visit/{visitId}":
    delete:
      description: Delete a single history visit by visit_id
      operationId: deleteVisit
      parameters:
        - in: path
          name: visitId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete visit
      tags:
        - History
  /api/layouts:
    get:
      description: List all available layouts/docks
      operationId: listLayouts
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            type: integer
                          layouts:
                            description: "Layouts (uuid, name)"
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                        required:
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List layouts
      tags:
        - Layout
    post:
      description: Create a new layout/dock
      operationId: addLayout
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Name for the new layout
                  type: string
              required:
                - name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          name:
                            type: string
                          success:
                            type: boolean
                          uuid:
                            type: string
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Add layout
      tags:
        - Layout
  /api/layouts/close-all:
    post:
      description: "Close all dock widgets of specified types. Use to bulk-close browsers, native apps, video players, etc."
      operationId: closeAllDocks
      requestBody:
        content:
          application/json:
            schema:
              properties:
                layout_uuid:
                  description: "Layout UUID to close widgets in (optional, defaults to all layouts)"
                  type: string
                types:
                  description: "Dock types to close. If omitted, closes every type."
                  items:
                    enum:
                      - browser
                      - native
                      - video
                      - bookmarks
                      - settings
                    type: string
                  type: array
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          closed:
                            type: integer
                          success:
                            type: boolean
                          total:
                            type: integer
                          types:
                            type: string
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Close all docks
      tags:
        - Layout
  "/api/layouts/{uuid}":
    delete:
      description: Delete a layout/dock
      operationId: deleteLayout
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          uuid:
                            type: string
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete layout
      tags:
        - Layout
    get:
      description: "Get information about a layout, including the readable counterparts to layout_set_locked, layout_set_resolution, layout_toggle_fullscreen and layout_set_mute_all."
      operationId: getLayout
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          all_muted:
                            description: True only when the layout has browsers and every one of them is muted
                            type: boolean
                          browser_count:
                            type: integer
                          fullscreen:
                            description: Whether the layout window is fullscreen (see layout_toggle_fullscreen)
                            type: boolean
                          height:
                            description: Current height in pixels (see layout_set_resolution)
                            type: integer
                          locked:
                            description: Whether the layout is locked (see layout_set_locked)
                            type: boolean
                          muted_browsers:
                            description: "How many of the layout's browsers are muted (see layout_set_mute_all)"
                            type: integer
                          name:
                            type: string
                          uuid:
                            type: string
                          width:
                            description: Current width in pixels (see layout_set_resolution)
                            type: integer
                        required:
                          - uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get layout
      tags:
        - Layout
    put:
      description: Rename a layout/dock
      operationId: renameLayout
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: New name for the layout
                  type: string
              required:
                - name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          name:
                            type: string
                          success:
                            type: boolean
                          uuid:
                            type: string
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Rename layout
      tags:
        - Layout
  "/api/layouts/{uuid}/apps":
    get:
      description: Get applications in a layout
      operationId: getApps
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          apps:
                            type: array
                          count:
                            type: integer
                          layout_uuid:
                            type: string
                        required:
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get apps
      tags:
        - Layout
  "/api/layouts/{uuid}/browsers":
    get:
      description: Get browsers in a layout
      operationId: getBrowsers
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browsers:
                            type: array
                          count:
                            type: integer
                          uuid:
                            type: string
                        required:
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get browsers
      tags:
        - Layout
  "/api/layouts/{uuid}/equalize":
    post:
      description: Equalize the dock splitters so the tiled docks share space evenly (tidy up the layout).
      operationId: executeMcpAction26
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          uuid:
                            type: string
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Layout
  "/api/layouts/{uuid}/fullscreen/toggle":
    post:
      description: Toggle fullscreen mode for the layout window.
      operationId: executeMcpAction29
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          uuid:
                            type: string
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Layout
  "/api/layouts/{uuid}/locked":
    post:
      description: "Lock or unlock a layout. A locked layout prevents docks from being moved, resized, or closed."
      operationId: executeMcpAction23
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                locked:
                  description: "true to lock, false to unlock (default true)"
                  type: boolean
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          uuid:
                            type: string
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Layout
  "/api/layouts/{uuid}/mute-all":
    post:
      description: Mute or unmute all browsers in the layout at once.
      operationId: executeMcpAction28
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                muted:
                  description: "true to mute all, false to unmute (default true)"
                  type: boolean
              type: object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          uuid:
                            type: string
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Layout
  "/api/layouts/{uuid}/open-dock":
    post:
      description: "Open a non-browser dock in the layout: a downloads panel, history panel, or new-window panel."
      operationId: executeMcpAction27
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                type:
                  description: Which dock to open
                  enum:
                    - downloads
                    - history
                    - new_window
                  type: string
              required:
                - type
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          uuid:
                            type: string
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Layout
  "/api/layouts/{uuid}/resolution":
    post:
      description: Set a fixed pixel resolution for the layout window (useful for consistent screenshots or device-size testing).
      operationId: executeMcpAction24
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                height:
                  description: Height in pixels
                  type: integer
                width:
                  description: Width in pixels
                  type: integer
              required:
                - width
                - height
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          uuid:
                            type: string
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Layout
  "/api/layouts/{uuid}/resolution/reset":
    post:
      description: Clear a custom layout resolution and return the window to free/auto sizing.
      operationId: executeMcpAction25
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          uuid:
                            type: string
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute mcp action
      tags:
        - Layout
  "/api/layouts/{uuid}/screenshot":
    get:
      description: Screenshot the layout window at its exact dimensions. Captures dock chrome only - content areas come out black. Use browser_screenshot for page content.
      operationId: getLayoutScreenshot
      parameters:
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get layout screenshot
      tags:
        - Layout
  /api/permissions:
    get:
      description: "List all remembered site permission decisions (host, permission_type, label, allowed)"
      operationId: listPermissions
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of remembered permissions
                            type: integer
                          permissions:
                            description: "Remembered permissions (host, permission_type, label, state, allowed, created, updated)"
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                        required:
                          - count
                          - permissions
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List permissions
      tags:
        - Permission
  /api/permissions/clear:
    post:
      description: Forget every remembered permission decision for all hosts
      operationId: clearPermissions
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear permissions
      tags:
        - Permission
  /api/permissions/remove:
    post:
      description: Forget one remembered permission decision for a host. permission_type is the stored value from permission_list or permission_list_types
      operationId: removePermission
      requestBody:
        content:
          application/json:
            schema:
              properties:
                host:
                  description: Host the permission was remembered for
                  type: string
                permission_type:
                  description: Stored permission type (from permission_list)
                  type: string
              required:
                - host
                - permission_type
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Remove permission
      tags:
        - Permission
  /api/permissions/remove-host:
    post:
      description: Forget every remembered permission decision for a host
      operationId: removeHostPermissions
      requestBody:
        content:
          application/json:
            schema:
              properties:
                host:
                  description: Host to forget all permissions for
                  type: string
              required:
                - host
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Remove host permissions
      tags:
        - Permission
  /api/permissions/set:
    post:
      description: "Remember a permission decision for a host, as if the user had answered a prompt with 'remember this choice'. Takes effect immediately, without a restart."
      operationId: setPermission
      requestBody:
        content:
          application/json:
            schema:
              properties:
                allowed:
                  description: "true to grant, false to deny"
                  type: boolean
                host:
                  description: "Host the decision applies to, e.g. example.com"
                  type: string
                permission_type:
                  description: Permission type (from permission_list_types)
                  type: string
              required:
                - host
                - permission_type
                - allowed
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set permission
      tags:
        - Permission
  /api/permissions/types:
    get:
      description: "List every permission type that can be granted or denied, with a human-readable label. Call this to discover valid permission_type values for permission_set and permission_remove."
      operationId: listPermissionTypes
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of permission types
                            type: integer
                          permission_types:
                            description: Permission types
                            items:
                              additionalProperties: true
                              properties:
                                label:
                                  description: "Human-readable name, e.g. Camera"
                                  type: string
                                permission_type:
                                  description: Value to pass as permission_type
                                  type: string
                              required:
                                - permission_type
                                - label
                              type: object
                            type: array
                        required:
                          - count
                          - permission_types
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List permission types
      tags:
        - Permission
  /api/profiles:
    get:
      description: "List all browser profiles: which one is the default, which are temporary, and which have a proxy configured. Does not return proxy values - the stored form embeds credentials."
      operationId: listProfiles
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            type: integer
                          profiles:
                            description: Profiles
                            items:
                              additionalProperties: true
                              properties:
                                is_default:
                                  description: Whether this is the default profile (see profile_set_default)
                                  type: boolean
                                is_temporary:
                                  description: Whether the profile was created via profile_create_temporary
                                  type: boolean
                                name:
                                  type: string
                                proxy_is_set:
                                  description: Whether a proxy is configured. The value is deliberately not returned - it embeds credentials.
                                  type: boolean
                              required:
                                - name
                              type: object
                            type: array
                        required:
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List profiles
      tags:
        - Layout
    post:
      description: Create a new browser profile
      operationId: addProfile
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Name for the new profile
                  type: string
              required:
                - name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          profile:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Add profile
      tags:
        - Layout
  /api/profiles/default:
    get:
      description: Get default browser profile
      operationId: getDefaultProfile
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          default_profile:
                            type: string
                          is_set:
                            type: boolean
                        required:
                          - is_set
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get default profile
      tags:
        - Layout
  /api/profiles/temporary:
    post:
      description: Create a temporary browser profile
      operationId: addTemporaryProfile
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Name for the temporary profile
                  type: string
              required:
                - name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          id:
                            type: integer
                          profile:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Add temporary profile
      tags:
        - Layout
  "/api/profiles/{name}":
    delete:
      description: Delete a browser profile
      operationId: deleteProfile
      parameters:
        - in: path
          name: name
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          profile:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete profile
      tags:
        - Layout
    put:
      description: Rename a browser profile (automatically handles both regular and temporary profiles)
      operationId: renameProfile
      parameters:
        - in: path
          name: name
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                new_name:
                  description: New profile name
                  type: string
                old_name:
                  description: Current profile name
                  type: string
              required:
                - old_name
                - new_name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          new_name:
                            type: string
                          old_name:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Rename profile
      tags:
        - Layout
  "/api/profiles/{name}/default":
    post:
      description: Set default browser profile
      operationId: setDefaultProfile
      parameters:
        - in: path
          name: name
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Profile name to set as default
                  type: string
              required:
                - name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          profile:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set default profile
      tags:
        - Layout
  "/api/profiles/{name}/proxy":
    get:
      description: "Get the proxy configured for a browser profile, with any credentials stripped. Returns scheme://host:port only - the stored form embeds user:pass, which is never returned over the API."
      operationId: getProfileProxy
      parameters:
        - in: path
          name: name
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          has_credentials:
                            description: Whether the stored proxy carries a username or password
                            type: boolean
                          is_set:
                            type: boolean
                          profile:
                            type: string
                          proxy:
                            description: "scheme://host:port, credentials removed. Empty when unset or unparseable."
                            type: string
                        required:
                          - is_set
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get profile proxy
      tags:
        - Layout
    post:
      description: Set the proxy address for a browser profile. Affects new browsers created with this profile (already-running browsers are unaffected).
      operationId: setProfileProxy
      parameters:
        - in: path
          name: name
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Profile name to set proxy for
                  type: string
                proxy:
                  description: "Proxy address (e.g. http://host:port or socks5://host:port)"
                  type: string
              required:
                - name
                - proxy
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          profile:
                            type: string
                          proxy:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set profile proxy
      tags:
        - Layout
  "/api/profiles/{name}/temporary":
    put:
      description: Rename a browser profile (automatically handles both regular and temporary profiles)
      operationId: renameTemporaryProfile
      parameters:
        - in: path
          name: name
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                new_name:
                  description: New profile name
                  type: string
                old_name:
                  description: Current profile name
                  type: string
              required:
                - old_name
                - new_name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          new_name:
                            type: string
                          old_name:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Rename temporary profile
      tags:
        - Layout
  /api/search:
    post:
      description: Run a search query in a new browser using the default (or specified) search engine
      operationId: search
      requestBody:
        content:
          application/json:
            schema:
              properties:
                engine_id:
                  description: "Search engine id from settings_list_search_engines (optional, defaults to the configured default)"
                  type: integer
                layout_uuid:
                  description: "Layout UUID (optional, defaults to first layout)"
                  type: string
                profile:
                  description: Profile to open under (optional)
                  type: string
                query:
                  description: Search terms
                  type: string
              required:
                - query
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          browser_uuid:
                            description: UUID of the browser opened for the search
                            type: string
                          query:
                            description: The search terms that were run
                            type: string
                          search_url:
                            description: Resolved search engine URL that was opened
                            type: string
                        required:
                          - browser_uuid
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Search
      tags:
        - Search
  /api/settings:
    get:
      description: "Get current values of application settings (the readable counterpart to settings_set) - behaviour/features, appearance, browsing, and API-surface flags. The API key/secret is never returned."
      operationId: getSettings
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          settings:
                            additionalProperties: true
                            description: Current setting values keyed by setting name
                            type: object
                        required:
                          - settings
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get settings
      tags:
        - Settings
    post:
      description: "Set an application setting by key. Call settings_list first for each key's type, permitted values, bounds and whether it is writable."
      operationId: setSetting
      requestBody:
        content:
          application/json:
            schema:
              properties:
                key:
                  description: Writable setting key (see settings_list)
                  enum:
                    - launch_on_startup
                    - scripts_enabled
                    - trading_tools_enabled
                    - privacy_tools_enabled
                    - floating_windows_enabled
                    - theme_id
                    - web_content_color_scheme
                    - icon_scale
                    - dock_divider_thickness
                    - dock_titlebar_visibility
                    - titlebar_show_profile
                    - titlebar_show_proxy
                    - default_search_engine_id
                    - default_zoom
                    - download_directory
                    - download_multistream_enabled
                    - download_multistream_count
                    - tracking_prevention
                    - auto_suggest_interval_ms
                  type: string
                value:
                  description: Setting value; type depends on the key (see settings_list)
              required:
                - key
                - value
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BaseSuccess"
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set setting
      tags:
        - Settings
  /api/settings/list:
    get:
      description: "List every application setting with its type, whether it is writable, its current value, permitted values and bounds. Use this to discover valid keys before calling settings_set."
      operationId: listSettings
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of settings returned
                            type: integer
                          settings:
                            description: Setting descriptors
                            items:
                              additionalProperties: true
                              properties:
                                description:
                                  type: string
                                enum:
                                  description: Permitted values; present only for enum settings
                                  items:
                                    type: string
                                  type: array
                                key:
                                  description: Setting key used by settings_set
                                  type: string
                                maximum:
                                  description: Inclusive upper bound; present only for bounded numbers
                                  type: number
                                minimum:
                                  description: Inclusive lower bound; present only for bounded numbers
                                  type: number
                                read_only_reason:
                                  description: Why the setting cannot be written; present only when writable is false
                                  type: string
                                type:
                                  description: "boolean, integer, number or string"
                                  type: string
                                value:
                                  description: Current value
                                writable:
                                  description: False when the setting can only be read
                                  type: boolean
                              required:
                                - key
                                - type
                                - writable
                                - value
                              type: object
                            type: array
                        required:
                          - count
                          - settings
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List settings
      tags:
        - Settings
  /api/settings/search-engines:
    get:
      description: "List configured search engines (id, name, url). The id is what settings_set writes to default_search_engine_id and what search accepts as engine_id."
      operationId: listSearchEngines
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of search engines returned
                            type: integer
                          search_engines:
                            description: "Configured search engines (id, name, url)"
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                        required:
                          - count
                          - search_engines
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List search engines
      tags:
        - Settings
    post:
      description: "Add a search engine. The URL must contain the {searchTerms} placeholder where the query is inserted. A bare host gains an https:// prefix. Both name and URL must be unique."
      operationId: createSearchEngine
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: "Display name, must not collide with an existing engine"
                  type: string
                url:
                  description: "Search URL containing {searchTerms}, e.g. https://www.google.com/search?q={searchTerms}"
                  type: string
              required:
                - name
                - url
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          id:
                            description: "Id of the new engine, usable as default_search_engine_id"
                            type: integer
                          name:
                            type: string
                          url:
                            description: "URL as stored, after normalization"
                            type: string
                        required:
                          - id
                          - name
                          - url
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Create search engine
      tags:
        - Settings
  "/api/settings/search-engines/{p1}":
    delete:
      description: Remove a search engine. Refused for the engine currently set as default - point default_search_engine_id at another engine first.
      operationId: deleteSearchEngine
      parameters:
        - in: path
          name: p1
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          deleted:
                            type: boolean
                          id:
                            type: integer
                        required:
                          - id
                          - deleted
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete search engine
      tags:
        - Settings
    patch:
      description: "Rename a search engine, change its URL, or both. Omit a field to leave it unchanged. A changed URL must still contain the {searchTerms} placeholder."
      operationId: updateSearchEngine
      parameters:
        - in: path
          name: p1
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                id:
                  description: Engine id from search_engine_list
                  type: integer
                name:
                  description: New display name. Omit to leave unchanged.
                  type: string
                url:
                  description: "New search URL containing {searchTerms}. Omit to leave unchanged."
                  type: string
              required:
                - id
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        properties:
                          id:
                            type: integer
                          name:
                            type: string
                          url:
                            description: "URL as stored, after normalization"
                            type: string
                        required:
                          - id
                          - name
                          - url
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Update search engine
      tags:
        - Settings
  /api/settings/themes:
    get:
      description: "List available themes (id, name, is_dark, is_core). The id is what settings_set writes to theme_id."
      operationId: listThemes
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            description: Number of themes returned
                            type: integer
                          themes:
                            description: "Available themes (id, name, is_dark, is_core)"
                            items:
                              additionalProperties: true
                              type: object
                            type: array
                        required:
                          - count
                          - themes
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List themes
      tags:
        - Settings
  /api/workspaces:
    get:
      description: List all available workspaces
      operationId: listWorkspaces
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            type: integer
                          workspaces:
                            items:
                              additionalProperties: true
                              properties:
                                id:
                                  type: integer
                                name:
                                  type: string
                              type: object
                            type: array
                        required:
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List workspaces
      tags:
        - Workspace
    post:
      description: Create a new workspace
      operationId: addWorkspace
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Name for the new workspace
                  type: string
              required:
                - name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          id:
                            type: integer
                          name:
                            type: string
                          success:
                            type: boolean
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Add workspace
      tags:
        - Workspace
  /api/workspaces/current:
    get:
      description: Get the currently active workspace
      operationId: getCurrentWorkspace
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          id:
                            type: integer
                          name:
                            type: string
                        required:
                          - id
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get current workspace
      tags:
        - Workspace
  /api/workspaces/startup:
    get:
      description: Get the startup workspace information
      operationId: getStartupWorkspace
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          configured:
                            type: boolean
                          exists:
                            type: boolean
                          id:
                            type: integer
                          name:
                            type: string
                        required:
                          - configured
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get startup workspace
      tags:
        - Workspace
  "/api/workspaces/{id}":
    delete:
      description: Delete a workspace
      operationId: deleteWorkspace
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          workspace_id:
                            type: integer
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete workspace
      tags:
        - Workspace
    get:
      description: Get information about a workspace
      operationId: getWorkspaceInfo
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          homepage:
                            description: Homepage URL (see workspace_set_homepage)
                            type: string
                          id:
                            type: integer
                          is_startup:
                            description: Whether this workspace opens at launch (see workspace_set_startup)
                            type: boolean
                          layout_count:
                            type: integer
                          name:
                            type: string
                        required:
                          - id
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get workspace info
      tags:
        - Workspace
    put:
      description: Rename a workspace
      operationId: renameWorkspace
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Name for the new workspace
                  type: string
              required:
                - name
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          name:
                            type: string
                          success:
                            type: boolean
                          workspace_id:
                            type: integer
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Rename workspace
      tags:
        - Workspace
  "/api/workspaces/{id}/homepage":
    post:
      description: Set workspace homepage URL
      operationId: setWorkspaceHomePage
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                url:
                  description: Homepage URL
                  type: string
              required:
                - url
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          url:
                            type: string
                          workspace_id:
                            type: integer
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set workspace home page
      tags:
        - Workspace
  "/api/workspaces/{id}/layouts":
    get:
      description: Get all layouts associated with a workspace
      operationId: getWorkspaceLayouts
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          count:
                            type: integer
                          layouts:
                            items:
                              additionalProperties: true
                              properties:
                                app_index:
                                  type: integer
                                title:
                                  type: string
                              type: object
                            type: array
                          workspace_id:
                            type: integer
                        required:
                          - count
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get workspace layouts
      tags:
        - Workspace
  "/api/workspaces/{id}/startup":
    post:
      description: Set workspace as startup workspace
      operationId: setStartupWorkspace
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          workspace_id:
                            type: integer
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set startup workspace
      tags:
        - Workspace
  "/api/workspaces/{id}/switch":
    post:
      description: Switch to a different workspace
      operationId: switchWorkspace
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/BaseSuccess"
                  - properties:
                      data:
                        additionalProperties: true
                        properties:
                          success:
                            type: boolean
                          workspace_id:
                            type: integer
                        required:
                          - success
                        type: object
                    type: object
          description: Success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Switch workspace
      tags:
        - Workspace
  /json:
    get:
      operationId: getTargetListAlias
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
          description: Raw Chrome DevTools Protocol JSON.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
      summary: Get target list alias
      tags:
        - CDP
  "/json/close/{targetId}":
    get:
      operationId: closeTarget
      parameters:
        - in: path
          name: targetId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
          description: Raw Chrome DevTools Protocol JSON.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
      summary: Close target
      tags:
        - CDP
  /json/list:
    get:
      operationId: getTargetList
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
          description: Raw Chrome DevTools Protocol JSON.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
      summary: Get target list
      tags:
        - CDP
  /json/new:
    get:
      operationId: createTarget
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
          description: Raw Chrome DevTools Protocol JSON.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
      summary: Create target
      tags:
        - CDP
  /json/protocol:
    get:
      operationId: getProtocol
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
          description: Raw Chrome DevTools Protocol JSON.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
      summary: Get protocol
      tags:
        - CDP
  /json/version:
    get:
      operationId: getVersion
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
          description: Raw Chrome DevTools Protocol JSON.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed request or missing required parameter.
      summary: Get version
      tags:
        - CDP
  /wd/hub/session:
    post:
      description: Create a new browser instance
      operationId: newSession
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: New session
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}":
    delete:
      description: Close a browser instance
      operationId: deleteSession
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete session
      tags:
        - Selenium
    get:
      description: Navigate a browser to a specific URL
      operationId: getSessionCapabilities
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get session capabilities
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/back":
    post:
      description: Navigate browser back in history
      operationId: back
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Back
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/cookie":
    delete:
      description: Clear all cookies for the browser
      operationId: deleteAllCookies
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete all cookies
      tags:
        - Selenium
    get:
      description: Get all cookies for the browser
      operationId: getAllCookiesGet
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get all cookies
      tags:
        - Selenium
    post:
      description: Set a cookie for the browser
      operationId: addCookie
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Add cookie
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/cookie/{name}":
    delete:
      description: Delete a specific cookie from the browser
      operationId: deleteCookieDelete
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: name
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Delete cookie
      tags:
        - Selenium
    get:
      description: Get a cookie value from the browser
      operationId: getNamedCookie
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: name
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get named cookie
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element":
    post:
      description: Find visible interactive elements whose role or accessible name matches a text query. Returns matches with CSS selectors usable by browser_click/browser_set_value.
      operationId: findElement
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Find element
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/active":
    get:
      description: Find visible interactive elements whose role or accessible name matches a text query. Returns matches with CSS selectors usable by browser_click/browser_set_value.
      operationId: getActiveElement
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get active element
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/attribute/{name}":
    get:
      description: Get an attribute value of an element by CSS selector
      operationId: getElementAttributeGet
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
        - in: path
          name: name
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get element attribute
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/clear":
    post:
      description: Clear an input field
      operationId: elementClear
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Element clear
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/click":
    post:
      description: Click an element by CSS selector
      operationId: elementClick
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Element click
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/css/{propertyName}":
    get:
      description: Get an attribute value of an element by CSS selector
      operationId: getElementCssValue
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
        - in: path
          name: propertyName
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get element css value
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/element":
    post:
      description: Find visible interactive elements whose role or accessible name matches a text query. Returns matches with CSS selectors usable by browser_click/browser_set_value.
      operationId: findElementFromElement
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Find element from element
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/elements":
    post:
      description: Find visible interactive elements whose role or accessible name matches a text query. Returns matches with CSS selectors usable by browser_click/browser_set_value.
      operationId: findElementsFromElement
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Find elements from element
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/enabled":
    get:
      description: Check if an element is visible on the page
      operationId: isElementEnabled
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Is element enabled
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/name":
    get:
      description: Get the text content of an element by CSS selector
      operationId: getElementTagName
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get element tag name
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/property/{name}":
    get:
      description: Get an attribute value of an element by CSS selector
      operationId: getElementProperty
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
        - in: path
          name: name
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get element property
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/rect":
    get:
      description: "Get an element's bounding box (x/y/width/height/top/left/bottom/right) and key computed styles (display, visibility, opacity, font-size, color, background, z-index, position). Useful for spatial reasoning."
      operationId: getElementRect
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get element rect
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/screenshot":
    get:
      description: "Screenshot a single element (scrolls it into view, captures just its bounding box). Returns an image. Far smaller than a full-page screenshot when you only need one component."
      operationId: takeElementScreenshot
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Take element screenshot
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/selected":
    get:
      description: Check if an element is visible on the page
      operationId: isElementSelected
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Is element selected
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/text":
    get:
      description: Get the text content of an element by CSS selector
      operationId: getElementTextGet
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get element text
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/element/{elementId}/value":
    post:
      description: Type text at current cursor position
      operationId: elementSendKeys
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: elementId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Element send keys
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/elements":
    post:
      description: Find visible interactive elements whose role or accessible name matches a text query. Returns matches with CSS selectors usable by browser_click/browser_set_value.
      operationId: findElements
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Find elements
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/execute/async":
    post:
      description: "Execute JavaScript code in browser. The value of the last expression is returned; a returned promise is awaited and top-level await works. A thrown exception, or a promise still pending at timeout_ms, is reported as an error."
      operationId: executeAsyncScript
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute async script
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/execute/sync":
    post:
      description: "Execute JavaScript code in browser. The value of the last expression is returned; a returned promise is awaited and top-level await works. A thrown exception, or a promise still pending at timeout_ms, is reported as an error."
      operationId: executeScript
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Execute script
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/forward":
    post:
      description: Navigate browser forward in history
      operationId: forward
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Forward
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/apps/{uuid}/click":
    post:
      description: "Click at a point inside a mounted native app, in the same pixel coordinates as native_app_screenshot. Best effort: some apps ignore synthesized clicks, so prefer native_app_uia_act when the element is in the control tree. Works while other windows cover MetaDock. The click is delivered asynchronously, so allow a moment before taking a screenshot to see its effect. Not available for games."
      operationId: nativeAppClick
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Native app click
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/apps/{uuid}/key":
    post:
      description: "Press a single named key in a mounted native app, sent to whichever control has focus inside the app (focus one first with native_app_uia_act 'focus'). No modifier combinations such as Ctrl+S. Delivered asynchronously. Not available for games."
      operationId: nativeAppPressKey
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Native app press key
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/apps/{uuid}/screenshot":
    get:
      description: "Capture the contents of a mounted native app window. At full size, image pixels match native_app_uia_tree rects and native_app_click points; when max_width shrinks the image, divide image coordinates by the returned scale to get window coordinates. Not available for games."
      operationId: nativeAppScreenshot
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Native app screenshot
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/apps/{uuid}/type":
    post:
      description: "Type text into a mounted native app as keyboard character input, sent to whichever control has focus inside the app (focus one first with native_app_uia_act 'focus'). Unlike native_app_uia_act 'set_value', rich editors register it as real typing. Use native_app_press_key for Enter, Tab and other named keys. Delivered asynchronously. Not available for games."
      operationId: nativeAppType
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Native app type
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/apps/{uuid}/uia":
    get:
      description: "Read the UI Automation control tree of a mounted native app: buttons, fields, menus and their ids, names, rects and supported actions. Includes the app's open dialogs and menus. Prefer this plus native_app_uia_act over clicking by pixel. Not available for games."
      operationId: nativeAppUiaTree
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Native app uia tree
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/apps/{uuid}/uia/act":
    post:
      description: "Perform an action on a UI Automation element of a mounted native app, by the id from native_app_uia_tree. Does not move the mouse or use the keyboard. set_value can bypass rich-text editors (chat boxes, web-based editors) so the app never sees the text; for those, use 'focus' here and then native_app_type. Not available for games."
      operationId: nativeAppUiaAct
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
        - in: path
          name: uuid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Native app uia act
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/console":
    get:
      description: Get console messages from the browser
      operationId: getConsole
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get console
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/console/clear":
    post:
      description: Clear console messages for the browser
      operationId: clearConsole
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear console
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/device":
    post:
      description: "Emulate a device: viewport, device pixel ratio, touch support and user agent (with matching client hints where the device is Chromium-based). Applies to the live page and survives navigation."
      operationId: emulateDevicePost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Emulate device
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/device/clear":
    post:
      description: "Clear device emulation: drop the viewport, device pixel ratio, touch and user-agent overrides and restore the browser's own identity."
      operationId: clearDeviceEmulationPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear device emulation
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/fingerprint":
    get:
      description: Get current fingerprint protection configuration for a browser
      operationId: getFingerprintGet
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get fingerprint
      tags:
        - Selenium
    post:
      description: "Set fingerprint protection config for a browser. Supports canvas, WebGL, and audio protection with per-profile deterministic fingerprints or random-per-refresh mode. REPLACES the whole config: any section left out of the body is reset to its default, not kept as it was, so a partial body silently clears identity, network, device, timing and permissions. To change one section and leave the rest alone, use browser_set_fingerprint_canvas, browser_set_fingerprint_webgl or browser_set_fingerprint_audio, which preserve everything they do not name."
      operationId: setFingerprintPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set fingerprint
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/fingerprint/audio":
    post:
      description: Configure audio fingerprint protection for a browser
      operationId: setFingerprintAudioPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set fingerprint audio
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/fingerprint/canvas":
    post:
      description: Configure canvas fingerprint protection for a browser
      operationId: setFingerprintCanvasPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set fingerprint canvas
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/fingerprint/clear":
    post:
      description: Disable all fingerprint protection for a browser
      operationId: clearFingerprintPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear fingerprint
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/fingerprint/webgl":
    post:
      description: Configure WebGL fingerprint protection for a browser
      operationId: setFingerprintWebGl
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set fingerprint web gl
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/geo-override":
    get:
      description: "Get the geolocation, timezone and locale override configuration for a browser, including the last resolved result in auto mode."
      operationId: getGeoOverrideGet
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get geo override
      tags:
        - Selenium
    post:
      description: "Set the geolocation, timezone and locale override for a browser. In auto mode the values are resolved from the profile's proxy IP. This is the persisted per-profile configuration - browser_set_geolocation is a different thing, a raw lat/lng CDP override that is not stored and applies no timezone. Requires fingerprint protection to be enabled on the same profile."
      operationId: setGeoOverridePost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set geo override
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/geo-override/clear":
    post:
      description: "Disable the geolocation, timezone and locale override for a browser and release the overrides."
      operationId: clearGeoOverridePost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear geo override
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/geolocation":
    post:
      description: Set geolocation for the browser
      operationId: setGeolocationPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set geolocation
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/geolocation/clear":
    post:
      description: Clear geolocation override for the browser
      operationId: clearGeolocationPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear geolocation
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/gpu-presets":
    get:
      description: "List the GPU presets browser_set_fingerprint_webgl accepts as gpu_preset, with a description of each."
      operationId: listGpuPresets
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List gpu presets
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/headless":
    post:
      description: "Toggle headless mode for a browser. When switching from headless to visible, the browser is automatically docked into the layout."
      operationId: setHeadlessPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set headless
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/inject/css":
    post:
      description: Inject CSS into the page
      operationId: injectCss
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Inject css
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/inject/script":
    post:
      description: Inject a script URL into the page
      operationId: injectScript
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Inject script
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/offline":
    post:
      description: Set offline mode for the browser
      operationId: setOfflinePost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set offline
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/pdf":
    post:
      description: Print page to PDF. Output is restricted to your Documents or Downloads folder.
      operationId: printPdf
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Print pdf
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/permissions":
    get:
      description: Navigate a browser to a specific URL
      operationId: listSitePermissions
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: List site permissions
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/permissions/clear":
    post:
      description: Clear an input field
      operationId: clearSitePermissions
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Clear site permissions
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/permissions/remove":
    post:
      description: Navigate a browser to a specific URL
      operationId: removeSitePermission
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Remove site permission
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/permissions/remove-host":
    post:
      description: Navigate a browser to a specific URL
      operationId: removeSiteHostPermissions
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Remove site host permissions
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/profile/proxy":
    get:
      description: "Get the proxy configured for a browser profile, with any credentials stripped. Returns scheme://host:port only - the stored form embeds user:pass, which is never returned over the API."
      operationId: getProfileProxyGet
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get profile proxy
      tags:
        - Selenium
    post:
      description: Set the proxy address for a browser profile. Affects new browsers created with this profile (already-running browsers are unaffected).
      operationId: setProfileProxyPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set profile proxy
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/scroll-by":
    post:
      description: Navigate a browser to a specific URL
      operationId: scrollByPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Scroll by
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/scroll-to":
    post:
      description: Navigate a browser to a specific URL
      operationId: scrollToPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Scroll to
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/user-agent":
    post:
      description: Set user agent for the browser
      operationId: setUserAgentPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set user agent
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/viewport":
    post:
      description: "Resize the browser's web view. While the browser is docked the dock layout owns its size and re-applies it, so a docked browser snaps back and browser_get_viewport reports the dock's size; for a stable page viewport use browser_emulate_device."
      operationId: setViewport
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set viewport
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/wait/element":
    post:
      description: Find visible interactive elements whose role or accessible name matches a text query. Returns matches with CSS selectors usable by browser_click/browser_set_value.
      operationId: waitForElementExt
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Wait for element ext
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/wait/load":
    post:
      description: Navigate a browser to a specific URL
      operationId: waitForLoadExt
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Wait for load ext
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/metadock/zoom":
    get:
      description: Get current zoom factor for the browser
      operationId: getZoomGet
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get zoom
      tags:
        - Selenium
    post:
      description: Set zoom factor for the browser
      operationId: setZoomPost
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set zoom
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/refresh":
    post:
      description: Reload the current page
      operationId: refresh
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Refresh
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/screenshot":
    get:
      description: "Take a screenshot of the page - returns base64-encoded PNG image data. Use save=true for batch operations to reduce token usage (returns UUID instead of image data, use browser_get_screenshot to retrieve)."
      operationId: takeScreenshotGet
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Take screenshot
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/source":
    get:
      description: Get raw page source HTML. Token-heavy - prefer browser_read for clean content. Supports clean (strip script/style/svg/etc.) and max_chars + offset paging to avoid dumping the whole document.
      operationId: getPageSourceGet
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get page source
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/timeouts":
    get:
      description: Navigate a browser to a specific URL
      operationId: getTimeouts
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get timeouts
      tags:
        - Selenium
    post:
      description: Navigate a browser to a specific URL
      operationId: setTimeouts
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set timeouts
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/title":
    get:
      description: Get current page title
      operationId: getTitle
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get title
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/url":
    get:
      description: "Get current URL of a browser. Like an address bar, this is the URL that was navigated to even when it failed to load; load_failed says whether an error page is showing instead."
      operationId: getCurrentUrlGet
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get current url
      tags:
        - Selenium
    post:
      description: Navigate a browser to a specific URL
      operationId: navigateTo
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Navigate to
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/window":
    delete:
      description: Close a browser instance
      operationId: closeWindow
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Close window
      tags:
        - Selenium
    get:
      description: Navigate a browser to a specific URL
      operationId: getWindowHandle
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get window handle
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/window/handles":
    get:
      description: Navigate a browser to a specific URL
      operationId: getAllWindowHandles
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get all window handles
      tags:
        - Selenium
  "/wd/hub/session/{sessionId}/window/rect":
    get:
      description: "Get an element's bounding box (x/y/width/height/top/left/bottom/right) and key computed styles (display, visibility, opacity, font-size, color, background, z-index, position). Useful for spatial reasoning."
      operationId: getWindowRect
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get window rect
      tags:
        - Selenium
    post:
      description: "Get an element's bounding box (x/y/width/height/top/left/bottom/right) and key computed styles (display, visibility, opacity, font-size, color, background, z-index, position). Useful for spatial reasoning."
      operationId: setWindowRect
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Set window rect
      tags:
        - Selenium
  /wd/hub/status:
    get:
      operationId: getStatus
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverValue"
          description: WebDriver success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Malformed request or missing required parameter.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: Missing or invalid API key.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebDriverError"
          description: "Origin rejected, connection not approved, or the key's grant excludes this operation."
      summary: Get status
      tags:
        - Selenium
security:
  - BearerAuth: []
  - ApiKeyAuth: []
servers:
  - description: Default local MetaDock server (host/port configurable)
    url: "http://127.0.0.1:8080"
tags:
  - description: "Create, control, inspect, and automate browser instances (REST)."
    name: Browser
  - description: Manage workspaces (collections of layouts) (REST).
    name: Workspace
  - description: Manage layouts/docks and browser profiles (REST).
    name: Layout
  - description: Mount and control docked native applications (REST).
    name: App
  - description: Manage bookmarks and categories (REST).
    name: Bookmark
  - description: Query and prune browsing history (REST).
    name: History
  - description: Run searches and manage search aliases (REST).
    name: Search
  - description: List and control downloads (REST).
    name: Download
  - description: Manage adblock filter lists and per-site overrides (REST).
    name: Adblock
  - description: Inspect and revoke site permissions (REST).
    name: Permission
  - description: Read and update application settings (REST).
    name: Settings
  - description: "W3C WebDriver protocol under /wd/hub, plus MetaDock-specific extensions. Authenticates via the Authorization: Bearer header only (scope selenium); responses use the WebDriver { \"value\": ... } envelope."
    name: Selenium
  - description: "Chrome DevTools Protocol: HTTP discovery endpoints (/json/...) and WebSocket upgrade endpoints (/devtools/...) speaking CDP JSON-RPC."
    name: CDP
