> ## Documentation Index
> Fetch the complete documentation index at: https://hyperbrowser.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List WebMCP tools

> Discover tools across open tabs and frames.

See the [WebMCP guide](/docs/sessions/webmcp) for SDK examples and invocation lifecycle details.


## OpenAPI

````yaml openapi.json GET /api/session/{id}/webmcp/tools
openapi: 3.0.1
info:
  title: Hyperbrowser API
  version: 1.0.0
servers:
  - url: https://api.hyperbrowser.ai
    description: Production server
security: []
paths:
  /api/session/{id}/webmcp/tools:
    get:
      summary: List WebMCP tools
      description: >-
        Discover tools across open tabs and frames. Inspect source information
        as tool names can repeat. Tool references are bound to their original
        document. Requires an active session created with enableWebMcp: true and
        an API key with browser.sessions.update permission.
      operationId: listWebmcpTools
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Session ID.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebMCPToolsResponse'
        '400':
          description: Invalid request or tool reference.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebMCPErrorResponse'
        '401':
          description: Authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebMCPErrorResponse'
        '403':
          description: Insufficient API key permission.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebMCPErrorResponse'
        '404':
          description: >-
            Session, tool, or invocation not found. Expired handles return
            invocation_not_found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebMCPErrorResponse'
        '409':
          description: >-
            Session is stopped, unavailable, or was not created with WebMCP
            enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebMCPErrorResponse'
        '429':
          description: >-
            Rate limit reached; too_many_invocations indicates 16 active
            invocations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebMCPErrorResponse'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebMCPErrorResponse'
        '502':
          description: WebMCP service unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebMCPErrorResponse'
        '504':
          description: >-
            Request timed out. For invocation requests, outcome_unknown means
            the tool may have acted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebMCPErrorResponse'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: javascript
          label: Node.js
          source: >-
            import { Hyperbrowser } from "@hyperbrowser/sdk";


            const client = new Hyperbrowser();


            const discovery = await
            client.sessions.webmcp.listTools("session-id");
        - lang: python
          label: Python
          source: |-
            from hyperbrowser import Hyperbrowser

            client = Hyperbrowser()

            discovery = client.sessions.webmcp.list_tools("session-id")
components:
  schemas:
    WebMCPToolsResponse:
      type: object
      properties:
        tools:
          type: array
          items:
            $ref: '#/components/schemas/WebMCPTool'
        nativeSupported:
          type: boolean
        truncated:
          type: boolean
          description: True when discovery omitted metadata or tools to stay within limits.
      required:
        - tools
        - nativeSupported
        - truncated
    WebMCPErrorResponse:
      type: object
      properties:
        message:
          type: string
        error:
          type: string
        code:
          type: string
        invocationId:
          type: string
      description: >-
        HTTP failure. Structured WebMCP errors include message and code; other
        session or validation errors may only include error or message. An
        outcome_unknown error may include an invocationId for later retrieval.
    WebMCPTool:
      type: object
      properties:
        toolRef:
          type: string
          description: >-
            Opaque reference bound to the original document. Rediscover after
            navigation; do not construct this value.
        name:
          type: string
        title:
          type: string
        description:
          type: string
        inputSchema:
          type: object
          additionalProperties: true
          description: JSON Schema supplied by the page.
        outputSchema:
          type: object
          additionalProperties: true
        annotations:
          $ref: '#/components/schemas/WebMCPAnnotations'
        declarative:
          type: boolean
        backendNodeId:
          type: integer
          description: >-
            Optional native CDP backend node ID. Scoped to the source
            target/document; absent when unavailable. Use toolRef for
            invocation.
        source:
          $ref: '#/components/schemas/WebMCPSource'
      required:
        - toolRef
        - name
        - description
        - annotations
        - declarative
        - source
    WebMCPAnnotations:
      type: object
      properties:
        readOnly:
          type: boolean
        untrustedContent:
          type: boolean
        consequential:
          type: boolean
        autosubmit:
          type: boolean
        destructive:
          type: boolean
        idempotent:
          type: boolean
        openWorld:
          type: boolean
      required:
        - readOnly
        - untrustedContent
        - consequential
        - autosubmit
      description: >-
        Page-provided hints, not a security or authorization guarantee.
        Destructive, idempotent, and openWorld are optional polyfill hints.
    WebMCPSource:
      type: object
      properties:
        provider:
          type: string
          enum:
            - native
            - polyfill
        tabId:
          type: string
        pageUrl:
          type: string
        pageTitle:
          type: string
        frame:
          $ref: '#/components/schemas/WebMCPFrame'
      required:
        - provider
        - tabId
        - pageUrl
        - pageTitle
        - frame
    WebMCPFrame:
      type: object
      properties:
        id:
          type: string
        url:
          type: string
        isMainFrame:
          type: boolean
      required:
        - id
        - url
        - isMainFrame
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.