The Tap server is a browser automation platform that lets you run pre-built web automations (taps), forge new ones with AI, interact with web pages, and monitor changes — all through an MCP-compatible interface.
Run & Manage Taps
tap_list— List available taps (start here)tap_run— Execute pre-built taps deterministically at zero AI runtime costtap_watch— Monitor a tap for changes over time (price tracking, new listings, etc.)tap_doctor— Health-check taps, get root-cause diagnostics, and auto-heal broken onestap_logs— View execution historytap_reload— Push updated taps to connected runtimes without restarting
Forge New Automations
forge_inspect— Analyze a page to detect frameworks, APIs, and generate extraction strategiesforge_verify— Test extraction logic live before savingforge_save— Compile and save a.tap.jsprogram to disk; runs forever at $0 after saving
Browser Interaction
tap_nav— Navigate to a URLtap_click— Click elements by text or CSS selectortap_type— Type into inputs (supports standard, contentEditable, CodeMirror, Draft.js, ProseMirror)tap_eval— Execute arbitrary JavaScripttap_find— Find elements by visible text; returns position, selector, bounding boxtap_pressKey— Simulate key presses with optional modifierstap_upload— Upload files to file inputstap_screenshot— Capture the page as JPEG or PNGtap_cookies— Retrieve cookies for the current sitetap_wait— Pause execution for a specified duration
Page Inspection
inspect_page— Get URL, title, and meta tagsinspect_dom— Get DOM structure (optionally scoped to a selector)inspect_a11y— Get the accessibility treeinspect_element— Inspect a specific element by selectorinspect_networkStart/inspect_networkDump— Capture and dump network requests/responses including API bodiesinspect_download— Download and parse content from a URL
Tab & Network Management
tab_list— List all open browser tabsintercept_on/intercept_off— Enable or disable request interception with URL patterns
Allows searching and retrieving metadata for scientific papers from arXiv.
Enables retrieval of trending topics and hot searches from Baidu.
Allows interaction with Bilibili to access trending videos, search content, and retrieve video details and comments.
Provides access to trending content and posts on the Bluesky social network.
Enables fetching of top stories and popular technical posts from the dev.to community.
Allows access to trending content and hot topics on Douban.
Provides tools to track trending repositories and interact with GitHub content.
Enables access to trending search data via Google Trends.
Allows retrieval of popular and trending technical articles from Juejin.
Provides tools to browse hot stories and community discussions on Lobste.rs.
Enables searching for articles and fetching trending stories from Medium.
Allows access to ranking data and popular illustrations on Pixiv.
Provides tools to discover hot products and trending launches on Product Hunt.
Enables retrieval of information about top and popular Python packages on PyPI.
Allows searching content, fetching hot posts, and submitting comments on Reddit.
Provides access to hot and trending questions within the Stack Overflow community.
Enables tracking of top-selling games and trending content on the Steam store.
Allows for the programmatic publishing of articles via Telegra.ph.
Provides tools to browse hot topics and community discussions on the V2EX platform.
Enables searching for articles and accessing detailed content from the WeChat platform.
Allows retrieval of most-read articles and trending content from Wikipedia.
Provides comprehensive tools to browse hot notes, search content, view post details, and publish new notes.
Enables access to trending videos and content on YouTube.
Allows for searching, fetching hot topics, and viewing detailed question and comment data on Zhihu.
Local-first browser automation. Compile once, run forever at zero LLM tokens.
Point Taprun at any site. Your AI agent inspects the page once and emits a deterministic .plan.json program. Replay it forever — same result every call, $0 in tokens. Cookies and login sessions stay in your real Chrome — by architecture, not policy. tap verify catches breakage before your data goes stale.
Works with Claude Code, Cursor, Cline, Windsurf, and any MCP host. 70+ pre-built taps, or forge your own from any URL.
Capture: AI inspects the site → compiles a .plan.json program (one-time cost)
Run: The program executes instantly, same result every time ($0, zero AI)
Verify: tap verify checks the snapshot equivalence predicate (catches drift)
Repair: re-run capture against the same site/name; the next (only when needed)
verify rebaselines after human reviewHow Taprun Compares
Taprun | AI Browser Agents | Traditional Scrapers | |
AI cost per run | $0 (compile once) | Tokens every run | Free |
Accuracy | Deterministic | Varies per run | Deterministic |
Silent failure detection | Per-tap CEL | None | None |
Breakage diagnostics |
| None | Manual spot checks |
Detection risk | Low (real browser sessions) | High | High |
Runtimes | 2 (Chrome extension + Playwright) | 1 | 1 |
Code inspectable | .plan.json — bare JSON, 11-op closed vocabulary, git diff | Black box / ephemeral | Fragile scripts |
MCP native | Yes (authoring layer only — execution is zero tokens) | No | No |
Related MCP server: Puppeteer MCP Server
Get Started
1. Install
Zero-install via npx (any machine with Node):
npx -y @taprun/cli --versionThe first run downloads the matching platform binary (~30MB) and caches it. Subsequent calls are instant.
Permanent install via curl (macOS / Linux):
curl -fsSL https://taprun.dev/install.sh | shOr via Homebrew (macOS / Linux):
brew install LeonTing1010/tap/taprunPlatform | Download |
macOS (Apple Silicon) | |
macOS (Intel) | |
Linux | |
Windows |
2. Connect to Your AI Agent
Works with Claude Code, Cursor, Windsurf, or any MCP-compatible agent — no extension needed:
{ "mcpServers": { "tap": { "command": "npx", "args": ["-y", "@taprun/cli", "mcp", "stdio"] } } }Or run the server directly:
tap mcp stdio # default; pipe to your MCP host
tap mcp http # streamable-HTTP on 127.0.0.1:7891 (bearer auth)3. Go
tap github/trending # GitHub trending repos
tap hackernews/hot # Hacker News front page
tap weibo/hot # 微博热搜
tap xiaohongshu/search --keyword "AI" # 小红书搜索Or just ask your AI agent:
You: What's trending on GitHub today?
Agent: Here are today's top repos — React compiler hit 734 stars...
You: Capture a tap for Douban top 250 movies
Agent: Done. Run `tap douban/top250` anytime — $0 per run.Optional: Chrome Extension (for login-required sites)
Most taps work without login. For sites that need your session (Xiaohongshu, Zhihu, etc.), install the Chrome Extension from the Chrome Web Store.
Optional: Embed in your agent code (TypeScript / Python)
Skip MCP — call the tap binary from your own loop:
tap hackernews/top --args '{}' # JSON-on-stdout, exit 0 on success
tap verify hackernews/top # 4-arm verdict (equivalent / drifted / first_snapshot / unreachable)
tap capture <url> hackernews/top --intent "front-page top stories"The CLI emits ToolResult<T> envelopes as JSON — same shape the MCP surface returns — so any language with a subprocess library can drive it. See tap --help for the full verb list.
Have an existing Playwright / Puppeteer / Stagehand script?
Don't rewrite. Convert with one of the open-source adapters — drop your existing source in, get a Tap-compatible .plan.json plan out:
# Existing Playwright script (47M weekly npm downloads — most likely the one you have)
npm install @taprun/from-playwright @taprun/spec
node -e "import('@taprun/from-playwright').then(m => console.log(m.playwrightToTap(require('fs').readFileSync('tests/login.spec.ts','utf8'), {site:'example', name:'login'})))"
# Or scaffold a new starter from scratch
npx create-tap-script github/trending https://github.com/trendingAdapter | Source format | Coverage |
| 8 page.* APIs (goto/click/fill/type/press/waitForSelector/waitForTimeout/screenshot) | |
| 7 page.* APIs + page.keyboard.press | |
| Hybrid: deterministic page.* mapped to plan ops; NL | |
(none — scaffolder) | Generates a starter |
The format itself is documented at @taprun/spec — the public protocol surface package: TypeScript types for the v2 Plan (11-op closed union + discriminated read/write Plan union) + JSON Schema 2020-12 with $id resolvable at taprun.dev/spec/plan-v1/schema.json, bidirectionally drift-guarded against the TS types. Third-party tooling (IDE $schema autocomplete, ajv-equivalent validators in Python/Ruby/Go, governance layers, alternative runtimes, MCP hosts with plan-aware permission scoping) builds against this package without depending on the proprietary Tap engine. Plan-v1 reference: taprun.dev/spec/plan-v1. Source for all five packages: packages/ (see packages/README.md for the workspace overview).
What Can You Do?
Read — Extract data from any website
tap reddit/hot # Reddit front page
tap bilibili/trending # Bilibili trending
tap arxiv/search --keyword "LLM" # arXiv papersWrite — Operate any website
tap xiaohongshu/publish --title "My Note" --images photo.jpg
tap zhihu/publish --title "My Article" --content "..."Watch — Monitor changes
tap verify github/trending # spot drift; schedule via cron / launchdCompose — Chain like Unix pipes
tap github/trending | tap filter --field stars --gt 500 | tap tableForge — Create new automations with AI
tap capture https://news.ycombinator.com hackernews/hot --intent "top stories" # API detected — compiled without AI
tap capture https://example.com mysite/home --intent "..." # BYOK Claude / GPT for the long tailBring your own model — works with Claude, OpenAI, DeepSeek, or any OpenAI-compatible endpoint including local Ollama / LM Studio for fully offline forge:
tap config set ai.baseUrl http://localhost:11434/v1
tap config set ai.key ollama
tap config set ai.model llama3.1
tap capture https://arxiv.org/list/cs.AI/recent arxiv/recent --intent "recent papers" # 0 bytes leave your machineHow It Works
┌─ Chrome extension (your real browser sessions)
You → AI → Taprun ──────┤
capture └─ Playwright (headless, server, CI/CD)You describe what you want (URL × natural-language intent)
AI compiles it into a
.plan.jsonprogram — bare JSON, 11-op closed vocabulary, version-controlledTaprun runs the program on either runtime — forever, at $0
Every successful compilation makes the next one faster. 70+ community taps mean your agent already knows the common patterns.
Community Skills
tap-skills — 70+ taps, open source.
Category | Examples |
Trending | GitHub, Hacker News, Reddit, Product Hunt, Bilibili, Zhihu, Weibo, Xiaohongshu |
Search | arXiv, Reddit, X, Zhihu, Weibo, Xiaohongshu, Bilibili, Medium |
Read | Zhihu threads, Bilibili videos, Xiaohongshu notes, WeRead books |
Write | X posts, Xiaohongshu notes, Zhihu articles, Dev.to, LinkedIn |
Monitor | Price tracking, stock data, competitor analysis |
tap verify <site>/<name> # Snapshot equivalence — catches silent failures before your data goes stale
tap list # See everything available
tap show <site>/<name> # Print the saved tap's plan as JSONLocal-first by architecture
Taprun runs in your browser, not someone else's cloud. The Chrome extension reuses your live login sessions; cookies, auth tokens, and credentials never leave your machine. This is a structural choice, not a marketing claim:
Concern | Cloud-first browser SDKs | Taprun (local-first) |
Where do logged-in cookies live? | On the cloud vendor's servers | Only in your local browser |
What does the AI see? | The full session + your data | Only the page DOM during forge time |
Compliance with | Vendor signs ToS for you | Your account, your terms |
Internal / intranet sites | Need VPN tunneling | Just open the page |
Decommission risk | Vendor goes down → your scrapers stop | Local code keeps running |
Layer | Protection |
Sandbox | Programs run with zero permissions — no file, network, or system access |
Static Analysis | CI blocks dangerous patterns before they reach users |
Local-only | Your data, sessions, and API keys never leave your machine — architecturally |
See SECURITY.md for the full threat model.
Contributing
The easiest way to contribute: forge a new tap. One .plan.json file is all it takes.
See CONTRIBUTING.md for details.
Roadmap
70+ community taps across 70+ sites
2 runtimes — Chrome extension + Playwright (headless / CI)
Unix pipes —
tap A | tap BWatch mode — monitor changes over time
Verify —
tap verifysnapshot-equivalence check with a 4-arm drift verdict (equivalent / drifted / first_snapshot / unreachable)Single-command MCP server —
tap mcp stdio(ortap mcp http) for any MCP hostAndroid runtime
iOS runtime
Concurrency control — deterministic coordination for M agents operating shared accounts in parallel
Support
GitHub Discussions — Q&A, ideas, show & tell
support@taprun.dev — licensing, private feedback, consulting
Issues — bug reports
License
Chrome Extension & docs: MIT. Community skills: MIT.
Star History
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/LeonTing1010/tap'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
