agentleFS
MathiasPaulenkoMathiasPaulenko/ai-toolkit/skills/wavexis-mcp-agent-integration/SKILL.md

wavexis-mcp-agent-integration

Skill2 starsChanged 3 months agoMITView on GitHub

MCP server integration for LLM browser automation: 220 tools, 13 capability tiers, session management, natural language interaction, multi-action workflows, and IDE configuration for Claude, Cursor, Windsurf, and VS Code.

  • Installs packages

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Add to MCP settings:

    line 86
  2. Distinctive:

    No session management overhead

    line 225
  3. Very specific:

    Warning: Only use --allow-remote behind a reverse proxy with authentication.

    line 609

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

WaveXis MCP Agent Integration

Description

wavexis-mcp is an MCP (Model Context Protocol) server that exposes 220 tools for LLM-driven browser automation. It wraps wavexis (which wraps cdpwave + bidiwave) and provides 13 capability tiers so LLMs can control browsers with natural language, take screenshots, scrape content, fill forms, run performance audits, and execute multi-step workflows — all through structured tool calls.

When to Invoke

  • Configuring wavexis-mcp in an IDE or MCP client (Claude, Cursor, Windsurf, VS Code)
  • Choosing capability tiers for a specific use case
  • Managing browser sessions (open, close, list, switch)
  • Using natural language interaction (wavexis_act) for form filling and clicks
  • Creating multi-action YAML workflows via MCP
  • Debugging MCP connection issues or tool errors
  • Understanding the 220-tool catalog and tier system
  • Setting up stateless vs session mode
  • Configuring rate limiting, stealth mode, or SSRF protection

1. Installation

Install

pip install wavexis-mcp[cdp]

Run without installing

uvx wavexis-mcp --caps all

Verify

wavexis-mcp --version

2. IDE Configuration

Claude Desktop

Edit claude_desktop_config.json:

{
  "mcpServers": {
    "wavexis": {
      "command": "uvx",
      "args": ["wavexis-mcp", "--caps", "all"]
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "wavexis": {
      "command": "uvx",
      "args": ["wavexis-mcp", "--caps", "core,network,storage"]
    }
  }
}

Windsurf

Add to MCP settings:

{
  "mcpServers": {
    "wavexis": {
      "command": "uvx",
      "args": ["wavexis-mcp", "--caps", "all"]
    }
  }
}

VS Code (Copilot)

Add to .vscode/mcp.json:

{
  "servers": {
    "wavexis": {
      "command": "uvx",
      "args": ["wavexis-mcp", "--caps", "core,devtools,a11y"]
    }
  }
}

HTTP transport (remote)

wavexis-mcp --transport http --host 0.0.0.0 --port 8765 --caps all

Then configure the client with the URL:

{
  "mcpServers": {
    "wavexis": {
      "url": "http://localhost:8765"
    }
  }
}

3. Capability Tiers

13 tiers from core (always on, 72 tools) to all (220 tools). Select tiers with --caps:

# All 220 tools
wavexis-mcp --caps all

# Core only (72 tools — minimal, saves tokens)
wavexis-mcp --caps core

# Core + network + storage (110 tools — common scraping setup)
wavexis-mcp --caps core,network,storage

# Core + devtools + a11y (107 tools — debugging + accessibility)
wavexis-mcp --caps core,devtools,a11y

# Everything except experimental (189 tools)
wavexis-mcp --caps core,network,storage,emulation,a11y,interactions,devtools,vision,video,testing,workflows,data

Tier Catalog

TierFlagToolsKey Features
Corealways on72Session, navigation, screenshot, PDF, scrape, eval, DOM, input, cookies, tabs, NL interaction, iframe, shadow DOM, events
Networknetwork20Headers, UA, block, throttle, cache, HAR, intercept, mock, modify req/resp, request body, replay HAR, request list
Storagestorage18localStorage, sessionStorage, cache storage, IndexedDB, state save/restore
Emulationemulation9Device, viewport, geolocation, timezone, dark mode, locale, CPU, touch, sensors
A11ya11y4Accessibility tree snapshot, node traversal, axe-core audit
Interactionsinteractions5Dialogs, downloads, permissions
DevToolsdevtools31Performance, CSS, debugging, overlay, console, security, window mgmt, combined trace, annotated screenshot
Visionvision7Coordinate-based mouse (pixel-precise)
Videovideo4Video recording, chapters, action overlay
Testingtesting6Assertions, locator generation
Workflowsworkflows6Multi-action YAML, raw CDP/BiDi, browser context CRUD
Datadata7Codegen, Lighthouse audit, extract, websocket intercept, crawl, visual diff, core web vitals
Experimentalexperimental31Service workers, animations, WebAuthn, WebAudio, media, cast, bluetooth, extensions, prefs
Totalall220

Tier Selection Guide

Use CaseRecommended TiersTools
Basic browser controlcore72
Web scrapingcore,network,storage110
Performance debuggingcore,devtools,data110
Accessibility auditcore,a11y76
Visual regressioncore,vision,data86
Full automationall220
CI/CD pipelinecore,testing,data85
Form filling via NLcore72
Network analysiscore,network92
Video recordingcore,video76
Extension testingcore,experimental103
Token-efficientcore72

4. Session Management

wavexis-mcp supports two modes: session and stateless.

Session mode (default)

Open a persistent browser session, execute multiple tool calls, then close:

1. wavexis_session_open          → session_id
2. wavexis_navigate(url)          → uses session
3. wavexis_screenshot()           → uses session
4. wavexis_eval(expression)       → uses session
5. wavexis_session_close          → cleanup

Benefits:

  • Browser stays open between tool calls
  • State preserved (cookies, localStorage, page position)
  • Multi-step workflows in a single browser instance
  • Faster (no browser launch per call)

Stateless mode

Each tool call opens and closes a browser:

1. wavexis_screenshot(url)        → opens browser, captures, closes
2. wavexis_scrape(url)            → opens browser, scrapes, closes

Benefits:

  • No session management overhead
  • Each call is independent
  • Simpler for one-off tasks

Session tools

ToolDescription
wavexis_session_openOpen a new browser session, returns session_id
wavexis_session_closeClose a session and release resources
wavexis_session_listList all active sessions
wavexis_session_infoGet details of a specific session
wavexis_tabs_newOpen a new tab in a session
wavexis_tabs_closeClose a tab in a session
wavexis_tabs_listList tabs in a session
wavexis_tabs_switchSwitch to a tab in a session

Best practices

  • Always close sessions — Unclosed sessions leak resources
  • One session per workflow — Don't interleave sessions
  • Use stateless for one-offs — No cleanup needed
  • List sessions to debug — wavexis_session_list shows active sessions

5. Core Tools (72 — always available)

Navigation

ToolDescription
wavexis_navigateNavigate to a URL
wavexis_navigate_backGo back in history
wavexis_navigate_forwardGo forward in history
wavexis_navigate_reloadReload the page
wavexis_navigate_stopStop loading

Capture

ToolDescription
wavexis_screenshotTake a screenshot (viewport, full-page, element)
wavexis_pdfGenerate a PDF
wavexis_scrapeScrape page content (text, HTML, markdown)
wavexis_domGet DOM tree or specific element

Evaluate

ToolDescription
wavexis_evalEvaluate JavaScript expression
wavexis_call_functionCall a JS function with arguments

Input

ToolDescription
wavexis_clickClick an element by selector
wavexis_typeType text into an element
wavexis_fillFill a field (instant)
wavexis_press_keyPress a keyboard key
wavexis_hoverHover over an element
wavexis_select_optionSelect a dropdown option
wavexis_scrollScroll the page
wavexis_scroll_toScroll to an element

Cookies

ToolDescription
wavexis_cookies_getGet cookies
wavexis_cookies_setSet a cookie
wavexis_cookies_deleteDelete a cookie
wavexis_cookies_clearClear all cookies

Natural Language

ToolDescription
wavexis_actNatural language browser interaction
wavexis_findFind element by natural language description

Advanced DOM

ToolDescription
wavexis_shadow_clickClick inside shadow DOM
wavexis_shadow_fillFill inside shadow DOM
wavexis_shadow_evalEvaluate JS inside shadow DOM
wavexis_iframe_evalEvaluate JS inside iframe
wavexis_iframe_clickClick inside iframe

Events

ToolDescription
wavexis_events_listenListen for browser events
wavexis_events_waitWait for a specific event

Console

ToolDescription
wavexis_console_getGet console logs
wavexis_console_clearClear console

Browser info

ToolDescription
wavexis_urlGet current URL
wavexis_titleGet page title
wavexis_user_agentGet or set user agent
wavexis_headersGet response headers

6. Natural Language Interaction

wavexis_act lets LLMs control browsers using natural language instead of CSS selectors:

User: "Click the login button"
→ wavexis_act(action="click", description="the login button")

User: "Fill the email field with admin@example.com"
→ wavexis_act(action="fill", description="the email field", text="admin@example.com")

User: "Find the submit button"
→ wavexis_find(description="the submit button")

Supported actions

ActionDescriptionParameters
clickClick an elementdescription
fillFill a fielddescription, text
typeType into a fielddescription, text
hoverHover over an elementdescription
scrollScroll the pagedescription (direction)
screenshotTake a screenshotdescription (area)

How it works

  1. LLM calls wavexis_act with a natural language description
  2. wavexis-mcp analyzes the page DOM
  3. Matches the description to the most likely element
  4. Executes the action
  5. Returns the result and element info

This eliminates the need for LLMs to know CSS selectors, making browser automation accessible through plain language.


7. Multi-Action Workflows

Chain multiple actions in a single tool call using YAML:

wavexis_multi(config="""
actions:
  - navigate: https://example.com/login
  - fill:
      selector: "#username"
      text: admin@example.com
  - fill:
      selector: "#password"
      text: changeme
  - click:
      selector: "#submit"
  - wait_for:
      selector: ".dashboard"
      timeout: 10000
  - screenshot:
      full_page: true
""")

Workflow tools

ToolDescription
wavexis_multiExecute a multi-action YAML config
wavexis_raw_cdpExecute a raw CDP method
wavexis_raw_bidiExecute a raw BiDi method
wavexis_browser_context_createCreate a new browser context
wavexis_browser_context_listList browser contexts
wavexis_browser_context_closeClose a browser context

8. Network Tools (tier: network)

ToolDescription
wavexis_headers_setSet request headers
wavexis_headers_getGet response headers
wavexis_user_agent_setSet custom user agent
wavexis_blockBlock requests by pattern
wavexis_throttleThrottle network speed
wavexis_cache_clearClear browser cache
wavexis_harCapture HAR file
wavexis_interceptIntercept requests
wavexis_mockMock a response
wavexis_modify_requestModify request headers/body
wavexis_modify_responseModify response body
wavexis_request_bodyGet response body for a request
wavexis_har_replayReplay a HAR file
wavexis_request_listList captured requests
wavexis_websocket_interceptIntercept WebSocket messages
wavexis_websocket_sendSend a WebSocket message
wavexis_network_conditionsSet network conditions
wavexis_extra_headersSet extra headers for all requests
wavexis_auth_challengeHandle HTTP auth challenges
wavexis_request_logGet request log

9. DevTools Tools (tier: devtools)

ToolDescription
wavexis_perf_metricsGet performance metrics
wavexis_perf_traceStart/stop CPU trace
wavexis_perf_profileStart/stop CPU profile
wavexis_perf_coverageGet JS code coverage
wavexis_perf_css_coverageGet CSS coverage
wavexis_perf_heap_snapshotTake heap snapshot
wavexis_css_get_stylesGet inline styles of element
wavexis_css_get_computedGet computed styles
wavexis_css_get_rulesGet CSS rules matching selector
wavexis_debug_breakSet a breakpoint
wavexis_debug_stepStep over/into/out
wavexis_debug_pausePause execution
wavexis_debug_resumeResume execution
wavexis_debug_scopesGet current scopes
wavexis_debug_callstackGet call stack
wavexis_overlay_highlightHighlight an element
wavexis_overlay_inspectInspect mode
wavexis_overlay_screenshotAnnotated screenshot with bounding boxes
wavexis_console_enableEnable console capture
wavexis_console_disableDisable console capture
wavexis_security_stateGet security state
wavexis_security_certGet certificate details
wavexis_window_boundsGet/set window bounds
wavexis_window_maximizeMaximize window
wavexis_window_minimizeMinimize window
wavexis_trace_startStart unified tracing
wavexis_trace_stopStop tracing and save
wavexis_trace_combinedCombined trace with screenshots
wavexis_annotate_screenshotScreenshot with annotations
wavexis_set_overlaySet overlay grid
wavexis_clear_overlayClear overlays

10. Data Tools (tier: data)

ToolDescription
wavexis_codegenGenerate code from browser actions
wavexis_lighthouseRun Lighthouse audit
wavexis_extractExtract structured data from page
wavexis_websocket_intercept_dataIntercept and capture WebSocket data
wavexis_crawlCrawl a website
wavexis_visual_diffCompare page with baseline
wavexis_cwvCore Web Vitals scoring with budgets

11. Testing Tools (tier: testing)

ToolDescription
wavexis_assertAssert a condition (pass/fail)
wavexis_assert_visibleAssert element is visible
wavexis_assert_textAssert element text content
wavexis_assert_urlAssert current URL
wavexis_assert_titleAssert page title
wavexis_locatorGenerate a robust locator for an element

12. Configuration Options

CLI flags

FlagDescriptionDefault
--capsCapability tiers (comma-separated)core
--transportTransport: stdio or httpstdio
--hostHTTP bind address127.0.0.1
--portHTTP port8765
--backendBackend: cdp or bidicdp
--headlessRun browser headlesstrue
--stealthEnable stealth modefalse
--rate-limitRequests per minute0 (disabled)
--allow-remoteAllow remote connections (HTTP)false
--browser-pathCustom browser executableAuto-detected
--timeoutDefault timeout (ms)30000
--max-sessionsMaximum concurrent sessions10
--log-levelLog level: debug, info, warn, errorinfo

Environment variables

VariableDescriptionDefault
WAVEXIS_MCP_CAPSCapability tierscore
WAVEXIS_MCP_TRANSPORTTransport typestdio
WAVEXIS_MCP_HOSTHTTP bind address127.0.0.1
WAVEXIS_MCP_PORTHTTP port8765
WAVEXIS_MCP_BACKENDBackend typecdp
WAVEXIS_MCP_HEADLESSHeadless modetrue
WAVEXIS_MCP_STEALTHStealth modefalse
WAVEXIS_MCP_RATE_LIMITRate limit0
WAVEXIS_MCP_MAX_SESSIONSMax sessions10

13. Error Handling

wavexis-mcp returns structured errors with actionable suggestions:

{
  "error": {
    "code": "SESSION_NOT_FOUND",
    "message": "Session abc123 not found",
    "suggestion": "Call wavexis_session_open to create a new session, or check wavexis_session_list for active sessions"
  }
}

Common error codes

CodeCauseFix
SESSION_NOT_FOUNDInvalid or expired session IDOpen a new session or list active ones
BROWSER_NOT_FOUNDNo Chrome/Edge installedInstall Chrome or set --browser-path
NAVIGATION_TIMEOUTPage took too long to loadIncrease --timeout or check network
ELEMENT_NOT_FOUNDSelector didn't matchUse wavexis_find with NL description
RATE_LIMIT_EXCEEDEDToo many requestsIncrease --rate-limit or reduce calls
CAPABILITY_NOT_ENABLEDTool tier not loadedAdd tier to --caps flag
SSRF_BLOCKEDURL blocked by SSRF protectionUse public URLs only
BACKEND_ERRORCDP/BiDi backend errorCheck browser process and driver

14. Security

SSRF protection

wavexis-mcp blocks requests to private IP ranges by default:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16
  • 127.0.0.0/8
  • 169.254.0.0/16
  • ::1/128

Rate limiting

wavexis-mcp --rate-limit 60

60 requests per minute per client. Excess requests return RATE_LIMIT_EXCEEDED.

Stealth mode

wavexis-mcp --stealth

Hides navigator.webdriver, fakes browser fingerprints. Useful for scraping protected sites.

Remote access

wavexis-mcp --transport http --host 0.0.0.0 --port 8765 --allow-remote

Warning: Only use --allow-remote behind a reverse proxy with authentication.


15. Docker

Pull and run

docker run -p 8765:8765 ghcr.io/mathiaspaulenko/wavexis-mcp:latest \
  --transport http --caps all

Docker Compose

version: "3.8"
services:
  wavexis-mcp:
    image: ghcr.io/mathiaspaulenko/wavexis-mcp:latest
    ports:
      - "8765:8765"
    command: --transport http --caps all --host 0.0.0.0
    environment:
      - WAVEXIS_MCP_RATE_LIMIT=60
    restart: unless-stopped

16. MCP Resources and Prompts

wavexis-mcp also exposes MCP resources and prompts beyond tools:

Resources

ResourceDescription
wavexis://browser/infoBrowser version and capabilities
wavexis://session/{id}/screenshotLatest screenshot for a session
wavexis://session/{id}/consoleConsole logs for a session
wavexis://session/{id}/networkNetwork log for a session

Prompts

PromptDescription
wavexis_scrape_pagePrompt template for scraping a page
wavexis_fill_formPrompt template for filling a form
wavexis_audit_performancePrompt template for performance audit
wavexis_test_pagePrompt template for testing a page

17. Best Practices

  • Start with core tier — 72 tools covers most use cases. Add tiers as needed to save tokens
  • Always close sessions — Call wavexis_session_close when done to avoid resource leaks
  • Use wavexis_act for forms — Natural language is more robust than selectors for form filling
  • Use multi-action YAML — Chain actions in a single call to reduce round trips
  • Enable stealth for scraping — --stealth hides automation indicators
  • Set rate limits — Prevent runaway LLM agents from making too many calls
  • Use HTTP transport for teams — Deploy in Docker with --transport http for shared access
  • Check wavexis_session_list — Debug stuck sessions by listing active ones
  • Use wavexis_find before wavexis_click — NL element finding is more reliable than guessing selectors
  • Leverage assertions for testing — wavexis_assert_* tools provide pass/fail results for CI

18. Common Pitfalls

PitfallCauseSolution
Too many tools loaded--caps all when only core neededUse specific tiers: --caps core,network
Session leakForgot to close sessionAlways call wavexis_session_close
Element not foundBrittle CSS selectorUse wavexis_act or wavexis_find with NL
Rate limit hitLLM making too many callsIncrease --rate-limit or optimize workflow
SSRF blockedTrying to access localhostUse public URLs or disable SSRF (not recommended)
Browser not foundNo Chrome installedInstall Chrome or set --browser-path
Token wasteAll 220 tools in contextUse minimal --caps for the task
Stale sessionSession expiredCheck wavexis_session_list, open new session
Capability not enabledTool from unloaded tierAdd the tier to --caps
HTTP transport exposed--allow-remote without proxyUse reverse proxy with auth

19. References

  • references/tool-catalog.md — Complete 220-tool catalog with parameters and return types
  • references/tier-selection.md — Detailed tier selection guide with use-case scenarios
  • references/ide-setup-guide.md — Step-by-step IDE configuration for Claude, Cursor, Windsurf, VS Code
  • assets/mcp-configs/claude-desktop.json — Claude Desktop config template
  • assets/mcp-configs/cursor.json — Cursor config template
  • assets/mcp-configs/windsurf.json — Windsurf config template
  • assets/mcp-configs/vscode.json — VS Code config template
  • assets/mcp-configs/http-remote.json — HTTP transport remote config template
  • Related skills: wave-ecosystem-guide, wavexis-cli-automation, wavexis-web-scraping, wavexis-performance-audit

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.