# Tap

Turn interface operations into deterministic programs. AI forges taps once, then any agent replays them forever at zero AI cost. 31 tools for browser automation, web scraping, and agent orchestration…

## Quick Start

```bash
# Connect this server (installs CLI if needed)
npx -y @smithery/cli@latest mcp add LeonTing1010/tap-mcp

# Browse available tools
npx -y @smithery/cli@latest tool list LeonTing1010/tap-mcp

# Get full schema for a tool
npx -y @smithery/cli@latest tool get LeonTing1010/tap-mcp tap_list

# Call a tool
npx -y @smithery/cli@latest tool call LeonTing1010/tap-mcp tap_list '{}'
```

## Direct MCP Connection

Endpoint: `https://tap-mcp--leonting1010.run.tools`

## Tools (31)

- `tap_list` — List all available taps. ALWAYS call this first before any tap.* tool. If a matching tap exists, use tap.run — it execu…
- `tap_run` — Run a pre-built tap. Preferred over tap.* tools — deterministic, zero AI at runtime. Returns {columns, rows, count, tim…
- `tap_screenshot` — Capture the current page as an image. LAST RESORT — before using this, prefer: (1) inspect.toasts for operation feedbac…
- `tap_logs` — Read tap execution history (run + forge events). Filter by site to narrow results. Use to diagnose failures: check erro…
- `tap_doctor` — Run health checks on taps. Returns {status, score, rows, issues[], error} per tap. Use as: (1) diagnostic entry point w…
- `tap_watch` — Run a tap once and diff against previous rows. Returns {rows, events[], hasChanges}. Events: added/removed/changed with…
- `tap_reload` — Push updated taps to all connected runtimes (extension, Playwright) without restarting the daemon. Normally not needed …
- `tap_version` — Get protocol version and connected runtime info. Use to verify the extension is connected and check version compatibili…
- `forge_inspect` — Analyze a page for tap forging: detects framework, SSR state, APIs, and generates extraction strategies. Also use this …
- `forge_draft` — Load a .tap.js file into memory for verification. Write the tap code to a file first, then pass the path here. Returns …
- `forge_verify` — Test the draft tap's extraction logic live on a URL. Reads code from forge.draft — no need to pass expression. Returns …
- `forge_save` — Save the draft tap to disk and auto-commit to git. Reads code from forge.draft — no need to pass code. After saving, ta…
- `tap_nav` — Navigate to a URL. Before calling this, check tap.list — if a tap exists for this site/task, use tap.run instead. Retur…
- `tap_click` — Click on an element by visible text or CSS selector. Returns the resulting url and title. After clicking, check inspect…
- `tap_type` — Type text into an input. Auto-detects editor type (standard input, contentEditable, CodeMirror, Draft.js, ProseMirror).…
- `tap_eval` — Evaluate JavaScript in the browser. The universal escape hatch — use when other tap.* tools can't do what you need.
- `tap_find` — Find elements by visible text. Returns position, selector, and bounding box. Use before click/type to verify the target…
- `tap_wait` — Wait for a specified number of milliseconds. Use instead of tap.eval with setTimeout. For waiting on elements, prefer t…
- `tap_pressKey` — Press a key.
- `tap_upload` — Upload files to a file input. After uploading, check inspect.toasts for errors (wrong format, size limit).
- `tap_cookies` — Get cookies for the current site.
- `inspect_dom` — Get page DOM structure.
- `inspect_page` — Get page info (url, title, meta).
- `inspect_a11y` — Get accessibility tree.
- `inspect_element` — Inspect a specific element.
- `inspect_networkStart` — Start network capture.
- `inspect_networkDump` — Dump captured network log. Pass bodies:true to include response bodies (JSON APIs). Waits up to 3s for pending body fet…
- `inspect_download` — Download and parse a URL.
- `tab_list` — List open browser tabs.
- `intercept_on` — Enable request interception.
- `intercept_off` — Disable request interception.

```bash
# Get full input/output schema for a tool
npx -y @smithery/cli@latest tool get LeonTing1010/tap-mcp <tool-name>
```

## Resources

- `tap://protocol` — Protocol v1.0: 8 core + 17 built-in
- `tap://logs` — Recent forge and execution events

## Prompts (4)

- `forge` (url, capability) — Create a new .tap.js script for a website. Guides: inspect → verify → save.
- `debug` (site, name) — Diagnose and fix a failing tap. Checks logs, reads source, re-forges if needed.
- `run` (url, task) — Execute a task on a website. Checks for existing taps first — runs them if found, forges a new one if not.
- `meta-forge` (site, name, description) — Understand and fix a tap using page inspection and git history. Diagnoses root cause before proposing targeted fix.
