{"name":"io.github.MathiasPaulenko/wavexis-mcp","slug":"mathiaspaulenko-wavexis-mcp","title":"WaveXisMCP","description":"220 browser automation tools for Chrome, Edge, and Firefox via CDP + BiDi. 100% Python.","url":"https://mcp.market/server/mathiaspaulenko-wavexis-mcp","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"scraping","tags":["scraping"],"presence":{"score":28,"stars":2,"forks":1,"downloads_week":49,"last_push_at":"2026-08-29T10:23:20.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/MathiasPaulenko/wavexis-mcp","website":null,"version":"1.6.24","remotes":[],"packages":[{"registryType":"pypi","identifier":"wavexis-mcp","version":"1.6.24","runtimeHint":"uvx","transport":{"type":"stdio"}}],"tools":[{"name":"wavexis_a11y_ancestors","description":"Get the ancestor chain for a node.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_a11y_node","description":"Get a specific accessibility node by ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_a11y_snapshot","description":"Get the full accessibility tree as LLM-friendly text with element refs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_act","description":"Execute a natural language instruction on the current page (M1).","write_action":true,"price_micros":0,"input_schema":null},{"name":"wavexis_animation_list","description":"List all active animations on the page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_animation_pause","description":"Pause an animation by ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_animation_play","description":"Play/resume an animation by ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_animation_set_rate","description":"Set the playback rate of an animation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_annotated_screenshot","description":"Capture a screenshot with numbered labels overlaid on elements.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_axe_audit","description":"Run an axe-core accessibility audit on the current page (W9).","write_action":true,"price_micros":0,"input_schema":null},{"name":"wavexis_browser_logs","description":"Get browser-level log entries.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_cast_list","description":"List available cast sinks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_cast_start","description":"Start tab mirroring to a cast sink.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_cast_stop","description":"Stop active cast mirroring.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_console_messages","description":"Get console messages with pagination.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_cookies_clear","description":"Clear all cookies from the browser session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_cookies_delete","description":"Delete cookies matching a name and domain in the browser.","write_action":true,"price_micros":0,"input_schema":null},{"name":"wavexis_cookies_get","description":"Retrieve all cookies for the current page context.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_cookies_set","description":"Set a single cookie in the browser for the current page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_core_web_vitals","description":"Measure Core Web Vitals (LCP, CLS, INP) with ratings and score.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_crawl","description":"Crawl a website starting from a URL.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_css_get_computed","description":"Get computed styles for an element.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_css_get_rules","description":"Get CSS rules from a specific stylesheet.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_css_get_styles","description":"Get inline and matched CSS styles for an element.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_css_get_stylesheets","description":"List all stylesheets loaded by the page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_debug_get_listeners","description":"Get event listeners attached to an element.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_debug_pause","description":"Pause script execution.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_debug_remove_breakpoint","description":"Remove a breakpoint by ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"wavexis_debug_resume","description":"Resume script execution.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_debug_set_breakpoint","description":"Set a breakpoint by URL and line number.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_debug_set_breakpoint_function","description":"Set a breakpoint by function name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_debug_step_into","description":"Step into in the debugger.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_debug_step_out","description":"Step out in the debugger.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_debug_step_over","description":"Step over in the debugger.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_dom_focus","description":"Focus an element matching a CSS selector.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_dom_get","description":"Retrieve the HTML of an element matching a CSS selector.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_dom_get_attr","description":"Read an attribute value from an element matching a CSS selector.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_dom_query","description":"Query elements by CSS selector and return paginated metadata.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_dom_remove","description":"Remove an element matching a CSS selector from the DOM.","write_action":true,"price_micros":0,"input_schema":null},{"name":"wavexis_dom_remove_attr","description":"Remove an attribute from an element matching a CSS selector.","write_action":true,"price_micros":0,"input_schema":null},{"name":"wavexis_dom_scroll","description":"Scroll to an element or by a pixel offset.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_dom_set_attr","description":"Set an attribute on an element matching a CSS selector.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_dom_snapshot","description":"Capture a full DOM snapshot of the page including iframes and shadow roots.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_emulate_device","description":"Emulate a specific device (iphone-15, pixel-8, etc.).","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_extract","description":"Extract structured data from a page using a CSS selector schema.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_get_security_state","description":"Get the page security state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_get_window_bounds","description":"Get the browser window bounds.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_iframe_click","description":"Click an element inside an iframe.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_iframe_eval","description":"Evaluate a JavaScript expression inside an iframe.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_iframe_fill","description":"Fill an input element inside an iframe with a value.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_ignore_cert_errors","description":"Enable or disable certificate error ignoring.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_lighthouse","description":"Run a Lighthouse-style audit on a URL.","write_action":true,"price_micros":0,"input_schema":null},{"name":"wavexis_media_get_messages","description":"Get messages for a specific media player.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_media_get_players","description":"List all media players on the page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_media_player_pause","description":"Pause a media player by ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_media_player_play","description":"Play a media player by ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_media_player_seek","description":"Seek a media player to a specific time.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_overlay_clear","description":"Clear all overlay highlights.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_overlay_highlight","description":"Highlight an element with a colored overlay.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_page_pdf","description":"Generate a PDF via the low-level Page.printToPDF CDP method.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_page_snapshot","description":"Capture the page as MHTML or a plain text document.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_pdf","description":"Generate a PDF document from a web page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_perf_coverage","description":"Get JavaScript code coverage.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_perf_css_coverage","description":"Get CSS code coverage.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_perf_heap_snapshot","description":"Capture a heap snapshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_perf_metrics","description":"Get performance metrics (LCP, FCP, CLS, TTFB, DOMNodes, etc.).","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_perf_profile","description":"Capture a CPU profile.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_perf_trace","description":"Capture a performance trace.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_record","description":"Record browser interactions and generate a YAML workflow.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_scrape","description":"Scrape data from multiple URLs by evaluating a JS expression on each.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_screencast","description":"Capture a frame-by-frame screenshot sequence over a duration.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_screenshot","description":"Capture a screenshot of a web page or matched element.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_service_worker_emulate","description":"Emulate a service worker with a script URL.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_service_worker_list","description":"List registered service workers.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_service_worker_unregister","description":"Unregister a service worker.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_service_worker_update","description":"Trigger an update for a service worker registration.","write_action":true,"price_micros":0,"input_schema":null},{"name":"wavexis_set_cpu_throttle","description":"Enable CPU throttling at a given multiplier.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_set_dark_mode","description":"Enable or disable dark mode emulation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_set_geolocation","description":"Override the browser geolocation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_set_locale","description":"Override the browser locale.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_set_sensors","description":"Override sensor values (orientation, motion, light, proximity).","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_set_timezone","description":"Override the browser timezone.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_set_touch_emulation","description":"Enable or disable touch event emulation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_set_viewport","description":"Set a custom viewport size and scale factor.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_set_window_bounds","description":"Set the browser window bounds.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_shadow_click","description":"Click an element inside a shadow DOM tree.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_shadow_eval","description":"Evaluate a JavaScript expression inside a shadow DOM tree.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_shadow_fill","description":"Fill an input element inside a shadow DOM tree with a value.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_start_combined_trace","description":"Start a combined trace capturing screenshots, network, and console (W8).","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_stop_combined_trace","description":"Stop a combined trace and return collected data (W8).","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_subscribe_events","description":"Subscribe to real-time browser events (W10).","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_unsubscribe_events","description":"Unsubscribe from browser events by subscription ID (W10).","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_visual_diff","description":"Compare a screenshot against a baseline image.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_webaudio_capture","description":"Capture WebAudio context data.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_webaudio_stop_capture","description":"Stop WebAudio capture.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_webauthn_add_authenticator","description":"Add a virtual WebAuthn authenticator for testing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_webauthn_add_credential","description":"Add a credential to a virtual authenticator.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_webauthn_get_credential","description":"Get credentials from a virtual authenticator.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wavexis_webauthn_remove_credential","description":"Remove a virtual authenticator.","write_action":true,"price_micros":0,"input_schema":null},{"name":"wavexis_websocket_intercept","description":"Capture WebSocket frames on a page.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-09-24T17:26:01.631Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T17:26:01.583Z","components":{"code":{"score":20,"max":25,"notes":["40 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 26 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"wavexis_mcp-1.6.24/wavexis_mcp/act.py: … action, value) raw = await backend.eval(script, await_promise=False) # backe…"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"wavexis-mcp","version":"1.6.24","found":true,"weeklyDownloads":49,"license":"MIT","dependencyCount":21,"publishedAt":"2026-07-29T07:57:29.118012Z","repositoryUrl":"https://github.com/MathiasPaulenko/wavexis-mcp"}],"repo":{"found":true,"owner":"MathiasPaulenko","repo":"wavexis-mcp","archived":false,"pushedAt":"2026-08-29T10:23:20Z","stars":2,"forks":1,"openIssues":7,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/36444344?v=4","ownerCreatedAt":"2018-02-13T12:30:43Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/36444344?v=4&s=128","source":"github"},"presence":{"stars":2,"forks":1,"downloadsWeek":49,"license":"MIT","lastPushAt":"2026-08-29T10:23:20.000Z","score":28}}}},"grade_history":[],"reviews":[]}