Skip to content
Automation
Skill

/pinchtab-mcp

Use this skill when a task requires browser automation through PinchTab's MCP server connected to a remote browser instance. Covers navigation, element interaction, data extraction, form filling, multi-step flows, and session management via MCP tools.

From plugin
pinchtab
11k5 skills1 MCP

Claude Code

$ npx -y skills add pinchtab/pinchtab --skill pinchtab-mcp --agent claude-code

SKILL.md

pinchtab-mcp.SKILL.md
name: pinchtab-mcp
description: "Use this skill when a task requires browser automation through PinchTab's MCP server connected to a remote browser instance. Covers navigation, element interaction, data extraction, form filling, multi-step flows, and session management via MCP tools."
metadata:
  mcp:
    servers:
      - name: pinchtab
        config:
          command: pinchtab
          args: ["mcp"]

Browser Automation via PinchTab MCP

Use MCP tools to control a browser through the PinchTab HTTP API. The MCP server defaults to `http://127.0.0.1:9867`; for remote or containerized PinchTab instances, override with the `PINCHTAB_SERVER` env var (e.g. `PINCHTAB_SERVER=http://pinchtab:9867`).

Core Workflow

1. **Navigate**: `pinchtab_navigate(url="https://example.com")` — auto-creates a session and tab. 2. **Observe**: `pinchtab_snapshot(interactive=true, compact=true)` — returns numbered refs like `e5`, `e12`. 3. **Interact**: `pinchtab_click(selector="e5")` — use refs from the snapshot. 4. **Verify**: `pinchtab_get_text()` or re-snapshot to confirm the action succeeded.

**Critical rule**: An element ref (`e5`, `e12`) denotes a DOM node, so the same node keeps its ref across `interactive` vs full, a `selector` scope and a `depth` limit — a filtered view is therefore sparse (`e0, e1, e6`), never assume refs are contiguous. What a ref does NOT survive is navigation to a new document: refs expire on page load, so always re-call `pinchtab_snapshot` afterwards. A ref that can no longer resolve to its node is refused with `vocab_superseded` (or `ref not found`), never acted on positionally — the tools carry each snapshot's vocabulary token forward so a filter-only re-read keeps a ref valid while a new document supersedes it.

---

Tool Selection Guide

Choose the cheapest tool that satisfies your goal:

| Goal | Tool | Token Cost | |------|------|------------| | Check a specific value | `pinchtab_eval(expression="document.title")` | Lowest | | Find a specific element | `pinchtab_find(query="login button")` | Low | | Read page text only | `pinchtab_get_text()` | Low | | Read a whole site to markdown | `pinchtab_scrape(url=..., preview=true)` then expand | Varies | | Find interactive elements | `pinchtab_snapshot(interactive=true, compact=true)` | Medium | | Full page structure | `pinchtab_snapshot()` | Medium-High | | Visual verification | `pinchtab_screenshot()` | Highest |

**Default observation**: `pinchtab_snapshot(interactive=true, compact=true)` — returns only interactive elements in compact format. Use this as your starting point.

---

Navigation

pinchtab_navigate(url="https://example.com")
  • Always include `http://` or `https://` scheme.
  • Returns the tab ID and a basic confirmation.
  • Follow with `pinchtab_snapshot()` to get element refs.
  • For read-heavy tasks, consider blocking images (set via config on the server).

**After navigation**: Always call `pinchtab_snapshot()` before interacting. The page may have redirects, modals, or cookie banners.

---

Site scrape

To read a **whole site** (not one page) into markdown, use `pinchtab_scrape` — it crawls over HTTP first and browser-renders only the pages that need it (thin, blocked, or JS-only).

pinchtab_scrape(url="https://example.com", preview=true)
  • **Large sites**: call with `preview=true` first for a token-cheap outline (per-page titles, sizes, snippets, and which pages need the browser — no full bodies). Full reports can be large; don't scrape everything blind.
  • **Drill down**: expand the pages you picked from the preview with `only` (comma-separated URLs): `pinchtab_scrape(url="https://example.com", only="https://example.com/a, https://example.com/b")`.
  • `noBrowser=true` for an HTTP-only crawl; `enrichAll=true` to browser-render every page. Multi-page crawls run for minutes.

---

Observation

Snapshot (primary)

pinchtab_snapshot(interactive=true, compact=true)

Returns an accessibility tree, one element per line as `ref:role "name"`:

e0:link "About"
e2:button "Sign in"
e5:textbox "Search"

**Key rules**:

  • Each line's leading `eN` is the ref to pass to action tools.
  • Refs are the fastest way to target elements.
  • Use `diff=true` after an interaction to see only changed elements (saves tokens).
  • Use `selector` to scope the snapshot to a specific section.

Text extraction

pinchtab_get_text()

Use when you only need to read content (articles, dashboards, results). Cheaper than snapshot when you won't interact with elements.

Find elements

pinchtab_find(query="submit button")

Semantic search for elements without a full snapshot. Returns matching refs. Great for known targets.

Screenshots

pinchtab_screenshot()

Returns an MCP image (image/jpeg by default) — clients render it inline. The text block is always the JSON envelope `{"format": "jpeg"|"png", "annotations": [...]}`; `annotations` is `[]` by default and becomes `[{ref, role, name, tag, box: {x, y, w, h}}, ...]` with `annotate=true` so refs in the picture map back to the same selectors used by `pinchtab_click` etc. Screenshots are heavy (500KB–2MB per image), so use sparingly.

  • Add `quality=60` to reduce file size for JPEG screenshots.
  • Use `selector="e5"` to capture a specific element instead of the full page.
  • Use `annotate=true` to overlay numbered ref boxes and get the matching annotations list.
  • Use `beyondViewport=true` to capture the entire scrollable document (annotation box coords become document-relative). Ignored when `selector` is set.

**When to use screenshots**:

  • Visual layout verification (CSS issues, overlapping elements)
  • CAPTCHA detection (report to user)
  • Debugging when snapshot/text don't reveal the issue
  • Complex forms where visual confirmation is needed

**When NOT to use screenshots**:

  • Reading text content — use `pinchtab_get_text()` instead
  • Finding interactive elements — use `pinchtab_snapshot()` instead
  • Routine verificatio
Read more
@pinchtab
Ships withpinchtab

High-performance browser automation bridge and multi-instance orchestrator with advanced stealth injection and real-time dashboard.

11k5 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
10.6k
Star history of pinchtab/pinchtab on GitHub, a chart by star-history.com

Other skills on pinchtab.

pinchtab

pinchtab

Use this skill when a task needs browser automation through PinchTab: open a website, inspect interactive elements, click through…

@pinchtab@pinchtabInstall Skill
pinchtab-dev

pinchtab-dev

Develop and contribute to the PinchTab project. Use when working on PinchTab source code, adding features, fixing bugs, running…

@pinchtab@pinchtabInstall Skill
pinchtab-opt

pinchtab-opt

Run the PinchTab optimization loop (Docker, 3 blind subagents on the runner's HIGH model, 108 steps across 47 groups) against…

@pinchtab@pinchtabInstall Skill
pinchtab-stealth-score

pinchtab-stealth-score

Run the PinchTab stealth-score sweep against 15 bot-detection / fingerprint sites (sannysoft, rebrowser, deviceandbrowserinfo,…

@pinchtab@pinchtabInstall Skill

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n12d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about pinchtab-mcp.

Which coding agents can use pinchtab-mcp?
pinchtab-mcp installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.