# browser_pdf_save

A write tool on the Playwright MCP MCP server.

Agent View of the PolicyLayer registry record for `browser_pdf_save`. HTML page: https://policylayer.com/tools/alialobidm-playwright-mcp/browser-pdf-save

## Facts

- Tool: `browser_pdf_save`
- Server: Playwright MCP (`alialobidm/playwright-mcp`) — https://policylayer.com/tools/alialobidm-playwright-mcp.md
- Homepage: https://github.com/alialobidm/playwright-mcp
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Rate-limited

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "browser_pdf_save",
    "arguments": {}
  }
}
```

## Why browser_pdf_save is rated Medium

The tool creates a new PDF file, which is a reversible write operation (the file can be deleted or overwritten). It does not execute arbitrary code, delete data, or move money. However, the empty description reduces confidence slightly. Severity is medium because saved PDFs could contain sensitive data extracted from web pages, but the operation itself is reversible.

From the tool's own definition: "Tool name 'browser_pdf_save' indicates it saves/exports content to a PDF file, a write operation that creates a new file artifact. Description is empty, limiting certainty."

## Use case

AI agents use browser_pdf_save to create or update resources in Playwright MCP, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Playwright MCP environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Playwright MCP:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "browser_pdf_save": {
      "limits": [
        {
          "counter": "browser_pdf_save_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Playwright MCP (58)

- `browser_cookie_clear` — Destructive — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-cookie-clear.md
- `browser_cookie_delete` — Destructive — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-cookie-delete.md
- `browser_localstorage_clear` — Destructive — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-localstorage-clear.md
- `browser_localstorage_delete` — Destructive — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-localstorage-delete.md
- `browser_sessionstorage_clear` — Destructive — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-sessionstorage-clear.md
- `browser_sessionstorage_delete` — Destructive — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-sessionstorage-delete.md
- `browser_click` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-click.md
- `browser_close` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-close.md
- `browser_drag` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-drag.md
- `browser_evaluate` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-evaluate.md
- `browser_file_upload` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-file-upload.md
- `browser_fill_form` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-fill-form.md
- `browser_handle_dialog` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-handle-dialog.md
- `browser_hover` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-hover.md
- `browser_install` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-install.md
- `browser_mouse_click_xy` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-mouse-click-xy.md
- `browser_mouse_down` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-mouse-down.md
- `browser_mouse_drag_xy` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-mouse-drag-xy.md
- `browser_mouse_move_xy` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-mouse-move-xy.md
- `browser_mouse_up` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-mouse-up.md
- `browser_mouse_wheel` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-mouse-wheel.md
- `browser_navigate` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-navigate.md
- `browser_navigate_back` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-navigate-back.md
- `browser_press_key` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-press-key.md
- `browser_resize` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-resize.md
- `browser_route` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-route.md
- `browser_run_code` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-run-code.md
- `browser_select_option` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-select-option.md
- `browser_start_tracing` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-start-tracing.md
- `browser_start_video` — Execute — https://policylayer.com/tools/alialobidm-playwright-mcp/browser-start-video.md
- …and 28 more: https://policylayer.com/tools/alialobidm-playwright-mcp.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=alialobidm-playwright-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/alialobidm-playwright-mcp
