Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 42 additions & 10 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -300,16 +300,48 @@
{
"group": "Tools",
"pages": [
"reference/mcp-server/tools/manage-browsers",
"reference/mcp-server/tools/manage-profiles",
"reference/mcp-server/tools/manage-browser-pools",
"reference/mcp-server/tools/manage-proxies",
"reference/mcp-server/tools/manage-extensions",
"reference/mcp-server/tools/manage-apps",
"reference/mcp-server/tools/computer-action",
"reference/mcp-server/tools/execute-playwright-code",
"reference/mcp-server/tools/exec-command",
"reference/mcp-server/tools/search-docs"
"reference/mcp-server/tools",
{
"group": "Browser Control",
"pages": [
"reference/mcp-server/tools/manage-browsers",
"reference/mcp-server/tools/manage-browser-pools",
"reference/mcp-server/tools/browser-curl",
"reference/mcp-server/tools/computer-action",
"reference/mcp-server/tools/execute-playwright-code",
"reference/mcp-server/tools/exec-command"
]
},
{
"group": "Browser Resources",
"pages": [
"reference/mcp-server/tools/manage-profiles",
"reference/mcp-server/tools/manage-proxies",
"reference/mcp-server/tools/manage-extensions"
]
},
{
"group": "Apps & Organization",
"pages": [
"reference/mcp-server/tools/manage-apps",
"reference/mcp-server/tools/manage-projects",
"reference/mcp-server/tools/manage-api-keys"
]
},
{
"group": "Managed Auth",
"pages": [
"reference/mcp-server/tools/manage-auth-connections",
"reference/mcp-server/tools/manage-credentials",
"reference/mcp-server/tools/manage-credential-providers"
]
},
{
"group": "Utilities",
"pages": [
"reference/mcp-server/tools/search-docs"
]
}
]
},
{
Expand Down
6 changes: 3 additions & 3 deletions reference/mcp-server.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ The server is a centrally hosted, authenticated remote MCP using OAuth 2.1 with
Authorize access through your browser when prompted. See [Authentication](/reference/mcp-server/authentication) for OAuth and API key options.
</Step>
<Step title="Start automating">
Use the [tools](/reference/mcp-server/tools/manage-browsers) to launch browsers, run Playwright code, and invoke your apps.
Use the [tools](/reference/mcp-server/tools) to launch browsers, warm browser pools, run Playwright code, invoke your apps, and manage auth workflows.
</Step>
</Steps>

Expand All @@ -37,8 +37,8 @@ The server is a centrally hosted, authenticated remote MCP using OAuth 2.1 with
<Card icon="rectangle-terminal" title="Connect your client" href="/reference/mcp-server/clients/claude">
Setup for Claude, Cursor, VS Code, and more.
</Card>
<Card icon="wrench" title="Tools" href="/reference/mcp-server/tools/manage-browsers">
Browsers, profiles, proxies, apps, and more.
<Card icon="wrench" title="Tools" href="/reference/mcp-server/tools">
Browsers, pools, apps, projects, API keys, and managed auth.
</Card>
<Card icon="database" title="Resources" href="/reference/mcp-server/resources">
Read browsers, pools, profiles, and apps.
Expand Down
16 changes: 11 additions & 5 deletions reference/mcp-server/resources.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,17 @@ title: "Resources"
description: "Read browsers, pools, profiles, and apps as MCP resources"
---

The Kernel MCP server exposes your account's objects as MCP resources. Each resource URI lists all items or returns a specific one.
The Kernel MCP server exposes your account's objects as MCP resources. List URIs return collections, and templated URIs return one object.

| Resource | Description |
|----------|-------------|
| `browsers://` | Access browser sessions (list all or get a specific session). |
| `browser_pools://` | Access browser pools (list all or get a specific pool). |
| `profiles://` | Access browser profiles (list all or get a specific profile). |
| `apps://` | Access deployed apps (list all or get a specific app). |
| `browsers://` | List browser sessions. |
| `browsers://{sessionId}` | Read one browser session. |
| `browser-pools://` | List browser pools. |
| `browser-pools://{idOrName}` | Read one browser pool by ID or name. |
| `profiles://` | List browser profiles. |
| `profiles://{profileName}` | Read one browser profile by name. |
| `apps://` | List deployed apps. |
| `apps://{appName}` | Read one deployed app by name. |

Use resources when your client needs read-only context. Use the matching `manage_*` tool when you need to create, update, delete, acquire, release, or invoke something.
85 changes: 85 additions & 0 deletions reference/mcp-server/tools.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
---
title: "Tools"
description: "Choose the right Kernel MCP tool for browser automation, apps, projects, and managed auth"
---

Kernel MCP tools let your agent create and control browser sessions, manage reusable browser resources, invoke apps, organize project access, and keep profiles authenticated.

Examples on these pages show MCP tool argument payloads, not SDK code. Use the linked product guides when you need TypeScript, Python, or Go examples.

## Source of truth

The live argument schema for each tool comes from the Kernel MCP server implementation. These pages explain how to use those tools in agent workflows. When a tool action, parameter, or response changes, update the server tool definition and the matching page together.

## Browser control

<Columns cols={2}>
<Card icon="globe" title="Manage Browsers" href="/reference/mcp-server/tools/manage-browsers">
Create, update, list, inspect, and delete live browser sessions.
</Card>
<Card icon="layers" title="Manage Browser Pools" href="/reference/mcp-server/tools/manage-browser-pools">
Create, resize, acquire from, release to, flush, and delete pre-warmed browser pools.
</Card>
<Card icon="terminal" title="Browser Curl" href="/reference/mcp-server/tools/browser-curl">
Send HTTP requests through a browser session's cookies, headers, and network path.
</Card>
<Card icon="mouse-pointer-click" title="Computer Action" href="/reference/mcp-server/tools/computer-action">
Move, click, type, scroll, wait, screenshot, and manage clipboard state.
</Card>
<Card icon="code" title="Execute Playwright Code" href="/reference/mcp-server/tools/execute-playwright-code">
Run Playwright code against an existing Kernel browser session.
</Card>
<Card icon="square-terminal" title="Exec Command" href="/reference/mcp-server/tools/exec-command">
Run shell commands inside the browser VM.
</Card>
</Columns>

## Browser resources

<Columns cols={2}>
<Card icon="user-circle" title="Manage Profiles" href="/reference/mcp-server/tools/manage-profiles">
Set up, list, and delete browser profiles.
</Card>
<Card icon="route" title="Manage Proxies" href="/reference/mcp-server/tools/manage-proxies">
Create, list, and delete proxy configurations.
</Card>
<Card icon="puzzle-piece" title="Manage Extensions" href="/reference/mcp-server/tools/manage-extensions">
List and delete browser extensions uploaded to your organization.
</Card>
</Columns>

## Apps and organization

<Columns cols={2}>
<Card icon="rocket" title="Manage Apps" href="/reference/mcp-server/tools/manage-apps">
List apps, invoke actions, inspect deployments, and inspect invocation results.
</Card>
<Card icon="folder-tree" title="Manage Projects" href="/reference/mcp-server/tools/manage-projects">
Create, list, inspect, rename, archive, and delete projects.
</Card>
<Card icon="key" title="Manage API Keys" href="/reference/mcp-server/tools/manage-api-keys">
Create, list, inspect, rename, and revoke API keys.
</Card>
</Columns>

## Managed auth

<Columns cols={2}>
<Card icon="lock" title="Manage Auth Connections" href="/reference/mcp-server/tools/manage-auth-connections">
Create managed auth connections, start login flows, poll state, and submit user input.
</Card>
<Card icon="badge-check" title="Manage Credentials" href="/reference/mcp-server/tools/manage-credentials">
Store, rotate, inspect, delete, and generate TOTP codes for managed auth credentials.
</Card>
<Card icon="vault" title="Manage Credential Providers" href="/reference/mcp-server/tools/manage-credential-providers">
Connect external credential providers and list available provider items.
</Card>
</Columns>

## Utilities

<Columns cols={2}>
<Card icon="search" title="Search Docs" href="/reference/mcp-server/tools/search-docs">
Search Kernel documentation from your MCP client.
</Card>
</Columns>
58 changes: 58 additions & 0 deletions reference/mcp-server/tools/browser-curl.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
title: "Browser Curl"
description: "Send HTTP requests through an existing browser session"
---

Use `browser_curl` when an agent needs an HTTP request to behave like it came from an existing browser session. The request goes through the browser's Chrome network stack, so it can use the session's cookies, proxy, network context, and origin behavior.

This is useful after a browser has logged in to a site and the agent needs a JSON endpoint, a redirect target, or a binary asset without writing Playwright code for the request.

<Note>For documentation lookup or general web search, use `search_docs` or your agent's normal search tool instead.</Note>

## Recommended flow

1. Use `manage_browsers` or `manage_browser_pools` to get a browser with the right cookies, proxy, and profile.
2. Call `browser_curl` with the returned `session_id`.
3. Use `response_encoding: "base64"` when the response might be binary.
4. Use `execute_playwright_code` instead when you need page JavaScript, DOM state, or user-visible navigation.

## Parameters

| Parameter | Description |
|-----------|-------------|
| `session_id` | Browser session ID. Required. |
| `url` | Target `http` or `https` URL. Required. |
| `method` | HTTP method: `GET`, `HEAD`, `POST`, `PUT`, `PATCH`, `DELETE`, or `OPTIONS`. Defaults to `GET`. |
| `headers` | Custom headers merged with browser defaults. |
| `body` | Request body for `POST`, `PUT`, or `PATCH` requests. |
| `response_encoding` | Response body encoding: `utf8` or `base64`. Use `base64` for binary content. |
| `timeout_ms` | Request timeout in milliseconds. Must be 1 or greater. |

## Read an authenticated endpoint

```json
{
"session_id": "browser_2vDb5kRmZ4nP8xQ1cA7",
"url": "https://app.example.com/api/account",
"method": "GET",
"headers": {
"Accept": "application/json"
},
"timeout_ms": 10000
}
```

## Post with browser cookies

```json
{
"session_id": "browser_2vDb5kRmZ4nP8xQ1cA7",
"url": "https://app.example.com/api/tasks",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "{\"title\":\"Run nightly checkout audit\"}",
"response_encoding": "utf8"
}
```
36 changes: 30 additions & 6 deletions reference/mcp-server/tools/computer-action.mdx
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
---
title: "computer_action"
description: "Mouse, keyboard, and screenshot controls for browser sessions"
title: "Computer Action"
description: "Mouse, keyboard, clipboard, and screenshot controls for browser sessions"
---

Execute computer actions on a browser session. Pass a single action for simple operations, or pass multiple actions to batch them into one request for lower latency.
Use `computer_action` when an agent needs to interact with the browser like a user: click, type, scroll, drag, copy, paste, or inspect the screen. Pass one action for a simple operation, or batch several actions into one call to reduce latency.

<Tip>Always include a `screenshot` as the last action so you can see the result. `screenshot` and `get_mouse_position` return data, so they must come last.</Tip>
<Tip>Include a `screenshot` as the last action when you need to see the result. `screenshot`, `read_clipboard`, and `get_mouse_position` return data, so they must be the last action if included.</Tip>

## Parameters

| Parameter | Description |
|-----------|-------------|
| `session_id` | Browser session ID. Required. |
| `actions` | Ordered list of actions to perform. Required. |
| `actions` | Ordered list of one or more actions to perform. Required. |

## Action types

Expand All @@ -26,10 +26,19 @@ Execute computer actions on a browser session. Pass a single action for simple o
| `drag_mouse` | Drag along a `path` of `[x, y]` points. |
| `set_cursor` | Show or hide the cursor (`hidden`). |
| `sleep` | Wait `duration_ms` between steps when the page needs time to react. |
| `write_clipboard` | Write `text` to the browser session clipboard. |
| `read_clipboard` | Read the browser session clipboard. Must be the last action if included. |
| `screenshot` | Capture the page, optionally limited to a `region`. |
| `get_mouse_position` | Return the current cursor position. |

## Example
## Recommended flow

1. Start with `screenshot` so the agent can see the viewport and coordinate space.
2. Batch related pointer and keyboard actions together.
3. Add `sleep` between actions that trigger navigation, animation, or async UI updates.
4. End with `screenshot`, `read_clipboard`, or `get_mouse_position` only when you need returned data.

## Search from the page

```json
{
Expand All @@ -43,3 +52,18 @@ Execute computer actions on a browser session. Pass a single action for simple o
]
}
```

## Clipboard example

```json
{
"session_id": "browser_2vDb5kRmZ4nP8xQ1cA7",
"actions": [
{ "type": "write_clipboard", "write_clipboard": { "text": "https://kernel.sh/docs" } },
{ "type": "press_key", "press_key": { "keys": ["Ctrl+l"] } },
{ "type": "press_key", "press_key": { "keys": ["Ctrl+v"] } },
{ "type": "press_key", "press_key": { "keys": ["Return"] } },
{ "type": "screenshot" }
]
}
```
4 changes: 2 additions & 2 deletions reference/mcp-server/tools/exec-command.mdx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: "exec_command"
title: "Exec Command"
description: "Run shell commands inside a browser VM"
---

Execute a command synchronously inside a browser VM. Returns decoded stdout, stderr, and the exit code. The `command` field is the executable; pass its arguments in `args`.
Use `exec_command` to execute a command synchronously inside a browser VM. It returns decoded stdout, stderr, and the exit code. The `command` field is the executable; pass its arguments in `args`.

## Parameters

Expand Down
4 changes: 2 additions & 2 deletions reference/mcp-server/tools/execute-playwright-code.mdx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: "execute_playwright_code"
title: "Execute Playwright Code"
description: "Run Playwright/TypeScript code against a browser session"
---

Execute Playwright/TypeScript automation code against a Kernel browser session. If `session_id` is provided, uses that existing browser; otherwise creates a new one. Returns the result with a video replay URL, and auto-cleans up browsers it creates.
Use `execute_playwright_code` to run Playwright/TypeScript automation code against a Kernel browser session. If you provide `session_id`, it uses that existing browser. If you omit `session_id`, it creates a browser and cleans it up after execution.

<Tip>Use `computer_action` with the `screenshot` action instead of `page.screenshot()` in your code. For a comprehensive page state snapshot, use `await page._snapshotForAI()`.</Tip>

Expand Down
61 changes: 61 additions & 0 deletions reference/mcp-server/tools/manage-api-keys.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: "Manage API Keys"
description: "Create, list, update, and revoke Kernel API keys"
---

Use `manage_api_keys` when an agent or automation workflow needs to provision, inspect, rename, or revoke Kernel API keys. Created keys include the plaintext secret once; later reads return masked key metadata.

Create project-scoped keys for workloads that only need one project's resources. Use org-wide keys only when the workload needs access across projects.

For API key concepts, scoping rules, rotation guidance, and SDK examples, see [API Keys](/info/api-keys).

## Actions

| Action | Description |
|--------|-------------|
| `create` | Create an org-wide or project-scoped API key. |
| `list` | List masked API keys. |
| `get` | Retrieve one masked API key. |
| `update` | Rename an API key. |
| `delete` | Revoke an API key. |

## Recommended flow

1. Call `list` before creating a key so you don't duplicate an existing workload key.
2. Call `create` with `project_id` for project-scoped automation.
3. Store the returned plaintext key immediately.
4. Call `update` when a key's owner or purpose changes.
5. Call `delete` to revoke keys for retired workloads.

## Parameters

| Parameter | Description |
|-----------|-------------|
| `action` | Operation to perform. Required. |
| `api_key_id` | API key ID. Required for `get`, `update`, and `delete`. |
| `name` | (create, update) API key name. |
| `project_id` | (create) Project ID for project-scoped keys. Omit or use `null` for org-wide keys. |
| `days_to_expire` | (create) Days until expiry, up to 3650. Use `null` for no expiry. |
| `limit` | (list) Max results per page. Must be 1-100. |
| `offset` | (list) Pagination offset. Must be 0 or greater. |

## Create a project-scoped key

```json
{
"action": "create",
"name": "checkout-agent-prod",
"project_id": "proj_2vE0M7bLwX9kQ4nP3sY8",
"days_to_expire": 90
}
```

## Rename a key

```json
{
"action": "update",
"api_key_id": "ak_2vE1qJ7ZpLm8N4cT6rW0",
"name": "checkout-agent-prod-rotated"
}
```
Loading
Loading