| # MCP Tool Reference |
|
|
| Complete parameter reference for all 21 tools exposed by the PinchTab MCP server. |
|
|
| All tool names are prefixed with `pinchtab_`. The server communicates over **stdio JSON-RPC 2.0** (MCP spec 2025-11-25). |
|
|
| --- |
|
|
| ## Navigation |
|
|
| ### pinchtab_navigate |
| |
| Navigate the browser to a URL. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `url` | string | **Yes** | Full URL including scheme (`http://` or `https://`) | |
| | `tabId` | string | No | Target tab. Uses current tab if omitted. | |
| |
| **Returns:** JSON object with `tabId`, `url`, and `title`. |
| |
| ```json |
| { "tabId": "abc123", "url": "https://example.com", "title": "Example Domain" } |
| ``` |
| |
| --- |
| |
| ### pinchtab_snapshot |
|
|
| Get an accessibility tree snapshot of the current page. This is the primary way agents understand page structure and discover interactive element refs. |
|
|
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `tabId` | string | No | Target tab | |
| | `interactive` | boolean | No | Only return interactive elements (buttons, links, inputs) | |
| | `compact` | boolean | No | Compact format — uses fewer tokens | |
| | `diff` | boolean | No | Only changes since the last snapshot | |
| | `selector` | string | No | CSS selector to scope the snapshot to a subtree | |
|
|
| **Returns:** Accessibility tree as text. Element refs (e.g. `e5`, `e12`) are used in interaction tool calls. |
|
|
| --- |
|
|
| ### pinchtab_screenshot |
| |
| Capture a screenshot of the current page. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `tabId` | string | No | Target tab | |
| | `quality` | number | No | JPEG quality 0–100 (default PNG) | |
| |
| **Returns:** Base64-encoded image string. |
| |
| --- |
| |
| ### pinchtab_get_text |
| |
| Extract readable text content from the page, suitable for summarisation and Q&A. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `tabId` | string | No | Target tab | |
| | `raw` | boolean | No | Return raw text without formatting | |
| |
| **Returns:** Plain text string. |
| |
| --- |
| |
| ## Interaction |
| |
| All interaction tools that target page elements require a `ref` — the element identifier from a `pinchtab_snapshot` response (e.g. `e5`). |
|
|
| ### pinchtab_click |
| |
| Click an element by its accessibility ref. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `ref` | string | **Yes** | Element ref from snapshot (e.g. `e5`) | |
| | `tabId` | string | No | Target tab | |
| |
| --- |
| |
| ### pinchtab_type |
|
|
| Type text into an input element, simulating keystrokes. |
|
|
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `ref` | string | **Yes** | Element ref | |
| | `text` | string | **Yes** | Text to type | |
| | `tabId` | string | No | Target tab | |
|
|
| --- |
|
|
| ### pinchtab_press |
| |
| Press a named keyboard key. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `key` | string | **Yes** | Key name: `Enter`, `Tab`, `Escape`, `ArrowDown`, `Backspace`, etc. | |
| | `tabId` | string | No | Target tab | |
| |
| --- |
| |
| ### pinchtab_hover |
|
|
| Hover the mouse over an element (triggers `:hover` styles and tooltips). |
|
|
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `ref` | string | **Yes** | Element ref | |
| | `tabId` | string | No | Target tab | |
|
|
| --- |
|
|
| ### pinchtab_focus |
| |
| Give keyboard focus to an element. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `ref` | string | **Yes** | Element ref | |
| | `tabId` | string | No | Target tab | |
| |
| --- |
| |
| ### pinchtab_select |
|
|
| Select an option from a `<select>` dropdown. |
|
|
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `ref` | string | **Yes** | `<select>` element ref | |
| | `value` | string | **Yes** | Option value to select | |
| | `tabId` | string | No | Target tab | |
|
|
| --- |
|
|
| ### pinchtab_scroll |
| |
| Scroll the page or a specific element. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `ref` | string | No | Element ref. Omit to scroll the whole page. | |
| | `pixels` | number | No | Pixels to scroll. Positive = down/right, negative = up/left. Default 300. | |
| | `tabId` | string | No | Target tab | |
| |
| --- |
| |
| ### pinchtab_fill |
|
|
| Fill an input field using JavaScript event dispatch. Works with React, Vue, Angular, and other frameworks that intercept native input events. |
|
|
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `ref` | string | **Yes** | Element ref or CSS selector | |
| | `value` | string | **Yes** | Value to set | |
| | `tabId` | string | No | Target tab | |
|
|
| > **Tip:** Use `pinchtab_fill` instead of `pinchtab_type` when the page uses a frontend framework that does not react to raw keystroke simulation. |
|
|
| --- |
|
|
| ## Content |
|
|
| ### pinchtab_eval |
| |
| Execute a JavaScript expression in the browser context and return the result. |
| |
| > **Security note:** Requires `security.allowEvaluate: true` in the PinchTab config. Returns HTTP 403 by default. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `expression` | string | **Yes** | JavaScript expression to evaluate | |
| | `tabId` | string | No | Target tab | |
| |
| **Returns:** JSON-serialised result of the expression. |
| |
| ```javascript |
| // Example expressions |
| "document.title" |
| "document.querySelectorAll('a').length" |
| "window.location.href" |
| ``` |
| |
| --- |
| |
| ### pinchtab_pdf |
|
|
| Export the current page as a PDF document. |
|
|
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `tabId` | string | No | Target tab | |
| | `landscape` | boolean | No | Landscape orientation (default portrait) | |
| | `scale` | number | No | Print scale 0.1–2.0 (default 1.0) | |
| | `pageRanges` | string | No | Pages to include, e.g. `"1-3,5"` | |
|
|
| **Returns:** Base64-encoded PDF bytes. |
|
|
| --- |
|
|
| ### pinchtab_find |
| |
| Find elements by text content or CSS selector using semantic matching. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `query` | string | **Yes** | Text content or CSS selector | |
| | `tabId` | string | No | Target tab | |
| |
| **Returns:** List of matching elements with their refs, text, and positions. |
| |
| --- |
| |
| ## Tab Management |
| |
| ### pinchtab_list_tabs |
| |
| List all open browser tabs. |
| |
| No parameters. |
| |
| **Returns:** Array of tab objects with `tabId`, `url`, and `title`. |
| |
| --- |
| |
| ### pinchtab_close_tab |
| |
| Close a browser tab. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `tabId` | string | No | Tab to close. Closes the current tab if omitted. | |
| |
| --- |
| |
| ### pinchtab_health |
|
|
| Check whether the PinchTab server is reachable and healthy. |
|
|
| No parameters. |
|
|
| **Returns:** `{"status":"ok"}` on success. |
|
|
| --- |
|
|
| ### pinchtab_cookies |
| |
| Get cookies for the current page. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `tabId` | string | No | Target tab | |
| |
| **Returns:** Array of cookie objects (name, value, domain, path, etc.). |
| |
| --- |
| |
| ## Utility |
| |
| ### pinchtab_wait |
|
|
| Wait for a fixed duration. Use sparingly — prefer `pinchtab_wait_for_selector` when possible. |
|
|
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `ms` | number | **Yes** | Milliseconds to wait. Maximum 30000. | |
|
|
| --- |
|
|
| ### pinchtab_wait_for_selector |
| |
| Wait for a CSS selector to appear on the page. Polls every 250 ms. |
| |
| | Parameter | Type | Required | Description | |
| |-----------|------|:--------:|-------------| |
| | `selector` | string | **Yes** | CSS selector to wait for | |
| | `timeout` | number | No | Timeout in milliseconds. Default 10000, maximum 30000. | |
| | `tabId` | string | No | Target tab | |
| |
| **Returns:** `{"present": true}` when the selector is found, `{"present": false}` on timeout. |
| |
| --- |
| |
| ## Error Responses |
| |
| All tools return errors as MCP tool errors (not Go-level errors). Common error patterns: |
| |
| | Situation | Response | |
| |-----------|----------| |
| | PinchTab not running | Connection refused error | |
| | Element ref not found | `HTTP 500: ref not found` | |
| | `pinchtab_eval` without security flag | `HTTP 403: evaluate not allowed` | |
| | Invalid URL in navigate | `invalid URL: must start with http:// or https://` | |
| | Required parameter missing | Parameter validation error from MCP SDK | |
|
|
| --- |
|
|
| ## Related Pages |
|
|
| - [MCP User Guide](../mcp.md) |
| - [MCP Architecture](../architecture/mcp.md) |
| - [Security Guide](../guides/security.md) |
|
|