Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{}
resources
{
  "subscribe": false,
  "listChanged": true
}
completions
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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

NameDescription
forgeCreate a new .tap.js script for a website. Guides: inspect → verify → save.
debugDiagnose and fix a failing tap. Checks logs, reads source, re-forges if needed.
runExecute a task on a website. Checks for existing taps first — runs them if found, forges a new one if not.
meta-forgeUnderstand 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

NameDescription
Tap ProtocolProtocol v1.0: 8 core + 17 built-in
Tap LogsRecent 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