Tap
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {} |
| resources | {
"subscribe": false,
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| tap_listA | List all available taps. ALWAYS call this first before any tap.* tool. If a matching tap exists, use tap.run — it executes with zero AI, faster and more stable than manual tap operations. NEVER bypass a tap by using manual tap.* calls to replicate what a tap already does. |
| tap_runA | Run a pre-built tap. Preferred over tap.* tools — deterministic, zero AI at runtime. Returns {columns, rows, count, timing}. If rows is empty or error, use tap.doctor(site, name) for structured diagnosis before re-forging. On transient failure (timeout, connection), RETRY tap.run — do not fall back to manual tap.* operations. |
| tap_screenshotA | Capture the current page as an image. LAST RESORT — before using this, prefer: (1) inspect.toasts for operation feedback, (2) tap.eval to check DOM state/URL, (3) inspect.page for url+title. Only use screenshot for visual verification (layout, rendering). When you do use it, prefer jpeg quality=30 for smallest size. |
| tap_logsA | Read tap execution history (run + forge events). Filter by site to narrow results. Use to diagnose failures: check error fields, row counts, timing. Consistently 0 rows or repeated errors → use forge.inspect to re-forge. |
| tap_doctorA | Run health checks on taps. Returns {status, score, rows, issues[], error} per tap. Use as: (1) diagnostic entry point when tap.run fails — doctor gives structured root cause, (2) post-save validation after forge.save — doctor confirms health contract passes, (3) batch health audit — omit site/name to check all taps. With auto:true, broken taps include heal diagnostics (current_code, page_inspection) — use these to generate a fix with forge.verify + forge.save. |
| tap_watchA | Run a tap once and diff against previous rows. Returns {rows, events[], hasChanges}. Events: added/removed/changed with row data. Stateless — first call: omit previousRows to get baseline. Subsequent calls: pass previous rows to detect changes. Use for monitoring (price changes, new listings, content updates). |
| tap_reloadA | Push updated taps to all connected runtimes (extension, Playwright) without restarting the daemon. Normally not needed — forge.save auto-notifies. Use after manual tap file edits or tap update. |
| tap_versionA | Get protocol version and connected runtime info. Use to verify the extension is connected and check version compatibility before running taps. |
| forge_inspectA | Analyze a page for tap forging: detects framework, SSR state, APIs, and generates extraction strategies. Also use this to re-forge a broken tap — inspect the page again to find what changed. |
| forge_draftA | Load a .tap.js file into memory for verification. Write the tap code to a file first, then pass the path here. Returns content hash for change tracking. |
| forge_verifyA | Test the draft tap's extraction logic live on a URL. Reads code from forge.draft — no need to pass expression. Returns score, rows, and data preview. |
| forge_saveA | Save the draft tap to disk and auto-commit to git. Reads code from forge.draft — no need to pass code. After saving, tap.run can execute it forever with zero AI. |
| tap_navA | Navigate to a URL. Before calling this, check tap.list — if a tap exists for this site/task, use tap.run instead. Returns {url, title}. If url differs from requested, a redirect occurred. |
| tap_clickA | Click on an element by visible text or CSS selector. Returns the resulting url and title. After clicking, check inspect.toasts for feedback (errors, confirmations) before proceeding. Use tap.find first if unsure whether the element exists. |
| tap_typeA | Type text into an input. Auto-detects editor type (standard input, contentEditable, CodeMirror, Draft.js, ProseMirror). Returns the current value — if it doesn't match your input, try tap.eval with execCommand('insertText') or the editor's native API. After typing, check inspect.toasts for validation errors (e.g. max length exceeded). |
| tap_evalA | Evaluate JavaScript in the browser. The universal escape hatch — use when other tap.* tools can't do what you need. |
| tap_findA | Find elements by visible text. Returns position, selector, and bounding box. Use before click/type to verify the target exists. |
| tap_waitA | Wait for a specified number of milliseconds. Use instead of tap.eval with setTimeout. For waiting on elements, prefer tap.waitFor(selector) instead. |
| tap_pressKeyD | Press a key. |
| tap_uploadA | Upload files to a file input. After uploading, check inspect.toasts for errors (wrong format, size limit). |
| tap_cookiesA | Get cookies for the current site. |
| inspect_domC | Get page DOM structure. |
| inspect_pageA | Get page info (url, title, meta). |
| inspect_a11yB | Get accessibility tree. |
| inspect_elementC | Inspect a specific element. |
| inspect_networkStartB | Start network capture. |
| inspect_networkDumpA | Dump captured network log. Pass bodies:true to include response bodies (JSON APIs). Waits up to 3s for pending body fetches. |
| inspect_downloadC | Download and parse a URL. |
| tab_listB | List open browser tabs. |
| intercept_onC | Enable request interception. |
| intercept_offB | Disable request interception. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| forge | Create a new .tap.js script for a website. Guides: inspect → verify → save. |
| debug | Diagnose and fix a failing tap. Checks logs, reads source, re-forges if needed. |
| run | Execute a task on a website. Checks for existing taps first — runs them if found, forges a new one if not. |
| meta-forge | Understand and fix a tap using page inspection and git history. Diagnoses root cause before proposing targeted fix. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Tap Protocol | Protocol v1.0: 8 core + 17 built-in |
| Tap Logs | Recent forge and execution events |
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