---
title: "List WebMCP tools"
method: GET
path: "/api/session/{id}/webmcp/tools"
---

# List WebMCP tools

`GET /api/session/{id}/webmcp/tools`

## Request

- Base URL: `https://api.hyperbrowser.ai`
- URL: `https://api.hyperbrowser.ai/api/session/{id}/webmcp/tools`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/hyperbrowser/apis/hyperbrowser-api/docs/api/session/:id/webmcp/tools/get.ts> (a function with typed inputs; its response is checked against the schema)

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.

## Path parameters

- `id` string, uuid, required

## Response `200`

Success

- WebMCPToolsResponse
  - `tools` WebMCPTool[], required
    - `toolRef` string, required: Opaque reference bound to the original document. Rediscover after navigation; do not construct this value.
    - `name` string, required
    - `title` string
    - `description` string, required
    - `inputSchema` object: JSON Schema supplied by the page.
    - `outputSchema` object
    - `annotations` WebMCPAnnotations, required: Page-provided hints, not a security or authorization guarantee. Destructive, idempotent, and openWorld are optional polyfill hints.
      - `readOnly` boolean, required
      - `untrustedContent` boolean, required
      - `consequential` boolean, required
      - `autosubmit` boolean, required
      - `destructive` boolean
      - `idempotent` boolean
      - `openWorld` boolean
    - `declarative` boolean, required
    - `backendNodeId` integer: Optional native CDP backend node ID. Scoped to the source target/document; absent when unavailable. Use toolRef for invocation.
    - `source` WebMCPSource, required
      - `provider` 'native' | 'polyfill', required
      - `tabId` string, required
      - `pageUrl` string, required
      - `pageTitle` string, required
      - `frame` WebMCPFrame, required
        - `id` string, required
        - `url` string, required
        - `isMainFrame` boolean, required
  - `nativeSupported` boolean, required
  - `truncated` boolean, required: True when discovery omitted metadata or tools to stay within limits.

## Other responses

- `400`: Invalid request or tool reference.
- `401`: Authentication required.
- `403`: Insufficient API key permission.
- `404`: Session, tool, or invocation not found. Expired handles return invocation_not_found.
- `409`: Session is stopped, unavailable, or was not created with WebMCP enabled.
- `429`: Rate limit reached; too_many_invocations indicates 16 active invocations.
- `500`: Internal server error.
- `502`: WebMCP service unavailable.
- `504`: Request timed out. For invocation requests, outcome_unknown means the tool may have acted.

## Changes

- **2026-10-11** `6bf1269eede9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hyperbrowser/apis/hyperbrowser-api/changes/api/session/:id/webmcp/tools/get.md)

---

[API](https://skmtc.dev/hyperbrowser/apis/hyperbrowser-api.md) - [All operations](https://skmtc.dev/hyperbrowser/apis/hyperbrowser-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hyperbrowser/apis/hyperbrowser-api/revisions/ef089024c533?raw)
