Browserless · Capability

Browserless — BrowserQL

Browserless BrowserQL (BQL) capability exposing the GraphQL automation surface at /chromium/bql, /chrome/bql, and /stealth/bql. Sends arbitrary BQL mutations (goto, click, type, evaluate, html, mapSelector, screenshot, pdf, reconnect, solve) to the managed browser and returns structured GraphQL responses.

Browserless — BrowserQL is a Naftiko capability published by Browserless, one of 4 capabilities the APIs.io network indexes for this provider. It bundles 3 operations across the POST method rooted at /bql.

The capability includes 3 state-changing operations. Lead operation: Run BQL against Chromium. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Browserless, BrowserQL, GraphQL, Stealth, and CAPTCHA.

Run with Naftiko BrowserlessBrowserQLGraphQLStealthCAPTCHA

What You Can Do

POST
Runchromiumbql
/bql/chromium
POST
Runchromebql
/bql/chrome
POST
Runstealthbql
/bql/stealth

MCP Tools

browserless-bql-chromium

Run BQL against Chromium.

browserless-bql-chrome

Run BQL against Chrome.

browserless-bql-stealth

Run BQL against the stealth route.

Capability Spec

browserql.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Browserless — BrowserQL
  description: >-
    Browserless BrowserQL (BQL) capability exposing the GraphQL automation
    surface at /chromium/bql, /chrome/bql, and /stealth/bql. Sends arbitrary
    BQL mutations (goto, click, type, evaluate, html, mapSelector, screenshot,
    pdf, reconnect, solve) to the managed browser and returns structured
    GraphQL responses.
  tags:
    - Browserless
    - BrowserQL
    - GraphQL
    - Stealth
    - CAPTCHA
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
  - namespace: env
    keys:
      BROWSERLESS_API_TOKEN: BROWSERLESS_API_TOKEN
capability:
  consumes:
    - type: http
      namespace: bql
      baseUri: https://production-sfo.browserless.io
      description: BrowserQL consumes block over three GraphQL routes.
      resources:
        - name: chromium-bql
          path: /chromium/bql
          operations:
            - name: runChromiumBql
              method: POST
              description: Run a BQL mutation against open-source Chromium.
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: $.
              inputParameters:
                - name: body
                  in: body
                  type: object
                  description: GraphQL request payload ({ query, variables, operationName }).
                  required: true
                - name: token
                  in: query
                  type: string
                  required: true
        - name: chrome-bql
          path: /chrome/bql
          operations:
            - name: runChromeBql
              method: POST
              description: Run a BQL mutation against genuine Chrome.
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: $.
              inputParameters:
                - name: body
                  in: body
                  type: object
                  required: true
                - name: token
                  in: query
                  type: string
                  required: true
        - name: stealth-bql
          path: /stealth/bql
          operations:
            - name: runStealthBql
              method: POST
              description: Run a BQL mutation against the stealth-hardened browser.
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: $.
              inputParameters:
                - name: body
                  in: body
                  type: object
                  required: true
                - name: token
                  in: query
                  type: string
                  required: true
      authentication:
        type: apikey
        key: token
        value: '{{env.BROWSERLESS_API_TOKEN}}'
        placement: query
  exposes:
    - type: rest
      namespace: bql-rest
      port: 8080
      description: REST adapter for the BrowserQL routes.
      resources:
        - path: /bql/chromium
          name: chromium-bql
          operations:
            - method: POST
              name: runChromiumBql
              call: bql.runChromiumBql
              with: { body: rest.body }
              outputParameters: [{ type: object, mapping: $. }]
        - path: /bql/chrome
          name: chrome-bql
          operations:
            - method: POST
              name: runChromeBql
              call: bql.runChromeBql
              with: { body: rest.body }
              outputParameters: [{ type: object, mapping: $. }]
        - path: /bql/stealth
          name: stealth-bql
          operations:
            - method: POST
              name: runStealthBql
              call: bql.runStealthBql
              with: { body: rest.body }
              outputParameters: [{ type: object, mapping: $. }]
    - type: mcp
      namespace: bql-mcp
      port: 9090
      transport: http
      description: MCP adapter — one tool per BQL route.
      tools:
        - name: browserless-bql-chromium
          description: Run BQL against Chromium.
          hints: { readOnly: false, destructive: false, idempotent: false }
          call: bql.runChromiumBql
          with: { body: tools.body }
          outputParameters: [{ type: object, mapping: $. }]
        - name: browserless-bql-chrome
          description: Run BQL against Chrome.
          hints: { readOnly: false, destructive: false, idempotent: false }
          call: bql.runChromeBql
          with: { body: tools.body }
          outputParameters: [{ type: object, mapping: $. }]
        - name: browserless-bql-stealth
          description: Run BQL against the stealth route.
          hints: { readOnly: false, destructive: false, idempotent: false }
          call: bql.runStealthBql
          with: { body: tools.body }
          outputParameters: [{ type: object, mapping: $. }]